日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言易错题集 第四部

發(fā)布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言易错题集 第四部 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C語言易錯題集 第四部

  • 一、位操作相關(guān)
  • 二、switch()相關(guān)
  • 三、輸出相關(guān)
  • 四、實數(shù)相關(guān)
  • 五、指針&a相關(guān)
  • 六、指針訪問數(shù)組元素相關(guān)
  • 七、轉(zhuǎn)義字符相關(guān)
  • 八、類型提升問題
  • 九、是不是正確的浮點數(shù)相關(guān)
  • 十、define相關(guān)
  • 十一、隱式轉(zhuǎn)換相關(guān)
  • 十二、while相關(guān)
  • 十三、++相關(guān)
  • 十四、strlen()相關(guān)
  • 十五、宏定義相關(guān)

一、位操作相關(guān)

執(zhí)行"int x=1;int y=~x;"語句后,y的值為?A 1 B 0 C -1 D -2 答案: Dx = 00000001 ~x = 11111110,~x為負數(shù),負數(shù)在計算機中用補碼表示,所以符號位不變,取反加1 y = 100000010

二、switch()相關(guān)

若以下選項中的變量a,b,y均以正確定義并賦值,則語法正確的switch語句是? A switch(a*a+b*b) { defaultbreak;case 3 : y=a+b; break;case 2 : y=a-b; break; } B switch(a+b) { case 1case 3 : y=a+b;break;case 0case 4 : y=a-b;} C switch(a+9) { case a : y=a-b;case b : y=a+b; } D switch a*b { case 10 : y=a+b;default : y=a-b;} 答案 : ABC case a: a是變量 case b: b是變量

三、輸出相關(guān)

以下程序的輸出結(jié)果是( )。 main() { char x=040;printf("%o\n",x<<1); }A 100 B 80 C 64 D 32 答案: A 040 以零開頭 固是8進制為32 32<<1 左移1位 相當于擴大1倍 為 64 64轉(zhuǎn)化為8進制為 100

四、實數(shù)相關(guān)

以下選項中合法的實型常量是? A 0 B 3.13e-2.1 C .914 D 2.0*10 答案: C A選項為整型數(shù)據(jù)。B選項中e后面必須為整數(shù)。D選項是表達式,不是常量,所以選擇C。

五、指針&a相關(guān)

下面代碼會輸出什么() int main(int argc, char **argv) {int a[4] = {1, 2, 3, 4};int *ptr = (int *)(&a + 1);printf("%d", *(ptr - 1)); } A 1 B 2 C 3 D 4 答案: D 這邊主要考察的是數(shù)組指針和數(shù)組首地址的問題。 &a是數(shù)組指針,a是數(shù)組首地址。 而指針的+1,增加的是1個指針類型的長度。比如&a是數(shù)組指針,(&a + 1)增加的是1數(shù)組的長度。 所以題目中第四步的ptr指向的是a[4]的位置。 而(ptr - 1)減少的是1個數(shù)據(jù)元素的長度。第五步ptr指向的是a[3],頁就是4a 與 &a 的值是一樣的,但意思不一樣,a是數(shù)組首元素的首地址,也就是a[0]的首地址, &a是數(shù)組的首地址。 a+1是數(shù)組下一元素的首地址,即a[1]的首地址, 所以輸出2 &a+1是下一個數(shù)組的首地址,

六、指針訪問數(shù)組元素相關(guān)

char s[3][4]; 則下列對數(shù)組元素s[i][j]的各種引用形式中,正確的是哪些? A * (s+i)[j] B * (&s[0][0]+4 * i+j) C * ((s+i)+j) D * ( * (s+i)[j]) 答案: B&s[0][0]得到的是首元素的地址, &s[0][0]+4 * i得到的是i行首元素的地址 &s[0][0]+4 * i+j得到的是s[i][j]的地址&s[i][j] * (&s[0][0]+4 * i+j)得到的就是s[i][j]的值。這道題的另外一種寫法就是*(*(s+i)+j) A *(a+i)[j],錯誤的原因是(a+i)結(jié)束后下一步運算是(a+i)[j], 而不是*(a+i),正確寫法是(*(a+i))[j]

七、轉(zhuǎn)義字符相關(guān)

語句printf(“a\bre\’hi\’y\\\bou\n”);的輸出結(jié)果是()。A a\bre\’hi\'y\\\bou B a\bre\’hi\’y\bou C re’hi’you D abre’hi’y\bou 答案: C首先要明確該字符串中包含的轉(zhuǎn)義字符,”a \b re \’ hi \' y \\ \b ou \n”中的轉(zhuǎn)義字符共有6個,其中’\b’是退格符,輸出時將光標往左邊回退一個位置,‘\’’為單引號字符,’\\’為\字符,’\n’為回車換行符。所以顯示的結(jié)果為C。

八、類型提升問題

以下代碼執(zhí)行后,val的值是___:unsigned long val = 0; char a = 0x48; char b = 0x52; val = b << 8 | a;A 20992 B 21064 C 72 D 0 答案: B

九、是不是正確的浮點數(shù)相關(guān)

下面四個選項中,均是不合法的浮點數(shù)的選項是().160. 0.12 e3 123 2e4.2 .e5 -.18 123e4 0.0 -e3 .234 1e3 答案: B A e3沒有尾數(shù) 其他兩個都是浮點數(shù) B 123是整數(shù) 2e4.2 階碼不是整數(shù) .e5沒有尾數(shù) C 都是浮點數(shù) D -e3沒有尾數(shù) 其他都都是浮點數(shù)

十、define相關(guān)

以下程序的輸出結(jié)果是: #define M(x,y,z) x*y+z main() {int a=1, b=2, c=3;printf("%d\n",M(a+b,b+c,c+a)); } A 19 B 17 C 15 D 12 答案: D 分析:#define的邊際效應(yīng),直接展開,變成a+b*b+c+c+a=12

十一、隱式轉(zhuǎn)換相關(guān)

下列代碼的輸出結(jié)果是 int i = -1; unsigned j = 1; if (j > i)printf(" (j>i)成立\n"); elseprintf(" (j>i)不成立\n");if (i < j)printf(" (i<j)成立\n"); elseprintf(" (i<j)不成立\n"); A (j>i)成立,(i<j)成立 B (j>i)不成立,(i<j)成立 C (j>i)成立,(i<j)不成立 D (j>i)不成立,(i<j)不成立 答案: D int隱式的要轉(zhuǎn)換為unsigned int 1000 0001 反碼; 1111 1110 補碼:1111 1111 大于 j

十二、while相關(guān)

若有以下程序 #include<stdio.h> main( ) { int a=-2,b=0;while(a++) ++b;printf("%d,%d\n",a,b); } 則程序的輸出結(jié)果是?A 1,1 B 1,2 C 2,1 D 2,2 答案: B 第一次while判斷條件中a++,先用后加,-2不為0條件為真,執(zhí)行a的自加與++b操作, a的值變?yōu)?span id="ozvdkddzhkzd" class="token operator">-1,b的值變?yōu)?span id="ozvdkddzhkzd" class="token number">1。第二次while判斷后,a的值變?yōu)?span id="ozvdkddzhkzd" class="token number">0,b的值變?yōu)?span id="ozvdkddzhkzd" class="token number">2。 第三次while判斷條件為假,但是仍要執(zhí)行自加操作,即值為1,跳出循環(huán)。打印12

十三、++相關(guān)

int a=4,則對于表達式++(a++)的結(jié)果說法正確的是()A 結(jié)果為5 B 結(jié)果為6 C 結(jié)果為7 D 以上不都是 答案: D a++的結(jié)果是4,然后進行++4是不對的,++運算只是針對于變量的,不能對常量來進行++運算。

十四、strlen()相關(guān)

設(shè)語句定義char a[ 80 ]= " 0123\0789 "; ,則sizeof(a)strlen(a)的值分別為()。 A 809 B 807 C 805 D 806 答案: A 空格 0123、\0789 空格

十五、宏定義相關(guān)

#include<stdio.h> #define Mul(x,y) ++x*++y void main() { int a = 1; int b = 2; int c = 3;printf(%d”,Mul(a+b,b+c)); } 程序最后輸出什么?( ) A 14 B 24 C 48 D 18 答案:A Mul(a+b,b+c)經(jīng)過宏替換變成++a+b*++b+c,需要注意宏替換的原則,是不會憑空加括號的。 另外++優(yōu)先級大于*,因此會先++a 和++b,然后a=2,b=3進行a+b*b+c=2+3*3+3=14

總結(jié)

以上是生活随笔為你收集整理的C语言易错题集 第四部的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。