C錯題練習

2021-07-22 14:14:33 字數 2547 閱讀 7338

1、strlen()函式:求字串的長度,不包括「\0」

strlen()所做的僅僅是乙個計數器的工作,它從記憶體的某個位置(可以是字串的開頭,中間某個位置等)開始掃瞄,直到碰到第乙個字串結束符「\0」為止,然後返回計數器值(長度不包含'\0')。

原型:unsigned int strlen(char *s);

#include using namespace std;

int main()

,q[10]=;

printf("%d %d\n",strlen(p),strlen(q));

//由於p陣列中沒有字串結束符,長度不能確定,q陣列中字串長度為3,未賦值的預設是0

for(int i=0;i<10;++i) }

int main()

; f(p,5);

printf("strlen(p[1]) = %d\n",strlen(p[1]));

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

system("pause");

return 0;

}

輸出:

3、switch()語句

沒有滿足條件的情況時,執行default語句。

有滿足條件的情況,但是沒有加break,則後面的語句繼續執行。

int main()

k--;

} printf("%d\n",n);//輸出7

/* 第一次k=5,進入while,switch,不滿足執行break跳出switch語句,k--後,k=4.

第二次k=4,k>0,進入while,switch不滿足,break,k--,k=3.

第三次k=3,k>0,進入while,switch滿足n=n+k;n==3;k--,k=2;

第四次k=2,k>0,進入while,switch中case 2無break語句,接著執行後續語句,n=3+2=5,k--,k=1.

第五次k=1,k>0,進入while,switch中case 1滿足無break語句,n=5+1=6,n=6+1=7,k--,k=0.

第六次k=0,k>0不滿足,跳出while迴圈。

*/ system("pause");

return 0;

}

4、gets(),getchar()

gets():從標準輸入裝置讀取字串(多個字元)的函式,可以無限讀取,不會判斷上限,以回車結束讀取,所以要確保buffer的空間足夠大,以便不會發生溢位。

原型:char * gets(char * str);

功能:從stdio流中讀取字串,直至接收到換行符或eof時停止,並將讀取的結果存放在str指標指向的字元陣列中。換行符不作為讀取串中的內容,讀取的換行符被轉換為"\0"空字元,並由此來結束字串。

char s[100];  gets(s);

gets(s)函式與scanf("%s",s);相似,但不完全相同,使用scanf("%s",s)函式輸入字串時存在乙個問題,就是如果輸入了空格會認為字串結束,空格後的字元將作為下乙個輸入項處理,但gets()函式將接收輸入的整個字串直到遇到換行為止

也就是說:gets()函式讀取到\n(我們輸入的回車)於是停止讀取,但是它不會把\n包含到字串裡面去。然而,和它配合使用的puts()函式,卻在輸出字串的時候自動換行。

,相當於getc(stdin)。返回型別為int型,為使用者輸入的ascii碼或eof。

getchar()由巨集實現:#define getchar() getc(stdin). getchar有乙個int型的返回值。當程式呼叫getchar時,程式就等著使用者按鍵,使用者輸入的字元被存放在鍵盤緩衝區中,直到使用者按回車為止(回車字元也放在緩衝區中)。當使用者鍵入回車之後,getchar()才開始從stdio流中每次讀入乙個字元。如果使用者在按回車之前輸入了不止乙個字元,其他字元會保留在鍵盤快取區中,等待後續getchar()呼叫讀取。也就是說,後續的getchar()呼叫不會等待使用者按鍵,而直接讀取緩衝區中的字元,直到緩衝區中的字元讀完後,才等待使用者按鍵。

用法:可以利用getchar()函式讓程式除錯執行結束後等待程式設計師按下鍵盤後才返回編輯介面。在主函式結尾,return 0;之前加上getchar();當然也可加system("pause");可以產生同樣的效果(限windows)。

getch():與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待使用者按回車,只要使用者按乙個鍵,getch就立刻返回(非緩衝輸入函式),getch的返回值是使用者輸入字元的ascii碼,出錯返回-1. 常用於程式除錯中,在除錯時,在關鍵位置顯示有關的結果以待檢視,然後用getch函式暫停程式執行,當按任意鍵後程式繼續執行。

C C 練習錯題集

單選題 若int 佔 2 個位元組,char 佔 1 個位元組,float 佔4 個位元組,sizeof xc 大小是 struct stu class char xm 8 float cj xc sizeof xc 大小是 20 記憶體對齊規則 結構體的總大小為結構體最寬基本型別的整數倍 聯合體裡...

c 主項練習錯題分析 2 STL容器

下面哪幾種是 stl 容器型別 vector setmultivector multiset array 正確答案 a b d e c 11 stl中的容器 一 順序容器 vector 可變大小陣列 deque 雙端佇列 list 雙向鍊錶 forward list 單向鍊錶 array 固定大小陣...

c錯題整理

一 1.c 2.b d 3.a 4.c 5.d 6.c 7.c a 8.b 9.d 10.c 11.a 12.c b 13.a 14.d 15.a 16.a b 17.d b 18.b c 19.d 20.b 2.以下選項中正確的 c 語言常量是 a.2.46e 1.5 b.0382 c.123 d...