2022年《C語言程序設計》練習題_第1頁
2022年《C語言程序設計》練習題_第2頁
2022年《C語言程序設計》練習題_第3頁
2022年《C語言程序設計》練習題_第4頁
2022年《C語言程序設計》練習題_第5頁
已閱讀5頁,還剩63頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精品word名師歸納總結精品word名師歸納總結------------精選名師優秀名師----------精選名師優秀名師----------第1頁,共48頁----------《C程序設計》練習題一、單項挑選題導讀:單項挑選題要求從給出的四個備選答案中,選出一個最符合題意的答案;在完成習題的過程中,不但要選出正確的答案,而且要清晰不正確的選項錯在何處,以加深對概念的懂得;對于把握不準的問題,應當通過上機試驗來檢驗; (注:選用一般整型數據占用 2個字節的 c編譯器;如 TurboC2.0 、Win-TC、TurboC++3.0)【1.1】以下不正確的 C語言標識符是 ;A〕int B〕a_1_2 C〕ab1exe D〕_x【1.2】以下是正確的 C語言標識符是 ;A〕#define B〕_123 C〕%d D〕\n【1.3】以下四組字符串中都可以用作C語言程序標識符的一組是 ;...A〕print B〕iam C〕Pxq D〕str_l..._3d one_half My->book Cpp...oodbs tart$it line# pow...aBc 3pai His.age while【1.4】下面各選項組中,均是 C語言關鍵字的組是 ;A〕auto,enum,include B〕switch,continueC〕signed,union,scanf D〕if,struct,type【1.5】以下不屬于 C語言關鍵字的是 ;A〕default B〕register C〕enum D〕external【1.6】C語言程序從 main〔〕函數開頭執行,所以這個函數要寫在 ;A〕 程序文件的開頭 B〕程序文件的最終C〕 它所調用的函數的前面 D〕 程序文件的任何位置【1.7】以下關于 C語言的表達錯誤選項 大寫字母和小寫字母的意義相同不同類型的變量可以在一個表達式中在賦值表達式中等號 〔=〕左邊的變量和右邊的值可以是不同類型同一個運算符號在不同的場合可以有不同的含義【1.8】在C語言中,錯誤的 int類型〔長度為2字節〕的常數是 ;A〕32768 B〕0 C〕037 D〕0xAF【1.9】執行語句 printf〔"%x",-1〕;〔int 類型長度為 2字節〕屏幕顯示 ;A〕-1 B〕1 C〕-ffff D〕ffff【1.10】已知 longi=32768; 執行語句 printf〔"%d",i〕; 屏幕顯示 ;A〕-1 B〕-32768 C〕1 D〕32768【】已知 longi=65539;執行語句 printf〔"%d",i〕; 屏幕顯示 ;65539 B3 C3 D〕 程序不能執行【1.12】在C語言中,整數 -8在內存中的儲備形式是 ;精品word名師歸納總結------------A〕1111111111111000 B〕1000000000001000C〕0000000000001000 D〕1111111111110111【1.13】C語言中字符型 〔char〕數據在內存中的儲備形式是 ;原碼 B〕 補碼 C〕 反碼 D〕ASCII 碼【1.14】將字符g賦給字符變量 正確的表達式是 ;A〕c=\147 B〕c="\147" C〕c='\147' D〕c='0147'【1.15】以下轉義字符中錯誤的一個是 ;A〕'\000' B〕'\0014' C〕'\x111' D〕'\2'【1.16】將空格符賦給字符變量 正確的賦值語句是 ;A〕c='\0' B〕c=NULL C〕c=0 D〕c=32【1.17】已知:chara='\70'; 就變量a中;A〕 包含1個字符 B〕包含2個字符 C〕 包含3個字符 D〕 說明非法【1.18】字符串"\"EOF\n=-\61\"" 的長度是 ;A8 B9 C14 D〕 非法字符串【1.19】字符串""的長度是 ;A0 B1 C2 D〕 非法字符串【1.20】已知:chara;intb;floatc;doubled;執行語句"c=a+b+c+d;"后,變量 c的數據類型是 ;A〕int B〕char C〕float D〕double【1.21】溫度華氏和攝氏的關系是 :C值表達式是 ;A〕C=5/9〔F-32〕 B〕C=5*〔F-32〕/9

5〔F9

32〕;已知:floatC,F; 由華氏求攝氏的正確的賦CC=5/9*〔F-32〕 D〕 三個表達式都正確【1.22】逗號表達式"〔a=3*5,a*4〕,a+15" 的值是 ;A15 B60 C30 D〕 不確定【1.23】假如inta=1,b=2,c=3,d=4; 就條件表達式"a<b.a:c<d.c:d"的值是 ;A〕1 B〕2 C〕3 D〕4【1.24】為求出s=10.的值,就變量 s的類型應當為 ;Aint Bunsigned Clong D〕 以上三種類型均可【1.25】已知inti=10; 表達式"20-0<=i<=9"的值是 ;A〕0 B〕1 C〕19 D〕20【1.26】已知intx=1,y; 執行下述語句后變量 x的值是 ;y=++x>5&&++x<10;A〕1 B〕2 C〕3 D〕4【1.27】為判定字符變量 c的值不是數字也不是字母時,應采納下述表達式 ;A〕c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122B〕.〔c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122〕C〕c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122D〕.〔c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122〕【1.28】已知 inta[3][2]={3,2,1};就表達式"a[0][0]/a[0][1]/a[0][2]" 的值是 ;A0.166667 B1 C0 D〕 錯誤的表達式【1.29】已知 intx=1,y=1,z=1;表達式"x+++y+++z++" 的值是 ;A3 B4 C5 D〕 表達式錯誤精選名師優秀名師----------

第2頁,共48頁----------精品word名師歸納總結精品word名師歸納總結------------精選名師優秀名師----------精選名師優秀名師----------第8頁,共48頁----------【1.30】已知intx=5,y=5,z=5; 執行語句 x%=y+z;后,x的值是 ;A〕0 B〕1 C〕5 D〕6【1.31】使用語句 scanf〔"x=%f,y=%f",&x,&y〕;輸入變量 x、y的值(□代表空格),正確的輸入是 ;A〕1.25,2.4 B〕1.25□2.4 C〕x=1.25,y=2.4 D〕x=1.25□y=2.4【1.32】以下循環語句中有語法錯誤選項 ;A〕while〔x=y〕5; B〕while〔0〕;C〕do2;while〔x==b〕; D〕dox++while〔x==10〕;【1.33】已知intx=〔1,2,3,4〕; 變量x的值是 ;A〕1 B〕2 C〕3 D〕4【1.34】表達式sizeof〔double〕是;A〕 函數調用 B〕double型表達式 C〕int型表達式 D〕 非法表達式【1.35】已知:intx,y;doublez;就以下語句中錯誤的函數調用是 ;A〕scanf〔"%d,%lx,%le",&x,&y,&z〕;B〕scanf〔"%2d*%d%lf",&x,&y,&z〕;C〕scanf〔"%x%*d%o",&x,&y〕;D〕scanf〔"%x%o%6.2f",&x,&y,&z〕;【1.36】與條件表達式 "〔n〕.〔c++〕:〔c--〕" 中的表達式( n)等價的表達式是 ;A〕〔n==0〕 B〕〔n==1〕 C〕〔n.=0〕 D〕〔n.=1〕【1.37】已知inti=1,j=0; 執行下面語句后 j的值是 ;while〔i〕switch〔i〕{case1:i+=1;j++;break;case2:i+=2;j++;break;case3:i+=3;j++;break;default:i--;j++;break;}A1 B2 C3 D〕 死循環+3【1.38】求取滿意式 12+22+3正確的語句是 ;

2 2+ +n

≤1000的n,A〕for〔i=1,s=0;〔s=s+i*i〕<=1000;n=i++〕;B〕for〔i=1,s=0;〔s=s+i*i〕<=1000;n=++i〕;C〕for〔i=1,s=0;〔s=s+i*++i〕<=1000;n=i〕;D〕for〔i=1,s=0;〔s=s+i*i++〕<=1000;n=i〕;【1.39】下面的for語句;for〔x=0,y=10;〔y>0〕&&〔x<4〕;x++,y--〕;A〕是無限循環B〕循環次數不定C〕循環執行4次D〕循環執行3次【1.40】已知inti=1;執行語句while〔i++<4〕;后,變量i的值為;A〕3B〕4C〕5D〕6【1.41】已知intx=12,y=3; 執行下述程序后,變量x的值是 ;do{x/=y--;}while〔x>y〕;A1 B2 C3 D〕 程序運行有錯誤【1.42】已知chara[][20]={"Beijing","shanghai","tianjin","chongqing"};語句printf〔"%c",a[30]〕; 的輸出是 ;A〕<空格> B〕n C〕 不定 D〕數組定義有誤【1.43】如用數組名作為函數調用時的實參,就實際上傳遞給形參的是 ;A〕 數組首地址 B〕 數組的第一個元素值C〕 數組中全部元素的值 D〕 數組元素的個數【1.44】對二維數組的正確說明是 ;A〕inta[][]={1,2,3,4,5,6}; B〕inta[2][]={1,2,3,4,5,6};C〕inta[][3]={1,2,3,4,5,6}; D〕inta[2,3]={1,2,3,4,5,6};【1.45】對字符數組 s賦值,不合法的一個是 ;chars[]="Beijing";chars[20]={"beijing"};chars[20];s="Beijing";D〕chars[20]={'B','e','i','j','i','n','g'};【1.46】對字符數組 str賦初值,str不能作為字符串使用的一個是 ;charstr[]="shanghai";charstr[]={"shanghai"};C〕charstr[9]={'s','h','a','n','g','h','a','i'};D〕charstr[8]={'s','h','a','n','g','h','a','i'};【1.47】假如一個變量在整個程序運行期間都存在,但是僅在說明它的函數內是可見的,這個變量的儲備類型應當被說明為 ;A〕 靜態變量 B〕 動態變量 C〕 外部變量 D〕 內部變量【1.48】在一個 C源程序文件中,如要定義一個只答應在該源文件中全部函數使用的變量,就該變量需要使用的儲備類別是 ;A〕extern B〕register C〕auto D〕static【1.49】在C語言中,函數的數據類型是指 ;A〕 函數返回值的數據類型 B〕 函數形參的數據類型C〕 調用該函數時的實參的數據類型 D〕 任意指定的數據類型【1.50】已知如下定義的函數:fun1〔a〕{printf〔"\n%d",a〕;}就該函數的數據類型是 ;A〕 與參數a的類型相同 B〕void型C〕 沒有返回值 D〕 無法確定【1.51】定義一個函數實現交換 x和y的值,并將結果正確返回;能夠實現此功能的是 ;A〕swapa〔intx,inty〕 B〕swapb〔int*x,int*y〕{inttemp; {inttemp;temp=x;x=y;y=temp; temp=x;x=y;y=temp;} }C〕swapc〔int*x,int*y〕 D〕swapd〔int*x,int*y〕{inttemp; {int*temp;temp=*x;*x=*y;*y=temp; temp=x;x=y;y=temp;} }【1.52】求一個角的正弦函數值的平方;能夠實現此功能的函數是 ;sqofsina〔float x〕{return〔sin〔x〕*sin〔x〕〕;}doublesqofsinb〔floatx〕{return〔sin〔〔double〕x〕*sin〔〔double〕x〕〕;}doublesqofsinc〔x〕{return〔〔〔sin〔x〕*sin〔x〕〕;}sqofsind〔float x〕{return〔double〔sin〔x〕*sin〔x〕〕〕;【1.53】一個函數內有數據類型說明語句如下:doublex,y,z〔10〕;關于此語句的說明,下面說法正確選項 ;z是一個數組,它有 10個元素;z是一個函數,小括號內的 10是它的實參的值;z是一個變量,小括號內的 10是它的初值;語句中有錯誤;【1.54】已知函數定義如下:floatfun1〔intx,inty〕{floatz;z=〔float〕x/y;return〔z〕;}主調函數中有 inta=1,b=0; 可以正確調用此函數的語句是 ;A〕printf〔"%f",fun1〔a,b〕〕; B〕printf〔"%f",fun1〔&a,&b〕〕;C〕printf〔"%f",fun1〔*a*b〕〕; D〕 調用時發生錯誤【1.55】下面函數的功能是 ;voida〔chars1[],chars2[]〕{while〔*s2++=*s1++〕;}A〕 字符串比較 B〕 字符串復制 C〕 字符串連接 D〕字符串反向【1.56】在以下結論中,只有一個是錯誤的,它是 ;C語言答應函數的遞歸調用C語言中的 continue語句,可以通過轉變程序的結構而省略有些遞歸程序是不能用非遞歸算法實現的C語言中不答應在函數中再定義函數【1.57】說明語句"int〔*p〕〔〕;" 的含義是 ;p是一個指向一維數組的指針變量p是指針變量,指向一個整型數據p是一個指向函數的指針,該函數的返回值是一個整型以上都不對【1.58】設有說明 int〔*p〕[4]; 其中的標識符 p是;4個指向整型變量的指針變量指向4個整型變量的函數指針一個指向具有 4個整型元素的一維數組的指針具有4個指向整型變量的指針元素的一維指針數組【1.59】已知:chars[10], *p=s,就在以下語句中,錯誤的語句是 ;A〕p=s+5; B〕s=p+s; C〕s[2]=p[4]; D〕*p=s[0];【1.60】已知:chars[100];inti; 就引用數組元素的錯誤的形式是 ;A〕s[i+10] B〕*〔s+i〕 C〕*〔i+s〕 D〕*〔〔s++〕+i〕【1.61】已知:chars[6], *ps=s;就正確的賦值語句是 ;A〕s="12345"; B〕*s="12345"; C〕ps="12345"; D〕*ps="12345";【1.62】已知:inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int〔*ptr〕[3]=a,*p=a[0];就以下能夠正確表示數組元素 a[1][2]的表達式是 ;A〕*〔*〔a+1〕+2〕 B〕*〔*〔p+5〕〕 C〕〔*ptr+1〕+2 D〕*〔〔ptr+1〕[2]〕【1.63】已知:inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a; 就值為3的表達式是 ;A〕p+=2,*〔p++〕B〕p+=2,*++pC〕p+=2,〔*p〕++ D〕p+=2,++*p【1.64】已知:inta[]={1,2,3,4},y, *p=a; 就執行語句 y=〔*++p〕--;之后,數組a各元素的值變為 ;A〕0,1,3,4B〕1,1,3,4C〕1,2,2,4D〕1,2,3,3變量y的值是 ;A〕1 B〕2C〕3 D〕4【1.65】已知:inta[]={1,3,5,7},y,*p=a;為使變量y的值為3,以下語句正確選項 ;A〕y=++*p++;B〕y=++〔*p++〕; C〕y=〔++*p〕++;D〕y=〔*++p〕++;【1.66】已知:intx[]={1,3,5,7,9,11},*ptr=x;就能夠正確引用數組元素的語句是;A〕x B〕*〔ptr--〕 C〕x[6] D〕*〔--ptr〕【1.67】函數的功能是交換變量 x和y中的值,且通過正確調用返回交換的結果;能正確執行此功能的函數是 ;A〕voidfuna〔int*x, int*y〕 B〕void funb〔intx, inty〕{int*p; {intt;p=x;*x=*y;*y=*p; t=x;x=y;y=t;} }C〕void func〔int*x, int*y〕 D〕voidfunc〔int*x, int*y〕{*x=*y;*y=*x; {*x=*x+*y;*y=*x-*y;*x=*x-*y;} }【1.68】有定義如下:structsk{inta;floatb;}data,*p;假如 p=&data; 就對于結構變量 data的成員a的正確引用是 ;A〕(*).data.a B〕〔*p〕.a C〕p->data.a D〕p.data.a【1.69】已知:structst{intn;structst*next;};staticstructsta[3]={1,&a[1],3,&a[2],5,&a[0]},*p;假如下述語句的顯示是 2,就對p的賦值是 ;printf〔"%d",++〔p->next->n〕〕;A〕p=&a[0]; B〕p=&a[1]; C〕p=&a[2]; D〕p=&a[3];【1.70】已知:structperson{charname[10];intage;}class[10]={"LiMing",29,"ZhangHong",21,"WangFang",22};下述表達式中,值為 72的一個是 ;class[0]->age+class[1]->age+class[2]->ageclass[1].name[5]person[1].name[5]clase->name[5]【1.71】已知:struct{inti;charc;floata;}test;就的值是 ;A〕4 B〕5 C〕6 D〕7【1.72】已知:union{inti;charc;floata;}test;就的值是 ;A〕4 B〕5 C〕6 D〕7【1.73】已知:unionu_type{inti;charch;floata;}temp;現在執行"temp.i=266;printf〔"%d",temp.ch〕" 的結果是 ;A〕266 B〕256 C〕10 D〕1【1.74】如有以下程序段:精品word名師歸納總結------------structdent{intn;int*m;};inta=1,b=2,c=3;structdents[3]={{101,&a},{102,&b},{103,&c}};structdent*p=s;就以下表達式中值為 2的是 ;A〕〔p++〕->m B〕*〔p++〕->m C〕〔*p〕.m D〕*〔++p〕->m【1.75】如有以下說明語句,就對結構變量 pup中sex域的正確引用是 ;structpupil{charname[20];intsex;}pup,*p;p=&pup;A〕p.pup.sex B〕p->pup.sex C〕〔*p〕.pup.sex D〕〔*p〕.sex【1.76】以下對結構變量 stul中成員age的非法引用是 ;structstudent{intage;intnum;}stu1,*p;p=&stu1;A〕stu1.age B〕student.age C〕p->age D〕〔*p〕.age【1.77】如有以下定義和語句:uniondata{inti;charc;floatf;}a;intn;就以下語句正確選項 ;A〕a=5; B〕a={2,'a',1.2}; C〕printf〔"%d\n",a.i〕; D〕n=a;【1.78】已知 enumweek{sun,mon,tue,wed,thu,fri,sat}day; 就正確的賦值語句是 ;A〕sun=0; B〕san=day;C〕sun=mon; D〕day=sun;【1.79】已知 enumcolor{red, yellow=2,blue,white,black}ren; 執行下述語句的輸出結果是 ;printf〔"%d",ren=white〕;A〕0 B〕1 C〕3 D〕4【1.80】下述關于枚舉類型名的定義中,正確選項 ;A〕enema={one,two,three}; B〕enema{one=9,two=-1,three};C〕enema={"one","two","three"}; D〕enema{"one","two","three"};【1.81】已知宏定義#defineN3#defineY〔n〕 〔〔N+1〕*n〕執行語句 z=2*〔N+Y〔5+1〕〕; 后,變量 z的值是 ;A〕42 B〕48 C〕52 D〕 出錯精選名師優秀名師----------

第8頁,共48頁----------精品word名師歸納總結精品word名師歸納總結------------精選名師優秀名師----------精選名師優秀名師----------第47頁,共48頁----------【1.82】已知宏定義 #defineSQ〔x〕 x*x, 執行語句 printf〔"%d", 10/SQ〔3〕〕; 后的輸出結果是 ;A〕1 B〕3 C〕9 D〕10【1.83】已知宏定義如下:#definePRprintf#defineNL"\n"#defineD"%d"#defineD1DNL如程序中的語句是 PR〔D1,a〕; 經預處理后綻開為 ;A〕printf〔%d\n,a〕; B〕printf〔"%d\n",a〕;Cprintf〔"%d""\n",a〕; D〕 原語句錯誤【單項挑選題參考答案 】【1.1】答案:A注釋:int是C語言的關鍵字【1.2】答案:B【1.3】答案:A【1.4】答案:B注釋:include是預處理命令 ;scanf是函數名;type不是C語言的關鍵字;【1.5】答案:D【1.6】答案:D【1.7】答案:A【1.8】答案:A注釋:int型表示整數的范疇是 -32768~32767;【1.9】答案:D注釋:整型常量 1在運算機中表示為補碼 1111

用十六進制顯示這個數時,最左邊的1不會被說明為符號位,而是與右邊其它位共同轉換為十六進制數;【1.10】答案:B注釋:長整型數 32768在運算機內的表示是 1000000000000000,以一般整型進行輸出時,此數恰是-32768的補碼;【1.11】答案:C注釋:長整型數 65539在運算機內的表示是 00010000000000000011,以一般整型進行輸出時,僅將右側 16位二進制數轉換為十進制數;【1.12】答案:A注釋:C語言中,int型的負數是采納補碼表示的;【1.13】答案:D【1.14】答案:C注釋:變量 c是字符型,可用字符常量為它賦值;字符常量必需用單引號括起來,所以 B是錯誤的;在單引號或雙引號內的反斜線 '\'用于表示轉義字符, A選項在無引號時使用反斜線是錯誤的;C選項單引號內顯現反斜線表示它與后面的數字組成一個轉義字符 ;單引號只答應括起一個字符,D選項在單引號內顯現 4個字符,是錯誤的;【1.15】答案:C【1.16】答案:D注釋:空字符和空格符是不同的兩個字符, 空格符的ASCII 碼值是空字符的 ASCII 值是;【1.17】答案:A【1.18】答案:B【1.19】答案:A【1.20】答案:C【1.21】答案:B注釋:單純從 C語言語法來說,選項 B、C都是正確的,但是選項 C中第一個運算的兩個對象都是整型常數,其結果也是整型數 0,最終的運算結果也就是 0了;【1.22】答案:C【1.23】答案:A注釋:將條件表達式增加一個括號,此式變為 a<b.a:〔c<d.c:d〕,它的運算次序就清晰了;由于條件運算符的結合性是從右向左,所以括號可以省略;它的運算次序是先算出右邊的條件表達式"c<d.c:d"的值,然后求條件表達式 a<b.a:3的值;【1.24】答案:C【1.25】答案:B【1.26】答案:B注釋:當通過一個運算對象即可打算規律運算 &&的結果時,就對另一個運算對象不做處理;【1.27】答案:D【1.28】答案:B注釋:數組元素在內存中按行排列,此數組的前 3個元素的值分別是 、、1,表達式中雖然數組下標的寫法好像每行有 3個元素,和定義時的 3行2列不一樣,但是 C語言引用數組元素時是依據數組的首地址和給出的下標進行運算打算元素的地址;題中表達式引用了數組前 3個元素;【1.29】答案:A【1.30】答案:C【1.31】答案:C【1.32】答案:D【1.33】答案:D【1.34】答案:C【1.35】答案:D【1.36】答案:C注釋:在C語言中, 常常用一個變量來作為規律表達式,其含義就是:當變量的值不為 0時關系成立;【1.37】答案:D注釋:break語句僅可跳出 switch語句,不會跳出 while循環,這是一個死循環;【1.38】答案:A【1.39】答案:C【1.40】答案:C【1.41】答案:D注釋:當除數 y為0時,程序發生溢出錯誤;【1.42】答案:C【1.43】答案:A【1.44】答案:C【1.45】答案:C注釋:答案 C的賦值號左側是數組 s的首地址,是一個常量,賦值號右側是一個字符串常量,不行能將一個字符串常量賦給一個地址常量;【1.46】答案:D注釋:D選項缺少字符串終止標志;【1.47】答案:A【1.48】答案:D注釋:這里第一要明確一些基本概念;在 C語言中,程序與文件是不同的概念,一個程序可以由一個文件組成,也可以由多個文件組成 ;一個文件中又可以包含多個函數 ;函數是構成 C程序的基本單位;變量的作用域因變量的儲備類型不同而不同; auto和register類型的變量的作用域是說明變量的當前函數;外部變量的作用域是整個程序, 即外部變量的作用域可以跨過多個文件 ;內部靜態變量(定義在一個函數內部的 static型的變量)的作用域是當前函數,外部靜態變量(定義在函數外面的static型的變量)的作用域是當前文件,即可以跨過同一文件中的不同函數;【1.49】答案:A【1.50】答案:A注釋:它和參數 a一樣,數據類型說明被省略,依據 C語言的規定,在這種情形下,表示它們是int型;【1.51】答案:C注釋函數swapa是值傳遞,函數的執行結果不能返回 ;函數swapb中變量temp不是指針變量,所以它不能接受地址量,用指針變量 x為它賦值是不對的 ;函數swap中雖然指針變量交換了地址,即它們的指向的目標變量進行了交換,但是目標變量并沒有行值的交換;【1.52】答案:B【1.53】答案:D【1.54】答案:D注釋:主調函數中 b=0,在執行fun1函數里的除法時發生溢出錯誤;【1.55】答案:B【1.56】答案:C【1.57】答案:C注釋:要留意與說明語句 "int〔*p〕[];" 的區分;說明語句 "int〔*p〕[];" 說明的是一個指向數組的指針;【1.58】答案:C注釋:題干中由于 *和p被小括號括起,所以 p應被說明為一個指針,而后的下標運算符 []說明所指向的對象是一個有 4個int型元素的一維數組 ;假如是int〔*p〕〔〕, 就是指向函數的指針;對于int*p[4], 就依據運算符的優先級, 先考慮p和[]運算符的關系,所以它就是一個指針數組了;【1.59】答案:B注釋:選項 B有兩處錯誤,一是數組名是常量,不能顯現的賦值好的左側,二是指針變量只能和整數做加,不能和作為地址常量的數組名相加;【1.60】答案:D注釋:s作為數組名是地址常量,而 s++是C語言不答應對常量進行賦值;【1.61】答案:C【1.62】答案:A注釋:p是一個一級指針,選項 B中對它進行了兩次 *運算是錯誤的; ptr是一個指向一維數組的指針,它所指向的數組有三個元素,對于這樣一個指針,對它進行兩次 **運算才能取出地址單元中所存的數據, C選項中*ptr表示數組第一行的首地址,該地址是一維數組的地址, +3表示加上三個它所指向的數據類型的長度, 所以〔*ptr+1〕+2 是數組中數值 4的地址;依據以上分析,選項D對ptr進行了兩次地址操作 (*和]所以結果應是數據, 但是它加 1后指向數組其次行,依據后面[]中2它的地址增加兩個一維數組的長度,就指向數組的最終一行,再做 *運算就是數即a[3][0];【1.63】答案:A【1.64】答案:BB【1.65】答案:D【1.66】答案:B【1.67】答案:D注釋:答案D是另一種交換兩個變量值的算法;【1.68】答案:B【1.69】答案:C注釋:使用 C對p進行賦值,就 p->next是a[0]的地址,引用其成員 n再做前增 1運算,結果就是;【1.70】答案:B【1.71】答案:D【1.72】答案:A【1.73】答案:C注釋:聯合變量temp的成員是占用同一儲備單元,它的長度是4個字節;266的二進制表示是100001010,存放在儲備單元的低端兩個字節,如下圖:高字節00000001低字節00001010引用temp.ch進行輸出,只取最低的第一個字節;【1.74】答案:D注釋:由于結構指針指向了結構數組的0號元素,所以表達式〔p++〕->m的含義是先取出m(變a的地址,然后指針p1*〔p++〕->m的含義是先取出m的內容(變量a的值然后指針p再加;表達式〔*p〕.m的含義是取出變量a的地址;表達式*〔++p〕->m的含義是先將指針p,然后再取m的內容(變量b的值;【1.75】答案:D【1.76】答案:B【1.77】答案:C【1.78】答案:D【1.79】答案:D【1.80】答案:B【1.81】答案:B注釋:語句 z=2*〔N+Y〔5+1〕 引用了兩個宏定義; C語言是區分字母大小的,其次個宏定義中的 N直接用3替換,用 5+1替換就有z=2*〔3+〔3+1〕*5+1〕; 結果是48;留意對于帶參數的宏亦是直接的文本替換,此例中 n用5+1去替換,結果是( N+1)*5+1,而不是〔N+1〕*〔5+1〕;【1.82】答案:C注釋:宏替換后的結果是printf〔"%d",10/3*3〕;【1.83】答案:C二、閱讀程序題導讀:學會閱讀程序對于初學者來說很重要,一方面可以鞏固所學的語法學問,另一方面通過閱讀別人寫好的程序來打開自己的思路,就所謂見多識廣;讀者通過閱讀懂得程序,從給出的四個備選參考答案中,挑選程序的正確輸出;假如挑選有誤,就要仔細分析緣由,是概念方面的錯誤仍是對程序規律懂得不對,從而加深對語法規章的懂得,提高程序設計才能;程序設計語言是開發程序的一個工具,學習語言的目的是為了編寫程序來解決實際問題,所以特殊提倡通過實際上機來檢驗備選答案,增強動手才能;【2.1】以下程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{floata;a=1/100000000;printf〔"%g",a〕;}A〕0.00000e+00 B〕0.0 C〕1.00000e-07 D〕0【2.2】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{intx=10;{intx=20;printf〔"%d,", x〕;}printf〔"%d\n", x〕;}A〕10,20 B〕20,10 C〕10,10 D〕20,20【2.3】以下程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{unsignedintn;inti=-521;n=i;printf〔"n=%u\n",n〕;}A〕n=-521 B〕n=521 C〕n=65015 D〕n=102170103【2.4】以下程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{intx=10, y=10; printf〔"%d%d\n", x――, ――y〕;}A〕1010 B〕99 C〕910 D〕109【2.5】以下程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{intn=1;printf〔"%d%d%d\n",n,n++,n--〕;}A〕111 B〕101 C〕110 D〕121【2.6】以下程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inta=1;charc='a';floatf=2.0;printf〔"%d\n",〔.〔a==0〕,f.=0&&c=='A'〕〕;}A〕0 B〕1【2.7】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{chars[12]="abook";printf〔"%.4s",s〕;}Aabook. Babook.<四個空格》Cabo D〕 格式描述錯誤,輸出不確定【2.8】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inta,b;scanf〔"%2d%3d",&a,&b〕;printf〔"a=%db=%d\n",a,b〕;}Aa=12b=34 Ba=123b=45 Ca=12b=345 D〕 語句有錯誤【2.9】以下程序段的輸出結果是 ;inta=10,b=50,c=30;if〔a>b〕a=b;b=c;c=a;printf〔"a=%db=%dc=%d\n",a,b,c〕;A〕a=10b=50c=10 B〕a=10b=30c=10C〕a=50b=30c=10 D〕a=50b=30c=50【2.10】以下程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inta=0,b=1,c=0,d=20;if〔a〕d=d-10;elseif〔.b〕if〔.c〕d=15;elsed=25;printf〔"d=%d\n",d〕;}A〕d=10 B〕d=15 C〕d=20 D〕d=25【】下面程序的輸出結果為 ;#include<stdio.h>voidmain〔〕{inta=1,b=0;switch〔a〕{case1:switch〔b〕{case0:printf〔"**0**"〕; break;case1:printf〔"**1**"〕; break;}case2:printf〔"**2**"〕; break;}}A**0** B**0****2** C**0****1****2** D〕 有語法錯誤【2.12】以下程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for〔k=0;s[k];k++〕switch〔s[k]〕{case'1':v1++;case'3':v3++;case'2':v2++;default:v4++;}printf〔"v1=%d, v2=%d, v3=%d, v4=%d\n",v1,v2,v3,v4〕;}A〕v1=4,v2=2,v3=1,v4=1 B〕v1=4,v2=9,v3=3,v4=1C〕v1=5,v2=8,v3=6,v4=1 D〕v1=4,v2=7,v3=5,v4=8【2.13】下面程序的輸出是 ;#include<stdio.h>voidmain〔〕{intx=1,y=0,a=0,b=0;switch〔x〕{case1:switch〔y〕{case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf〔"a=%d,b=%d\n",a,b〕;}A〕a=2,b=1 B〕a=1,b=1 C〕a=1,b=0 D〕a=2,b=2【2.14】下面程序的輸出是 ;#include<stdio.h>voidmain〔〕{intnum=0;while〔num<=2〕{num++;printf〔"%d",num〕;}}A〕1 B〕1234 C〕123 D〕12【2.15】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inta=1,b=0;do{switch〔a〕{case1:b=1;break;case2:b=2;break;default:b=0;}b=a+b;}while〔.b〕;printf〔"a=%d,b=%d",a,b〕;}A〕1,2 B〕2,1 C〕1,1 D〕2,2【2.16】從鍵盤上輸入 "446755"時,下面程序的輸出是 ;#include<stdio.h>voidmain〔〕{intc;while〔〔c=getchar〔〕〕.='\n'〕switch〔c-'2'〕{case0:case1:putchar〔c+4〕;case2:putchar〔c+4〕;break;case3:putchar〔c+3〕;default:putchar〔c+2〕;break;}printf〔"\n"〕;}A〕888988 B〕668966 C〕88898787 D〕66898787【2.17】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{intk=0;charc='A';do{switch〔c++〕{case'A':k++;break;case'B':k--;case'C':k+=2;break;case'D':k=k%2;contiue;case'E':k=k+10;break;default:k=k/3;}k++;}while〔c<'C'〕;printf〔"k=%d\n",k〕;}A〕k=1 B〕k=2 C〕k=3 D〕k=4【2.18】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{intx,i;for〔i=1;i<=100;i++〕{x=i;if〔++x%2==0〕if〔++x%3==0〕if〔++x%7==0〕printf〔"%d",x〕;}}A〕3981 B〕4284 C〕2668 D〕2870【2.19】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inti,k,a[10],p[3];k=5;for〔i=0;i<10;i++〕a[i]=i;for〔i=0;i<3;i++〕p[i]=a[i*〔i+1〕];for〔i=0;i<3;i++〕k+=p[i]*2;printf〔"%d\n",k〕;}A〕20 B〕21 C〕22 D〕23【2.20】假定從鍵盤上輸入 "3.6,2.4<回車>", 下面程序的輸出是 ;#include<math.h>#include<stdio.h>voidmain〔〕{floatx,y,z;scanf〔"%f,%f",&x,&y〕;z=x/y;while〔1〕{if〔fabs〔z〕>1.0〕{x=y;y=z;z=x/y;}elsebreak;}printf〔"%f\n",y〕;}A〕1.500000 B〕1.600000 C〕2.000000 D〕2.400000【2.21】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inti,j,x=0;for〔i=0;i<2;i++〕{x++;for〔j=0;j<-3;j++〕{if〔j%2〕continue;x++;}x++;}printf〔"x=%d\n",x〕;}A〕x=4 B〕x=8 C〕x=6 D〕x=12【2.22】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inti,j,k=10;for〔i=0;i<2;i++〕{k++;{intk=0;for〔j=0;j<=3;j++〕{if〔j%2〕continue;k++;}}k++;}printf〔"k=%d\n",k〕;}A〕k=4 B〕k=8 C〕k=14 D〕k=18【2.23】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{intn[3][3], i, j;for〔i=0;i<3;i++〕for〔j=0;j<3;j++〕n[i][j]=i+j;for〔i=0;i<2;i++〕for〔j=0;j<2;j++〕n[i+1][j+1]+=n[i][j];printf〔"%d\n", n[i][j]〕;}A14 B0 C6 D〕 不確定【2.24】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};inti,j,n;n=9;i=n/5;j=n-i*5-1;printf〔"a[%d][%d]=%d\n", i,j,a[i][j]〕;}A6 B3 C2 D〕 不確定【2.25】下面程序的輸出結果是 ;#include<stdio.h>intm[3][3]={{1}, {2}, {3}};intn[3][3]={1, 2, 3};voidmain〔〕{printf〔"%d\n", m[1][0]+n[0][0]〕; /* ①*/printf〔"%d\n", m[0][1]+n[1][0]〕; /* ②*/}①A〕0 B〕1 C〕2 D〕3②A〕0 B〕1 C〕2 D〕3【2.26】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{chars1[50]={"somestring*"},s2[]={"test"};printf〔"%s\n", strcat〔s1,s2〕〕;}A〕somestring* B〕testC〕somestritest D〕somestring*test【2.27】下面程序的輸出結果是 ;#include<stdio.h>intf〔char*s〕{char*p=s;while〔*p.='\0'〕p++;return〔p-s〕;}voidmain〔〕{printf〔"%d\n",f〔"ABCDEF"〕〕;}A〕3 B〕6 C〕8 D〕0【2.28】下面程序的輸出結果是 ;#include<stdio.h>#include<string.h>voidmain〔〕{charstr[100]="Howdoyoudo";strcpy〔str+strlen〔str〕/2, "esshe"〕;printf〔"%s\n", str〕;}A〕Howdoyoudo B〕esshe C〕Howareyou D〕Howdoesshe【2.29】下面程序的輸出結果是 ;#include<stdio.h>intfunc〔inta,intb〕{intc;c=a+b;return〔c〕;}voidmain〔〕{intx=6,y=7,z=8,r;r=func〔〔x--,y++,x+y〕,z--〕;printf〔"%d\n",r〕;}A〕11 B〕20 C〕21 D〕31【2.30】下面程序的輸出結果是 ;#include<stdio.h>voidfun〔int*s〕{staticintj=0;do{s[j]+=s[j+1];}while〔++j<2〕;}voidmain〔〕{intk,a[10]={1,2,3,4,5};for〔k=1;k<3;k++〕fun〔a〕;for〔k=0;k<5;k++〕printf〔"%d",a[k]〕;}A〕35756 B〕23445 C〕35745 D〕12345【2.31】下面程序的輸出結果是 ;#include<stdio.h>intk=1;voidmain〔〕{voidfun〔int〕;inti=4;fun〔i〕;printf〔"\n%d,%d",i,k〕; /* ①*/}void fun〔intm〕{m+=k;k+=m;{chark='B';printf〔"\n%d",k-'A'〕; /* ②*/}printf〔"\n%d,%d",m,k〕; /* ③*/}①A〕41 B56 C46 DABC參考答案都不對②A1 B-59 C-64 DABC參考答案都不對③A〕566 B166 C56 DABC參考答案都不對【2.32】下面程序的輸出結果是 ;intw=3;#include<stdio.h>voidmain〔〕{intfun〔int〕;intw=10;printf〔"%d\n",fun〔5〕*w〕;}intfun〔intk〕{if〔k==0〕return〔w〕;return〔fun〔k-1〕*k〕;}A〕360 B〕3600 C〕1080 D〕1200【2.33】下面程序的輸出結果是 ;#include<stdio.h>intfuna〔inta〕{intb=0;staticintc=3;a=c++,b++;return〔a〕;}voidmain〔〕{inta=2,i,k;for〔i=0;i<2;i++〕k=funa〔a++〕;printf〔"%d\n",k〕;}A〕3 B〕0 C〕5 D〕4【2.34】下面程序的輸出結果是 ;#include<stdio.h>voidnum〔〕{externintx,y;inta=15,b=10;x=a-b;y=a+b;}intx,y;voidmain〔〕{inta=7,b=5;x=a-b;y=a+b;num〔〕;printf〔"%d,%d\n",x,y〕;}A〕122 B〕525 C〕112 D〕 輸出不確定【2.35】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{intf〔int〕;inta=2,i;for〔i=0;i<3;i++〕printf〔"%4d",f〔a〕〕;}intf〔inta〕{intb=0;staticintc=3;b++;c++;return〔a+b+c〕;}A〕777 B〕71013 C〕7911 D〕789【2.36】下面程序的輸出結果是 ;#include<stdio.h>inttry〔〕{staticintx=3;x++;return〔x〕;}voidmain〔〕{inti, x;for〔i=0; i<=2; i++〕x=try〔〕;printf〔"%d\n", x〕;}A〕3 B〕4 C〕5 D〕6【2.37】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{ voidf1〔〕, f2〔int〕;intx=1;f1〔〕;f2〔x〕;printf〔"%d\n", x〕;}voidf1〔〕{intx=3;printf〔"%d", x〕;}voidf2〔intx〕{printf〔"%d", ++x〕;}A〕111 B〕222 C〕333 D〕321【2.38】下面程序的輸出結果是 ;#include<stdio.h>#defineSUB〔X,Y〕〔X〕*Yvoidmain〔〕{inta=3,b=4;printf〔"%d\n",SUB〔a++,b++〕〕;}A〕12 B〕15 C〕16 D〕20【2.39】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inta[]={1,2,3,4,5,6};int*p;p=a;printf〔"%d",*p〕;printf〔"%d",*〔++p〕〕;printf〔"%d",*++p〕;printf〔"%d",*〔p--〕〕;p+=3;printf〔"%d%d",*p,*〔a+3〕〕;}A〕123354 B〕123456 C〕122345 D〕123445【2.40】下面程序的輸出結果是 ;#defineFMT"%X\n"#include<stdio.h>voidmain〔〕{staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};printf〔FMT, a[2][2]〕; /* ①*/printf〔FMT, *〔*〔a+1〕+1〕〕; /* ②*/}①A〕9 B〕11 C〕A D〕B②A6 B7 C8 D〕 前面三個參考答案均是錯誤的【2.41】下面程序的輸出結果是 ;#include<stdio.h>main〔〕{inta[]={1, 2, 3, 4, 5};intx, y, *p;p=&a[0];x=*〔p+2〕;y=*〔p+4〕;printf〔"%d,%d,%d\n", *p, x, y〕;}A〕1,3,5 B〕1,2,3 C〕1,2,4 D〕1,4,5【2.42】下面程序的輸出結果是 ;#include<stdio.h>voidive〔intx[],n〕{intt,*p;p=x+n-1;while〔x<p〕{t=*x;*x++=*p;*p--=t;}}voidmain〔〕{inti,a[]={1,2,3,4,5,6,7,8,9,0};ive〔a,10〕;for〔i=0;i<10;i++〕printf〔"%d",a[i]〕;printf〔"\n"〕;}A〕1234567890 B〕0987654321C〕1357924680 D〕0864297531【2.43】下面程序的輸出結果是 ;#include<stdio.h>#include"string.h"fun〔char*w,intn〕{chart,*s1,*s2;s1=w;s2=w+n-1;while〔s1<s2〕{t=*s1++;*s1=*s2--;*s2=t;}}voidmain〔〕{staticchar*p="1234567";fun〔p,strlen〔p〕〕;printf〔"%s",p〕;}A〕7654321 B〕1717171 C〕7171717 D〕1711717【2.44】下面程序的輸出結果是 ;#include<stdio.h>char*p="abcdefghijklmnopq";voidmain〔〕{inti=0;while〔*p++.='e'〕;printf〔"%c\n", *p〕;}A〕c B〕d C〕e D〕f【2.45】下面程序的輸出結果是 ;#include<stdio.h>intf〔intx, inty〕{return〔y-x〕;}voidmain〔〕{inta=5, b=6, c;int 〔*g〕〔int, int〕=f;printf〔"%d\n", 〔*g〕〔a,b〕〕;}A1 B2 C3 D〕 前面三個參考答案均是錯誤的【2.46】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{inta=1,*p,**pp;pp=&p;p=&a;a++;printf〔"%d,%d,%d\n", a,*p, **pp〕;}A〕211 B〕212 C〕222 D〕 程序有錯誤【2.47】下面程序的輸出結果是 ;#include<stdio.h>voidmain〔〕{char*alpha[7]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX","YZ"};char**p;inti;p=alpha;for〔i=0;i<4;i++〕printf〔"%c",*〔p[i]〕〕;printf〔"\n"〕;}A〕AEIM B〕BFJN C〕ABCD D〕DHLP【2.48】下面程序的輸出結果是 ;#include<stdio.h>char*pp[2][3]={"abc", "defgh", "ijkl", "mnopqr", "stuvw", main〔〕{printf〔"%c\n",***〔pp+1〕〕; /* ①*/printf〔"%c\n",**pp[0]〕; /* ②*/printf〔"%c\n",〔*〔*〔pp+1〕+1〕〕[4]〕; /* ③*/printf〔"%c\n",*〔pp[1][2]+2〕〕; /* ④*/printf〔"%s\n",**〔pp+1〕〕; /* ⑤*/}①A〕a B〕d C〕i D〕m②A〕a B〕d C〕i D〕m③A〕h B〕l C〕q D〕w④A〕k B〕o C〕u D〕z⑤A〕ijkl B〕mnopqr C〕stuvw D〕xyz【2.49】下面程序的輸出結果是 ;#include<stdio.h>structstr1{charc[5];char*s;};voidmain〔〕{structstr1s1[2]={{"ABCD""EFGH"},{"IJK","LMN"}};structstr2{structstr1sr;intd;}s2={"OPQ","RST",32767};structstr1*p[2];p[0]=&s1[0];p[1]=&s1[1];printf〔"%s",++p[1]->s〕; /* ①*/printf〔"%c",s2.sr.c[2]〕; /* ②*/}①A〕LMN B〕MN C〕N D〕IJK②A〕O B〕P C〕Q D〕R【2.50】以下程序的輸出結果是 ;#include<stdio.h>structst{intx,*y;}*p;ints[]={10,20,30,40};structsta[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};voidmain〔〕{p=a;printf〔"%d\n",++〔*〔++p〕->y〕〕;}A〕10 B〕11 C〕20 D〕21【2.1】參考答案:D

【閱讀程序題參考答案 】注釋:程序中除法運算的兩個操作數均是整型,運算結果也是整型;【2.2】參考答案:B注釋:C語言答應在程序塊 〔分程序〕中說明變量;【2.3】參考答案:C注釋:變量 i中的負號傳送給變量 n后,因n是無符號數,已不作為負號處理;【2.4】參考答案:D注釋:對變量x的――操作是后綴形式, 變量x的減1操作要在執行完 printf函數之后才進行,所以變量 x的值在輸出的時候仍舊保持原值 10;【2.5】參考答案:B注釋:C語言在執行 printf〔〕時,對函數中的表達式表列的處理次序是從后向前,即先處理 n--,再處理n++,最終處理 每一個表達式作為一個處理單元,也就是說在不同的表達式中自增自減運算是單獨考慮的;【2.6】參考答案:A注釋:逗號表達式的結果是用逗號分開的最終一個表達式的值, 此題由于 c=='A'的值是0,所以逗號表達式的值為 ;【2.7】參考答案:C注釋:在輸出格式描述 "%m.ns"中,m是輸出總長度, n是實際字符的個數,這里 m沒有給出,就輸出總長度就是實際輸出字符的個數;【2.8】參考答案:C【2.9】參考答案:B【2.10】參考答案:C【2.11】參考答案:B【2.12】參考答案:D【2.13】參考答案:A【2.14】參考答案:C【2.15】參考答案:A【2.16】參考答案:C注釋:在 switch語句中,case本身僅起到語句標號的作用,不會轉變語句的流程,執行 break語句才能退出當前的 switch語句;【2.17】參考答案:D注釋:siwtch語句的表達式中,變量 c是后綴的增一運算,第一次執行 do-while循環時,執行case'A'后面的語句;【2.18】參考答案:D【2.19】參考答案:B【2.20】參考答案:B注釋:fabs〔〕是浮點數確定值函數;【2.21】參考答案:A【2.22】參考答案:C注釋:C 語言答應在程序塊(分程序)內說明變量,假如在程序塊內說明的變量和程序塊外的變量同名,在塊外說明的變量在塊內是不行見的;可將此題和 【】進行比較,加深懂得;【2.23】參考答案:C【2.24】參考答案:B【2.25】參考答案: ①D②A【2.26】參考答案:D【2.27】參考答案:B注釋:輸出結果為字符串長度;【2.28】參考答案:D注釋:字符串拷貝函數 strcpy〔〕要求的兩個參數都是字符串首地址;此題中其次個參數是字符串常量,接受這個字符串的第一個參量不是直接給出字符數組名,而是進行了地址運算后的結果;由于str字符串的長度是 13,除2取整后是 第一個參數給出的地址是字符數組 str的首地址加也就是原先字符串中其次個空格的位置, 把"es從該處放入,字符串str變為"Howdoes;【2.29】參考答案:C注釋:main函數調用 func函數時,第一個實參使用的是逗號表達式的值,也就是 x+y的結果;由于對變量 x、、z進行的是后綴運算,所以函數 func的參數值是 13和8;【2.30】參考答案:C【2.31】參考答案:①C②A③C【2.32】參考答案:B注釋:函數 fun進行了遞歸調用,實際進行的運算是 5×2×1×10;主函數內說明的局部變量 w屏蔽了外部變量 w,所以在主函數中外部變量 w是不行見的,在調用 printf函數時表達式"fun〔5〕*w"中w的值是;【2.33】參考答案:D注釋:main函數三次調用了函數 funa,在funa函數中的靜態變量 c僅在第一次調用時進行了初始化,再次調用時不再對靜態變量賦初值;【2.34】參考答案:B注釋:main函數和num函數中都說明白變量 a和b,由于它們是內部變量,所以它們分別在說明它們的函數內有效;外部變量 x和y在函數num之后被說明,而在num函數中又要引用它們,所以在num函數中用關鍵字 "extern"說明變量 x和y是一個外部變量,也就是通知運算機這兩個變量在 fun函數以外被說明,此處不是定義兩個 int型變量;【2.35】參考答案:D注釋:函數 f中的變量 c是靜態變量,僅在第一次調用函數 f時它被初始化為 3,其次次調用函數f時c的值是4,第三次調用函數 f時c的值是;【2.36】參考答案:D【2.37】參考答案:D注釋:程序中有三個 "x"分別在三個不同的函數中, 這三個"x"都是自動變量, 所以三個"x"分別局部于三不同的函數,在三個函數中對 "x"的操作互不影響;【2.38】參考答案:A【2.39】參考答案:A注釋:*〔++p〕和*++p都是指針變量值前加 1,第一次指向 a[1],其次次指向 a[2]; a+3是a[3]的地址;【2.40】參考答案:①D②A注釋:假如 FMT【2.41】參考答案定義為"%x\n":A,就輸出的 16進制數據用小寫字母表示;注釋:語句"p=&a[0]" 表示將數組 a中元素a[0]的地址賦給指針變量 就p就是指向數組首元素a[0]的指針變量,"&a[0]" 是取數組首元素的地址;對于指向數組首址的指針, p+i(或a+i)是數組元素 a[i]的地址,*〔p+i〕〔或*〔a+i〕〕就是a[i]的值;【2.42】參考答案:B【2.43】參考答案:D【2.44】參考答案:D【2.45】參考答案:A注釋:變量 g是指向函數的指針, 〔*g〕〔a,b〕是調用指針 g所指向的函數;【2.46】參考答案:C注釋:p是指針,pp是指向指針的指針;【2.47】參考答案:A注釋:對于指向數組的指針變量可以做下標運算, p[i]和alpha[i]都是指向字符串的首地址, *p[i]取出字符串的第一個字符;【2.48】參考答案:①D②

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論