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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言易错题集 第二部

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

C語(yǔ)言易錯(cuò)題集后續(xù)

  • 一、共用體相關(guān)(union)
  • 二、do,while相關(guān)
  • 三、char溢出相關(guān)
  • 四、printf()相關(guān)
  • 五、++相關(guān)
  • 六、 for語(yǔ)句相關(guān)
  • 七、calloc()相關(guān)
  • 八、define相關(guān)
  • 九、溢出相關(guān)
  • 十、指針常量,常量指針相關(guān)
  • 十一、多重指針相關(guān)
  • 十二、指針相關(guān)
  • 十三、abs()相關(guān)
  • 十四、全局?jǐn)?shù)組、局部數(shù)組賦值相關(guān)
  • 十五、double誤差相關(guān)

一、共用體相關(guān)(union)

問(wèn)題: 共同體變量所占的內(nèi)存長(zhǎng)度等于最長(zhǎng)的成員的長(zhǎng)度。請(qǐng)問(wèn)這句話的說(shuō)法是正確的嗎? 答案: 錯(cuò)誤 共同體類型的特點(diǎn) (1)同一共同體內(nèi)的成員共用一個(gè)存儲(chǔ)區(qū),存儲(chǔ)區(qū)的大小=成員占用字節(jié)長(zhǎng)度最大值。【需要考慮內(nèi)存對(duì)齊】對(duì)齊問(wèn)題:1.一般而言,共用體類型實(shí)際占用存儲(chǔ)空間為其最長(zhǎng)的成員所占的存儲(chǔ)空間; 2.若是該最長(zhǎng)的存儲(chǔ)空間對(duì)其他成員的元類型(如果是數(shù)組,取其類型的數(shù)據(jù)長(zhǎng)度,int a[5]4)不滿足整除關(guān)系,該最大空間自動(dòng)延伸; 延伸到可以整除為止 (2)在任一時(shí)刻,在一個(gè)共同體變量中,只有一個(gè)成員起作用。 (3)共同體類型中的成員類型可為任意已定義的數(shù)據(jù)類型。

二、do,while相關(guān)

執(zhí)行如下代碼, c 的值是:() int a=0,c=0; do{--c;a=a-1; }while(a>0); 答案 : -1 程序最開(kāi)始執(zhí)行--c,現(xiàn)在c變成了-1,接著執(zhí)行a=a-1,a也變成了-1,再執(zhí)行while語(yǔ)句,while(a>0,判斷為假,退出循環(huán),故c= -1要注意的是: 條件為真,繼續(xù)運(yùn)行。 do-while 語(yǔ)句的一般形式為 :do語(yǔ)句while( 表達(dá)式 ) ; 這個(gè)循環(huán)與 while 循環(huán)的不同在于 : 它先執(zhí)行循環(huán)中的語(yǔ)句 , 然后再判斷表達(dá)式是否為真 , 如果為真則繼續(xù)循環(huán);如果為假 , 則終止循環(huán)。因此 , do-while 循環(huán)至少要執(zhí)行一次 循環(huán)語(yǔ)句 。 使用while語(yǔ)句應(yīng)注意以下幾點(diǎn): 1while 語(yǔ)句中的表達(dá)式一般是關(guān)系表達(dá)或 邏輯表達(dá)式 ,只要表達(dá)式的值為真 (0) 即可繼續(xù)循環(huán)。 2 、循環(huán)體如包括有一個(gè)以上的語(yǔ)句,則必須用 {} 括起來(lái),組成復(fù)合語(yǔ)句。

三、char溢出相關(guān)

#include<stdio.h> int main(void) {char a=101;int sum=200;a+=27;sum+=a;printf("%d\n",sum);return 0; } 問(wèn)輸出什么 ? 答案: 72char類型的范圍是-128---+127,當(dāng)a+=27 ,之后a的值超出可表示范圍會(huì)變?yōu)?span id="ozvdkddzhkzd" class="token operator">-128.200-128=72 我個(gè)人關(guān)于位數(shù)溢出的問(wèn)題,習(xí)慣把它想象為一個(gè)輪回 如下圖

四、printf()相關(guān)

#include<stdio.h> int main() { int a=666,b=888;printf("%d\n",a,b);return 0; } 程序運(yùn)行后的輸出結(jié)果是( )。 A 錯(cuò)誤信息 B 666 C 888 D 666,888 答案 : B printf()函數(shù) 是 從右往左 入棧(計(jì)算表達(dá)式),輸出是從左往右 所以: 該題 printf函數(shù)參數(shù)的入棧順序是從右到左(888先入棧,接著666入棧)。 所以從棧里面讀取一個(gè)數(shù)據(jù)時(shí),只會(huì)讀取最后入棧的數(shù)據(jù),也即666.

五、++相關(guān)

有如下定義#define D 2 int x=5;floaty=3.83; char c=′D′; 則下面選項(xiàng)中錯(cuò)誤的是()。 A x++; B y++; C c++; D D++; 答案: D D是因?yàn)槲覀儾荒軐?duì)宏進(jìn)行取地址操作,而++操作是先從內(nèi)存取值到寄存器 然后寄存器加一后再寫入內(nèi)存中必然涉及如地址操作

六、 for語(yǔ)句相關(guān)

設(shè) m 和 n 都是 int 類型,那么以下 for 循環(huán)語(yǔ)句,___ for(m=0,n=-1;n=0;m++,n++)n++;A 循環(huán)體一次也不執(zhí)行 B 循環(huán)體執(zhí)行一次 C 是無(wú)限循環(huán) D 有限次循環(huán) E 循環(huán)結(jié)束判斷條件不合法 F 運(yùn)行出錯(cuò) 答案: A 上機(jī)測(cè)試,for循環(huán)的條件判斷語(yǔ)句中,如果使用賦值語(yǔ)句或常量值, 當(dāng)值為0時(shí),不執(zhí)行循環(huán)體, 當(dāng)值為非0時(shí),無(wú)限循環(huán)。所以,選A

當(dāng) n為0時(shí):

當(dāng) n為1時(shí):

當(dāng) n為-1時(shí):

當(dāng) n為-2時(shí):

可以看出,當(dāng)n值為非0時(shí),無(wú)限循環(huán)。

七、calloc()相關(guān)

有以下程序 #include<stdio.h> #include<stdlib.h> void fun( double *pl,double *p2,double *s) {s = ( double*) calloc ( 1,sizeof(double));*s = *pl + *(p2+1); } int main(void) {double a[2]={1.1,2.2};double b[2]={10.0,20.0};double *s=a;fun(a,b,s);printf("%5.2f\n",*s);return 0; } 程序的輸出結(jié)果是? 答案: 1.10編譯器編譯時(shí)給指針參數(shù)提供臨時(shí)副本 _p,使得_p=p。 如果函數(shù)體內(nèi)的程序修改了_p指向的內(nèi)容,就導(dǎo)致參數(shù)p指向的內(nèi)容也被做了相應(yīng)的修改,因?yàn)樗麄冎赶蛲粌?nèi)存空間。 在本例中,_p 申請(qǐng)了新的內(nèi)存,只是把_p 所指的內(nèi)存地址改變了,但是p 絲毫未變(即修改了p本身的值而不是_p指向的對(duì)象)

八、define相關(guān)

定義宏#define DECLARE(name, type) type name##_##type##_type, 則DECLARE(val, int)替換結(jié)果為()A int val_int_type B int val_int_int C int name_int_int D int name_int_name 答案 : A##是一種分隔連接方式,它的作用是先分隔,然后進(jìn)行強(qiáng)制連接 “name”和第一個(gè)“_”之間被分隔了, 所以預(yù)處理器會(huì)把name##_##type##_type解釋成4段:“name”、“_”、“type”以及“_type”, name和type會(huì)被替換,而_type不會(huì)被替換

九、溢出相關(guān)

下列代碼的運(yùn)行結(jié)果() short i=65537; int j=i+1; printf(“i=%d,j=%d\n”, i, j);A i=65537,j=65538 B i=1,j=2 C i=-1,j=0 D i=1,j=65538 答案: B short2個(gè)字節(jié) 范圍為 -32768~~32767 65537-32767=32770 按照循環(huán)要向后走32770下 即32770-32768=2 還有最后兩下 0 1 即向后移動(dòng)32770下后到1這個(gè)位置 所以i=1

十、指針常量,常量指針相關(guān)

下面3段程序代碼的效果一樣嗎? int b; (1)const int *a = &b; (2)int const *a = &b; (3)int *const a = &b;A (2)=(3) B (1)=(3) C (1)=(2) D 都不一樣 E 都一樣 答案 C const*的左邊,則指針指向的變量的值不可直接通過(guò)指針改變(可以通過(guò)其他途徑改變);*的右邊,則指針的指向不可變。簡(jiǎn)記為"左定值,右定向"。常量指針: 指針?biāo)赶虻臄?shù)不能改變 例: int const *b; 指針常量: 指針的指向是固定的 例: int *const b;

十一、多重指針相關(guān)

A WORLD,LO,SAYHI,EW B WORLD,LO,HI,NEW C NEW,LO,SAYHI,EW D WORLD,LO,HI,EW 答案: D 答案:D; 第一個(gè)printf:由于char***cpp,可以讀成cpp為一個(gè)指向char**類型的指針,并且初始化為cp, 而cp是一個(gè)指針數(shù)組,數(shù)組里面存儲(chǔ)的類型為char**,也就是cpp指向cp[0],故*cpp=cp[0]; 因此++cpp使得cpp指向cp[1],故*++cpp=cp[1];而cp[1]是一個(gè)指向c[2]的指針,因此*cp[1] = c[2], 故**++cpp=*cp[1]=c[2],故輸出WORLD;第二個(gè)printf:由優(yōu)先級(jí)可得知,單目運(yùn)算符高于算術(shù)運(yùn)算符;而*++是單目運(yùn)算符,+是算術(shù)運(yùn)算符, 又cpp本身是指向的cp[1],故++cpp使得cpp指向cp[2],故*++cpp則為cp[2],而此時(shí)的cp[2]是一個(gè)指向c[1]的地址, 故對(duì)指向c[1]的指針cp[2]進(jìn)行--,故使得cp[2]指向的是c[0],故*--*++cpp+3=*--cp[2]+3=c[0]+3, 而這里的c[0],其實(shí)存放的是指向HELLO字符串的指針故c[0]+3,使得該指針指向HELLO中的第二個(gè)L的位置,故輸入LO;第三個(gè)printf:由于cpp目前指向的是cp[2],而cpp[-2]是等于*(cpp-2),而在第二個(gè)printf時(shí)cpp指向cp[2], 則*(cpp-2) = cp[0](注:這里cpp-2后,cpp本身的指針地址沒(méi)有改變,因此在第四個(gè)printf中,cpp依舊是指向cp[2]), 又cp[0]是一個(gè)指向c[3]的指針,對(duì)cp[0]進(jìn)行*運(yùn)算,使得*cp[0]=c[3],故**(cpp-2)=*cpp[-2]=c[3], 同時(shí)c[3]是一個(gè)指向SAYHI的指針,故c[3]+3,使得指向H的位置,故輸出HI;第四個(gè)printf:在第三個(gè)printf并沒(méi)有改變cpp的地址,故cpp依舊是指向cp[2],又cpp[-1][-1]+1=*(*(cpp-1)-1)+1, 故cpp-1,則cpp指向cp[2],故*(cpp-1)=cp[1];此時(shí)的cp[1]是一個(gè)指針,指向c[2],故cp[1]-1是從指向c[2]的指針地址-1, 故是指向c[1],則*(*(cpp-1)-1)=*(cp[1]-1)=c[1],故cpp[-1][-1]+1=*(*(cpp-1)-1)+1=c[1]+1,此時(shí)的c[1]同樣是一個(gè)指針, 故c[1]+1是指向NEW中的E的位置,故輸出EW。 故答案是D。

十二、指針相關(guān)

有以下程序段: char *p, *q; p = (char *)malloc(sizeof(char) * 20); q = p; scanf(%s %s”, p, q); printf(%s %s\n”, p, q); 若從鍵盤輸入:abc def↙,則輸出結(jié)果是( ) A def def B abc def C abc d D d d 答案 : A p和q是指向同一地址,故答案肯定是輸出一樣的字符串,輸入字符串后,p q最開(kāi)始指向abc , 當(dāng)輸入def后,開(kāi)始的地址被覆蓋,一起指向def

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

math.h的abs返回值() A 不可能是負(fù)數(shù) B 不可能是正數(shù) C 都有可能 D 不可能是0 答案: Cc中的函數(shù)申明為 int abs(int num); 正常情況下, num為0或正數(shù)時(shí),函數(shù)返回num值; 當(dāng)num為負(fù)數(shù)且不是最小的負(fù)數(shù)時(shí)(不要問(wèn)我最小的int類型負(fù)數(shù)是多少), 函數(shù)返回num的對(duì)應(yīng)絕對(duì)值數(shù),即將內(nèi)存中該二進(jìn)制位的符號(hào)位取反,并把后面數(shù)值位取反加一; 當(dāng)num為最小的負(fù)數(shù)時(shí)(即0x80000000),由于正數(shù)里int類型32位表示不了這個(gè)數(shù)的絕對(duì)值,所以依然返回該負(fù)數(shù)。 這就是設(shè)計(jì)這個(gè)庫(kù)函數(shù)的時(shí)候?yàn)槭裁窗逊祷刂翟O(shè)置為int而不是unsigned的原因 ,當(dāng)然如果把返回值設(shè)置為unsigned是不是更加合理呢,這個(gè)也許有更好的解釋,期待...

十四、全局?jǐn)?shù)組、局部數(shù)組賦值相關(guān)

int a[10] = {2,3,5}, 請(qǐng)問(wèn)a[3]及a[3]之后的數(shù)值是什么?()A 不確定的數(shù)據(jù) B 5 C 0 D 0xffffffff 答案: C1、未初始化的全局?jǐn)?shù)組為02、未初始化的局部數(shù)組為隨機(jī)值; 3、初始化部分的全局?jǐn)?shù)組與局部數(shù)組,初始化部分為初始化值,未初始化部分都為0;(不管全集還是局部)

十五、double誤差相關(guān)

以下數(shù)字在表示為double8字節(jié)的雙精度浮點(diǎn)數(shù))時(shí)存在舍入誤差的有()。 A 2的平方根 B 1030次方 C 0.1 D 0.5 E 100 答案: A B CA. 2的平方根,本身就是無(wú)限小數(shù),因此肯定有舍入誤差 B. 1030次方,明顯超出了double的數(shù)據(jù)存儲(chǔ)范圍,故有舍入誤差 C. 0.1不能用2的負(fù)整數(shù)次方來(lái)表示,因此有誤差 D. 0.5 = 2^(-1),因此沒(méi)有誤差 E. 100的二進(jìn)制表示是:0110 0100,因此沒(méi)有誤差總結(jié):小數(shù)點(diǎn)后的位權(quán)應(yīng)該是2的負(fù)數(shù)次方才沒(méi)有誤差,其它的情況都有誤差

總結(jié)

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

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

主站蜘蛛池模板: 亚洲精品一二三四 | 男人的天堂伊人 | 91精产品一区观看 | 裸体美女免费视频网站 | 日韩欧美一区二区三区久久婷婷 | 免费一级网站 | 桃谷绘里香番号 | 97午夜| 日韩欧美中文字幕在线视频 | 国产精品久久久无码一区 | 婷婷免费视频 | 久久99精品国产.久久久久久 | 国产免费久久精品国产传媒 | 99色在线| 国精产品一区一区三区有限公司杨 | 第九色激情 | 久久久久久久久久福利 | japanese国产| 一二三四av | 九色九一 | 成人在线观看一区二区三区 | 麻豆短视频| 性欧美hd调教 | 99在线国产 | 成人av免费在线播放 | 亚洲精品入口 | 99久久九九 | 精品无码av一区二区三区不卡 | 亚洲AV乱码国产精品观看麻豆 | 黑人性生活视频 | 亚洲情涩| 久久激情五月 | 少妇人禽zoz0伦视频 | 青青伊人影院 | 欧美成人精品一区二区三区在线看 | 亚洲三级欧美 | 男男啪啪无遮挡 | 欧洲亚洲一区二区三区 | 本道久久 | 另类ts人妖一区二区三区 | 欧美一级射 | 麻豆一区在线 | 欧美日韩在线播放三区四区 | 成人黄色国产 | 台湾佬中文在线 | 美女av免费观看 | 超色视频 | 人人射av | 久久午夜夜伦鲁鲁片无码免费 | 婷婷综合网 | 欧美人与按摩师xxxx | 亚洲a视频 | 人人妻人人爽一区二区三区 | 亚洲综合图区 | 欧美日韩在线播放三区四区 | 青青草免费公开视频 | 精品一区二区国产 | 四虎影视永久免费观看 | 国产精品36p | 97干干干 | 午夜aa | 亚洲网址 | 国产片久久| 九色91在线| 午夜av在线| 欧美91av | 狠狠插av | 亚洲成人精品一区 | 亚洲狼人综合 | 亚洲精品一二三四 | 五月婷婷久久综合 | 禁断介护老人中文字幕 | 国产乱人乱偷精品视频a人人澡 | 国产精品久久久久永久免费看 | 五月激情婷婷在线 | av影院在线| 免费成人看视频 | 亚洲人体一区 | 国产精品视频第一页 | 骚av在线 | 欧美色图30p | 日韩欧美在线观看一区 | 国产主播福利在线 | 国产免费观看av | 亚洲美女网站 | 3d动漫精品啪啪一区二区下载 | 放几个免费的毛片出来看 | 日韩三区在线 | 在线电影一区二区 | 99精品视频在线免费观看 | 午夜国产福利在线观看 | 青青草超碰在线 | 爱爱的网站 | 日本a级片网站 | 私密spa按摩按到高潮 | 强行糟蹋人妻hd中文字幕 | 天天5g天天爽免费观看 | 国产欧美日本 | 在线观看黄网址 |