c c 筆試中程式設計題總結

2021-08-22 03:22:47 字數 4711 閱讀 7820

1.請實現字串右迴圈移位函式,比如:「abcdefghi」迴圈右移2位就是「hiabcdefg」.

函式原型:void rightloopmove(char *pstr, unsigned short steps)

函式引數說明: pstr: point to a 『\0』 terminated string  steps: the rotate shift numbers*/

解法一:常規解法(萬不得已時候考慮使用),直接採用指標移動

void _fun(char *pstr, unsigned short steps)

p++;

} strcpy(pstr, temp);

free(temp);

}int main()

cout << endl;

_fun(a, 2);

p = a;

while (*p != '\0')

cout << endl;

free(a);

return 0;

}

解法二:採用臨時空間來存放乙個值,先把最後乙個值存放其中,然後整體右移動  時間複雜度為o(n+m)

void rightloopmove(char *pstr, unsigned short steps)

pstr[0] = tmp;

steps--;

}}

2..功能:實現對乙個8 bit資料(unsigned char型別)的指定位(例如第n位)的置0或者置1操作,並保持其他位不變。

函式原型:

void bit_set(unsigned char *p_data, unsigned char position, bool flag)

函式引數說明: p_data 是指定的源資料,position是指定位(取值範圍1~8);flag表示是置0還是置1操作,true: 置1  flase:置0*/

思路:通過移動1,或等和與等取反(移動後的1)來實現位操作

void bit_set(unsigned char *p_data, unsigned char position, bool flag)

if (position < 1 || position >8){}*/

if (flag)//1

else //0

}

3.有乙個16位的整數,每4位為乙個數,寫函式求他們的和。

例如:整數1101010110110111,和 1101+0101+1011+0111 = 13+5+11+7=36*/

方法一:

int fun(unsigned short a)

; int y[4] = ;

int result = 0;

x[0] = 15; x[1] = 240; x[2] = 3840; x[3] = 61440;

for (int i = 0; i < 4; i++)

y[i] = x[i] & a;

y[1] >>= 4; y[2] >>= 8; y[3] >>= 12;

for (int i = 0; i < 4; i++)

result += y[i];

return result;

}int main()

方法二:

int sum(unsigned short value)

return sum;

}

4.給出unsigned char value, 判斷value中的二進位制1的個數,要求演算法效率盡可能高

方法一:

int main()

i--;//按照迴圈i多加一次,所以要減去一

for (; i >= 0; --i)

cout << endl;

for (int i = 0; i < 30; ++i)

if (a[i] == 1)

n++;

cout << "value中的二進位制1的個數 = " << n << endl;

}

方法二:

int main()

cout << count << endl;

return 0;

}

方法三:

int fun(int v)

return count;

}int main()

5、通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。

壓縮規則:

1、僅壓縮連續重複出現的字元。比如字串"abcbc"由於無連續重複字元,壓縮後的字串還是"abcbc"。

2、壓縮欄位的格式為"字元重複的次數+字元"。例如:字串"***yyyyyyz"壓縮後就成為"3x6yz"。

要求實現函式:

void stringzip(const char *pinputstr, long linputlen, char *poutputstr);

輸入pinputstr:  輸入字串linputlen:  輸入字串長度

輸出 poutputstr: 輸出字串,空間已經開闢好,與輸入字串等長;

注意:只需要完成該函式功能演算法,中間不需要有任何io的輸入輸出

示例輸入:「cccddecc」   輸出:「3c2de2c」

輸入:「adef」     輸出:「adef」

輸入:「pppppppp」 輸出:「8p」

#includevoid stringzip(const char *pinputstr, long linputlen, char *poutputstr)

else

while (!st.empty())

}count = 1;

*poutputstr++ = *p; //cout << *p;//

} *poutputstr = '\0';

p++; }}

int main()

; stringzip(str, n, output);

/*char *p = output;

while (p != null)

*/ for (int i = 0; i < 10; i++)

cout << output[i];

cout << endl;

return 0;

}

6、如果乙個字串str, 把字串str前面任意的部分挪到後面形成的字串叫做str的旋轉詞,比如str=」12345」,

str的旋轉詞有」12345」, 」23451」, 「34512」, 「45123」, 「51234」, 給定兩個字串a和b,請判斷a和b是否為旋轉詞。

int main()

t++;

} }if (count == (n - 1))

else

return 0;

}

7、給定乙個字元型別的陣列chas, 請在單詞間做逆序調整, 只要做到單詞順序逆序即可,對空格的位置沒有特別要求。

例如:如果把chas看作字串為「dog  loves  pig」, 調整為 「pig  loves  dog」

如果把chas看作字串為 「  i』 m  a  student .  」  調整為 「student.  a  i』m 」 

void reverse(char *str, int start, int end)

}void rotateword(char*str) }}

int main()

8.給定乙個字元陣列,判斷字元陣列中是否所有的字元都只出現過一次

根據兩個要求,分別實現兩個函式。在保證額外空間複雜度為o(1)的前提下,實現時間複雜頓盡量低的方法。

bool onecharacter(char* str) //char a = "awwbc";

++j;

} j = i+1;

++i;

++str;

} return true;

}int main()

9.給定乙個字串str, 返回str的最長無重複字元子串的長度;

例如:str=」abcd」 ,返回 4  str=」aabcb」, 最長無重複字元子串為「abc」, 返回3

int lengthoflongestsubstring(string s) 

else

}return ret;

}int main()

10.請編寫函式實現,找出乙個字元陣列中第乙個只出現一次的字元。

void judge(char *str)

; int sequence[256] = ;

for (i = 0; str[i] != '\0'; i++)

for (i = 0; i < 256; i++)

}} cout << "陣列下標為:" << pindu << endl;

cout << "第一次只出現一次的字元為: " << str[pindu] << endl;

}int main()

筆試 程式設計題

1.class a class b public a int main 2.int main 3.int func int a int main little endian int main char p char a 2 printf 0x x,0x x,0x x p 1 p,short p re...

網易實習筆試真題C C

剛做的時候根本就沒有想到解題思路,剛好看到了別人的思路,自己寫了一下。裡面對unordered map及vector二維陣列的建立很靈活,另外區別了一下map,unordered map,hash map 但是沒有弄清楚unordered map,hash map的區別。以後遇到了在細細研究。另乙個...

筆試刷題總結

今天刷了一些筆試題,以下是刷完筆試題後看到的相關知識點的解析,做個小結。1 多型主要以兩種形式,靜態多型和動態多型,靜態多型主要實現了函式過載和運算子過載。動態多型主要實現了虛函式。虛函式是動態聯編,程式在執行的過程中確定呼叫哪乙個函式。2 int s 8 定義乙個指標陣列,該陣列中每個元素是乙個指...