c++如何让字符串重复输出_2020.10.02错题总结之字符串相关函数
C/C++每日總結
點擊上方「嵌入式龍憨憨」,選擇「置頂/星標公眾號」第一時間查看編程筆記!
特別設置【每日總結】專欄:
對專業課--C/C++的復習刷題進行總結,歸納錯題知識點,記錄知識點掌握不足的部分,并進行相應的知識拓展,鞏固基礎,回顧知識,共同進步,加油!
1
錯題總結
1、以下程序運行后,如果從鍵盤上輸入:
book
book
則輸出結果是( )
#include #include void main(){ char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1); gets(s2); if (!strcmp(s1,s2)) printf("*"); else printf("#"); printf("%d\n",strlen(strcat(s1,s2))); }A、*8? ?B、#9???C、#6? ?D、*9
正確答案:B
答案解析:
第1個回車將字符串"book"賦值給a1,第二個回車將"book"賦值給a2;
因此strcmp(s1,s2)的結果不相等,返回非0值,if語句括號中的條件!strcmp(s1,s2)結果為假,執行else分支輸出“#”,strcat合并兩個字符串,然后strlen測試字符串長度并輸出兩個字符串合并到a1中的字符個數為9。
2
知識點解析
1、gets()函數
基本形式:gets(char*?)
從stdin流中讀取字符串,接收到換行符或EOF時停止,并將讀取的結果存放在buffer指針所指向的字符數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為‘\0’空字符,并由此來結束字符串。
所以題目中的gets()函數使得a1的值為"book",a2的值為"book";‘\0’空字符并不包含在內。
2、strcmp()函數
strcmp函數是string compare(字符串比較)的縮寫,用于比較兩個字符串并根據比較結果返回整數。
基本形式為strcmp(str1,str2)
當s1
當s1=s2時,返回值= 0;
當s1>s2時,返回正數。
即:兩個字符串自左向右逐個字符相比(按ASCII值大小相比較),直到出現不同的字符或遇'\0'為止。如:
1."A"
2."A"
3."Apple"
4."A"
5."compare"
明顯"book"book",所以題目中返回負數,非0;
特別注意:strcmp(const char *s1,const char * s2)這里面只能比較字符串,即可用于比較兩個字符串常量,或比較數組和字符串常量,不能比較數字等其他形式的參數。
ANSI標準規定,返回值為正數,負數,0。而確切數值是依賴不同的C實現的。
當兩個字符串不相等時,C標準沒有規定返回值會是1或-1,只規定了正數和負數。
有些會把兩個字符的ASCII碼之差作為比較結果由函數值返回。但無論如何不能以此條依據作為程序中的流程邏輯。
3、strcat()函數
基本形式:strcat(char *,const char *)
strcat函數是string catenate(字符串連接)的縮寫,作用:將第二個字符數組中的字符串連接到前面字符數組的字符串后面。
所以題目中合并的字符串為"bookbook"。
4、strlen()函數
基本形式:strlen(const char*)
strcat函數是string length(字符串長度)的縮寫,作用是測試字符串的實際長度,它求得方法是從開始到遇到第一個'\0',從首地址一直找下去,直到遇到'\0'停止。實際長度不包括‘\0’字符在內。
所以題目測試的是"bookbook"的長度,為9。
長按圖片關注
分享技術,碼字不易
轉發、在看就是我最大的動力
置頂/星標公眾號,和我一起學習吧
總結
以上是生活随笔為你收集整理的c++如何让字符串重复输出_2020.10.02错题总结之字符串相关函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用qq账号查询所绑定的手机号码_如何更
- 下一篇: matlab 创建批量文件夹_Matla