




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 z 習 題 解 答目 錄 1.2 習題解答.3 選擇題.3 填空題.3 編程題.4 2.2 習題解答.5 選擇題.5 填空題.7 編程題.8 3.2 習題解答.11 選擇題.11 填空題.12 編程題.12 4.2 習題解答.15 選擇題.15 填空題.17 編程題.18 5.2 習題解答.29 選擇題.29 填空題.31 編程題.33 6.2 習題解答.37 選擇題.37 填空題.41 編程題.43 7.2 習題解答.67 選擇題.67 填空題.68 編程題.68 2 1.2 習題解答 選擇題 1、B 【分析】在一個C程序中必須有且只能有一個main函數,而且main函數可以在任何地方出現(xiàn)
2、. 2、C 【分析】C 語言中合法以的標識符組成為:字母,數字,下劃線,且數字不能打頭,亦不能為關鍵字。A中,-sub 不合法。B 中4d不合法。D 中void 為關鍵字。 3、 【分析】 4、C 【分析】轉義字符中,第一個”輸出“,第二輸出,第三個b退格,把前一個去掉了,第四個輸出,第五個t跳格,第六個”輸出”,第七個n輸出換行。5、C 【分析】本題將10進制17,分別按8、16進制輸出。8的進制21=2*8+1*1=17(10, 16制11=1*16+1*1=17(10) 填空題 1、主 【分析】一個C源程序中至少包括一個主函數,其他函數沒有限制。 2、雙引號。 【分析】兩種寫法都是允許的
3、,使用尖括號表示在包含文件目錄中去查找(包含目錄是由用戶在設置環(huán)境時設置的),而不在源文件目錄去查找.使用雙引號則表示首先在當前的源文件目錄中查找,若未找到才到包含目錄中去查找。用戶編程時可根據自己文件所在的目錄來選擇某一種命令形式。 3、261,b1 【分析】將10進制的177,按8進制和16進制兩種形式輸出。 4、a3 b7 x8.5 y71.82 c1=A c2=a 【分析】scanf函數中,格式說明符以外的原樣輸入。 5、printf函數中,格式說明符以外的原樣輸出。%m.nf控制輸出結果中共m位,小數3 占n位。 【分析】 編程題 1. #include "stdio.h&
4、quot; void main() float qianmi,yingli; /定義變量 scanf("qianmi=%f",&qianmi); /輸入數據 printf("yingli=%f",qianmi*1.60934); /計算并輸出數據 2. #include "stdio.h" void main() char x; printf("請輸出一個小寫小母n"); scanf("%c",&x); printf("輸出字母的大寫型式為:%c",x+32)
5、; 3、#include<stdio.h> void main() float c,f; printf("請輸入一個攝氏溫度:") ; scanf("%f",&c); f=32*c+9.0/5*c; 4 printf("華氏溫度為:%5.2fn",f); 4. #include<stdio.h> void main() int a =3,b=4,c=5; float x=1.2,y=2.4,z=-3.6; double u=51274,n=128765; printf("a=%-3d,b=%-
6、3d,c=%dn",a,b,c); printf("x=%7.6f,y=%7.6f,z=%7.6fn",x,y,z); printf("x+y= %3.2f,y+z= %3.2f, x+z=%3.2fn",x+y,y+z,x+z); printf("u= %.0lf n= %.0lfn",u,n); printf("c1='a' or 97nc2='b' or 98n"); 2.2 習題解答 選擇題 1、C 【分析】語言的運算符按運算對象的個數可以分為單目、雙目和三目運算符
7、和多目運算符。 2、C 【分析】 %運算符要求參加運算的數必須是整數 3、A 【分析】 B.賦值運算的作用是用將常量賦給變量,而不能給表達形式 所以a*3=2 不對。 C. %運算符要求參加運算的數必須是整數,而x是float 類型所以x%(-3) 不對 。 D. y=float(i),由于i是 int 類型,向 float類型轉換是自由轉的,不需要強制轉。 4、A . 【分析】 因為 k=7,x=12; x%=k,則x=12%7,此時x=5,而k%=5,即k=7%5此時K=2,所以(x%=k)-(k%=5)就等價于5-2=3。同理,x%=(k%=5)的值為0;x%=(k-k%5)的值為2;x
8、%=k-k%5的值也為2 5、A 5 【分析】首先通過n*100+0.5將原數擴大100,并通過+0.5判斷是否進位。之后/100進行舍去小數點后第三位的運算。 6、B 【分析】分析 根據優(yōu)先級別,先計算小括號里,y 與3相等成立所以表達式的值為1,再將1賦給x,而x的值就是表達式的值為1. 7、A 【分析】略 8、D 【分析】“a大于等于10”、“ a小于等于0”兩者分別為關系運算,一個“或”字又表明為邏輯或運算,所以D對。 9、B 【分析】在邏輯表達式求解中,并不是所有的邏輯運算符都被執(zhí)行,對&&運算符來說,只有前一個表達式不等于0時,才繼續(xù)進行右邊的運算。由于a>b
9、為0,所以左邊的表達式為0,所以右邊的+n將不被計算,所以n的值不變仍為2。10、B 【分析】241的二進制形式為11110001,15的二進制形式為00011111,進行按位&運算后為00010001;a的二進制形式為01100001,z的二進制形式為01111010,進行按位|運算后為011111011。00010001與011111011都為非0元素,所以再進行&&時結果一定為1。 11、A 【分析】b>>2表示向右移動兩位,相當于除以兩個2結果為8/2=4;同理,b>>1相當于除一個2,結果為6,4/6為0。12、B 【分析】3的二進制數
10、為00000011。10的二進制為00001010,a<<2的結果為00001100,b=1的值為0,所以00001100與0按位或之后結果為00001100。即10進進制的12。 13、D. 【分析】就運算符的優(yōu)先級別而言,單目>雙目,算術運算>關系運算>邏輯運算。 14、B 【分析】19的二制數為00010011,23的二進制數為00010100,兩者進行按位與后結果為00010000十進制16,即為16進制的13。 15、C 【分析】0x39的二進制形式為00111001,0xf的二進制形式為00001111,兩者進行異或運算,異或結算的規(guī)則,參加運算的兩個
11、二進制位同號,則結果為假,異號則為真。結果為:00110110即為16進制的36。 16、A 6 【分析】進行按位或運算,要a的低8位為1,則要求b的低8位全為1,高8位要求不變,則要求高8位全為0,即b應該為:0000000011111111,即為8進制的0377。 17、A 【分析】由題得1>2不成立,所以x>y?+x:+y表達式的值為+y,則此時Y的值為3,而+x沒有被執(zhí)行,所以x的仍值為1,而Z的值與表達式的值相同所以選A。 18、C 【分析】賦值運算符的作和是將一個表達式或一個變量,常量賦給另一個變量,賦值號的左邊只能是變量,不能是常量,所以A、B、D不對。 19、B 【
12、分析】逗號運算符是級別最紙的運算符,逗號表達式也是值是所有表達式中最右邊的值。即a+b的值,由題從左向右算起,b+后b為6,則a+b為8.20、D 【分析】在不同種數據類型進行計算時的轉換規(guī)則是:數據類型低的全部轉換成運算過程中級別最高的。在int、long、unsigned和char四個類型中,long的類型級別最高,所以結果的類型為long. 填空題 1. -17.5 【分析】“/”要求兩操作數如果一個為實數結果都為實數,如果都為整數結果也為整數,所以a/4.0=2.5,a/4=2.所以原式=2.5-2*10=-17.5。2. 5,32 【分析】x+表示將x的值拿來用,然后再+;而y*=x
13、+等價于y=y*x,即y=8*4=32,此計算結束之后x 的值才增加1,變?yōu)?。3. -40 【分析】賦值運算符的結合方向是從右向左的,所以先計算a*a=25,所以a+=a-=a*a等價于a+=(a-=25),而此時a仍為5.接下來計算a-=25得a=2-25=-20;則a+=(a-=25)等價于a+=-20,所以a=a-20=-20-20=-40。4. 16 【分析】x+=-x%-y等價于x+=(-x)%(-y),-放在變量的前面時,要先對變量進行變化,然后再用,所以原式即為x+=14%3,而14%3=2,即x+=2,而此時x=14,所以x=x+2=16。5. x>1&&
14、;x<10 |x<0&&x!=-1 【分析】略 6. 0 7 【分析】根據運算符的優(yōu)先級別,算術運算>關系運算>邏輯運算可知,要先算a+b=7,接下來計算7>c即7>5成立為1,然后計算b=c,而4=5不成立,所以值為0,即最終表達式等價于1&&0,所以結果為0.7. 0 【分析】略,同第6題。 8. -17 【分析】條件運算符優(yōu)先級別高于賦值運算符,所以先算(a<b)?a:b的值,由于13<25成立,所以(a<b)?a:b的值 為a 的值,并將a的值賦給y,此時,原式等價于(13<-17)?y:c,而
15、13<-17不成立,所以表達式的值為C的值,即為-17。 9. 18, 3,3 【分析】對逗號表達式的值,即為從左向右最后一個表達式的值 ,本題中表達式的值即為6*a的值即18。 10. 3.5 【分析】算術運算符中同一級別的運算符按從左向右的順序進行,所以先算a%43=8,再計算8*(int)(x+y)=8*9=72,再計算72%3=0,再計算0/5=0.最后計算與X相加,所以最終結果為3.5。 編程題 1. 編寫一個程序,要求輸入圓的半徑r,計算并輸出該圓的周長和面積。 #define PI 3.14 #include "stdio.h" void main()
16、float r, S=0, L=0; printf("input r:n"); scanf("%f", &r); S= PI *r*r; /計算圓面積 L=2* PI *r; /計算圓周長 printf("S=%f,L=%fn", S,L); 2. 假設美元與人民幣的匯率是1美元兌換6.4742元人民幣,歐元與人民幣的匯率是1歐元兌換9.2338元人民幣,編程實現(xiàn)輸入人民幣的錢數,輸出能兌換的美元及歐元金額。 # include "stdio.h" void main() float renminbi,me
17、iyuan,ouyuan; 8 printf("input renminbi:n"); scanf("%f", &renminbi); meiyuan = renminbi *6.4742; /計算美元金額 ouyuan = renminbi *9.2338; /計算歐元金額 printf("meiyuan =%f ouyuan =%fn",meiyuan, ouyuan); 3. 編寫一個程序,從鍵盤上輸入3個字符后,按各字符的ASCII碼從小到大順序輸出這些字符。 /這道題關鍵是把輸入3個字符后的回車過濾掉,不然回車就會成
18、為下一組的第一個字符。有兩種方法: /第一種: #include <stdio.h> int main() char a,b,c,tmp; while(a=getchar()!=EOF) b=getchar(); c=getchar(); getchar(); /在錄入c后用getchar()濾掉回車 if(a>b) tmp=a; a=b; b=tmp; if(a>c) tmp=a; a=c; c=tmp; if(b>c) tmp=b; b=c; c=tmp; printf("%c %c %cn",a,b,c); return 0; /第二種:
19、 #include <stdio.h> int main() char a,b,c,tmp; 9 while(scanf("%c%c%c%*c",&a,&b,&c)!=EOF) /用"%*c"(空字符,不存儲字符的字符)濾掉回車 if(a>b) tmp=a,a=b,b=tmp; /逗號表達式,簡潔 if(a>c) tmp=a,a=c,c=tmp; if(b>c) tmp=b,b=c,c=tmp; printf("%c %c %cn",a,b,c); return 0; 輸入數據有多
20、組,每組占一行,有三個字符組成,之間無空格。 例如輸入 qwe asd zxc 輸出 e q w a d s c x z 4. 編程實現(xiàn)輸入一個無符號整數(unsigned類型),分別輸出它的低四位和高四位。 #include <stdio.h> (待查) main() unsigned u=0xffff;/舉例 unsigned char l,h; /scanf("%u",&u); l=u&0xff; /得到低8位. h=u>>8; /得到高8位 printf("u=%u,l=%u,h=%u",u,l,h); g
21、etchar(); 5. 根據當前銀行的利率表,編程實現(xiàn)從鍵盤輸入存款金額money,存期year和年利率rate,計算銀行存款的本息sum(保留1位小數)。 #include <stdio.h> int main() int year; float money,rate,sum; printf("請輸出金額,利率,存款時間n"); scanf("%f,%f,%d",&money,&rate,&year); sum=money*year*rate; printf("存款的本息sum=%.1f n",
22、sum); 10 3.2 習題解答 選擇題 1D 【分析】在此要注意,else總是于之前面最近的且沒有用過的if進行配對,所以在本題中,else與第二個if 配對,且整體做為第一個if語句的語句體。又因,10>20不成立,所以第一個if 根本不被執(zhí)行,所以m的值沒有任何變化。 2. A 【分析】else總是于之前面最近的且沒有用過的if進行配對,所以在本題中, if (a>b) t=s+t; else if (a=b) t=5; else t=2*s; 相當于t=s+t;(a>b) t=5 (a=b); t=2*s(a<b); 3. C 【分析】while(E)的含義是
23、當E為真。為真即為不等于0,而A、B、D 都是表示非零。 4. D 【分析】i=0,+i 后,i 為1,i%2=1,所以執(zhí)行j+=i;即j=1,i=1小于5所以還執(zhí)行+i,此時 i為2,則i%2等于0,跳出本次判斷。同理當i 等于4 ,6時同樣跳出判斷,而當i為3,5時,都要執(zhí)行j+=i。 5. A 【分析】while (1)進行判斷時,條件永遠成立,所以執(zhí)行循環(huán)體。輸出一個“*”后,i+,i變?yōu)?,又1<3成立,所以結束循環(huán)。 6. D 【分析】當i=1時,執(zhí)行s+=i 后s=1;執(zhí)行循環(huán)體中i+后,i為2,而后還要執(zhí)行一次for結構中的i+,則i為3.3小于6成立,則再執(zhí)行s+=i;
24、 i+;則s為4, i為4, 而后還要執(zhí)行一次for結構中的i+,則i為5,同樣5小于6成立,則再執(zhí)行s+=i; i+;則s為9, i為6, 而后還要執(zhí)行一次for結構中的i+,則i為7,且7小于6已不再成立。所以最后輸出9 7 7. B 【分析】在for(語句1;語句2;語句3)結構中,語句1為初值,語句2為循環(huán)體執(zhí)行的條件,語句3為變量自增語句。本題中i為2,i=0不成立,所以循環(huán)體不被執(zhí)行。 8. D 11 【分析】a=1,a<8成立 ,所以執(zhí)行循環(huán)體b+=a;a+=2;后,a=3, b=3,再執(zhí)行 for結構中的a+, 則a=4,b=3.以后同理。 9. B 【分析】當a=1時b
25、=1,執(zhí)行循環(huán)體,b>=20不成立, b%3=1成立,則執(zhí)行b+=3;continue;則b=4,然后跳出本次行循環(huán),則此時a=2,b=4.以后同理進行判斷。 10. A 【分析】對于雙重循環(huán),外層循環(huán)變化一次,內層變化一個循環(huán)。本題。當i=1時,j可以為3、2、1,同理當當i=2時,j可以為3、2、1;當i=3時,j可以為3、2、1;而語句if (i*j>3) break; 則表時,如果i*j>3時結束整個for循環(huán)。條件不成立時再執(zhí)行m*=i*j; 填空題 1. hn*2 【分析】sn為第n次落地時共經過的米數,hn為第n次反彈的高度n>=2 ,hn*2才為第n次經
26、過的距離。 2. n!=0 j+ 【分析】由輸出語句可知,定義的變量i,j 分別用于存放正數和負數的個數。 所以只要輸入的數不是0,則進行判斷。 3. 0 k/10 count+ 【分析】count 作為累計的和所以初值一定為0;而while循環(huán)的作用是將指定的數k的各各位上的字數字取出來。k%10負責實現(xiàn)取出K的個位。則前兩位則需通過k/10來實現(xiàn)。if (t=10)成立即是需要的數字,則總數需要自增。所以count+. 4. 50 (i*1.0) 【分析】本題的累加問題中,累加50次,即i<=50,兩個相除時如果都為整數則結果一定為整數,為此,需要將分母轉化成FLOAT 類型。所以填
27、(i*1.0)。5. 2*i-1 printf("n"); i 【分析】略 編程題 1. 編寫一個程序,計算并輸出下列分段函數值: 22226,356010,2,3153,2,3,10xxxxyxxxxxxxxxxx+<=+<= 12 其中,x從鍵盤輸入。 #include"stdio.h" int main() float x,y; printf("輸入X"); scanf("%f",&x); printf("n"); if (x<0 &&x!=-3)
28、 y=x*x+2*x-6; else if (0<=x&&x<10&&x!=2&&x!=3) y=x*x-5*x+6; else y=x*x-x-15; printf("y=%f",y); 2. 編寫一個程序,從鍵盤輸入年和月,計算并輸出該年的該月份共有多少天。 算法分析:要考慮大月有31天,小月有30天,閏年的二月有29天以及非閏年的二月有28天這幾種情況。 源程序:#include <stdio.h> int main() int year,month,days; printf("Ente
29、r year and month:"); scanf("%d%d",&year,&month); switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: /*處理"大"月*/ days=31;break; case 4: case 6: case 9: case 11: /*處理"小"月*/ days=30;break; case 2: /*處理"平"月*/ if (year%4=0&&
30、;year%100!=0|year%400=0) days=29; /*如果是閏年*/ 13 else days=28; /*不是閏年*/ break; default: printf("Input error! n"); /*月份輸入錯誤*/ days=0; if (days!=0) printf("%d,%d is %d daysn",year,month,days); return 0; 3. 編寫一個程序,計算并輸出下列級數之和: 231.2!3!nxxxxexn=+ 其中n與x從鍵盤輸入。 #include"stdio.h"
31、 #include "math.h" main() int i,n; double s=1.0,s1=1.0,x; scanf("%d,%f",&n,&x); for(i=1;i<=n;i+) s1=s1*i; /*各項中的階乘*/ s=s+pow(x,i)/s1; /*按公式求出*/ printf("s=%f", s); 4. 輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數字和其他字符的個數。 #include"stdio.h" main() char c;int i=0,j=0,k=0,l
32、=0; while(c=getchar()!='n') if(c>=65&&c<=90|c>=97&&c<=122) i+; /i為字符數 else if(c>=48&&c<=57) j+; /j為數字數 else if(c=32) k+; /k為空格數 else l+; /l為其他字符 printf("i=%d,j=%d,k=%d,l=%d/n",i,j,k,l); 5. 編寫一個程序,解決猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個;第二天
33、早上又將剩下的桃子吃掉一半,又多吃了一個;以后每天早上都吃了前一天剩下的一半零一個;到第10天早上想再吃時,只剩一個桃子了。問猴子第一天共摘了多少桃子? 14 #include"stdio.h" main() int i=1,sum=0; for(;i<=10;i+) sum=2*sum+1; printf("sum=%dn",sum); 4.2 習題解答 選擇題 1. D 【分析】 定義一維數組的語法格式為“類型標識符 數組名整型常量表達式 ;”,其中“整型常量表達式”是用來說明數組元素的個數,可以是整型常量、整型常量表達式或符號常量,但不能包含
34、變量。選項A用圓括號定義數組a,是錯誤的;而選項B和C中,用變量n來說明數組a長度,是錯誤的。 2. C 【分析】 一維數組的初始化的語法格式為“類型標識符 數組名整型常量表達式=常量,常量,.常量n ;”,所賦初值放在賦值號后的一對花括號中。選項A把初值放在一對圓括號內,是錯誤的;選項B花括號中沒有初值,而且語句沒有“;”,是錯誤的;選項D中初值沒有用花括號括起來,是錯誤的。 3. B 【分析】 選項A定義數組art有5個元素,而花括號中只提供2個初值,分別賦值給art0和art1,其余元素自動賦值為0;選項B通過花括號的初值確定數組art有2個元素;選項C和D定義的數組art是等價的,表示
35、含有5個元素,其值分別為“89、-23、0、0、0”。 4. A 【分析】 C語言中,二維數組排列的順序是“按行存放”的,即先存放第0行的元素,再存放第1行的元素,以此類推。 5. B 【分析】 C語言中,二維數組是“按行存放”的,元素aij前面存放了i行,共i*m個元素,在第i行的第j列前面有j個元素,因此元素aij前的元素個數為i*m+j。 6. D 【分析】 選項A定義了a是一個1行4列的二維數組,但初值1,2,3,4,5卻是1行5列,是錯誤的;選項B在初始化語句中省略了第二維的長度,是錯誤的;選項C定義了b是一個2行3列的二維數組,但初值1,1,2,1,2,3卻是3行,是錯誤的;選項D
36、省略了第一維的長度,第二維長度為3,因此選項D等價于“double y13=0;”。7. D 【分析】 字符串"ABCDEFGH"占9個字節(jié),其中字符串結束標志'0'多占用了1個字節(jié)。選項A、B和C都只定義了8個元素的字符數組,是錯誤的。 15 8. D 【分析】 語句“char a="ABCDEF"”定義了一個字符數組,并字符個數確定數組的長度,而"ABCDEF"使以字符'0'為結束標志的一個字符序列,共7個字符,因此數組a長度為7;而語句“char b='A','B'
37、,'C','D','E','F'”則定義了長度為6的字符數組,因此a數組比b數組長度長。9. B 【分析】 格式說明符“%.4s”可以用來輸出字符串中前4個字符,因此選項B正確。 10. B 【分析】 字符串輸入函數gets(),其語法格式為“gets(字符數組名)”,選項A包含2個字符數組名,是錯誤的;選項D中gets函數的參數是字符串,也是不正確的; scanf函數使用%s格式說明符進行字符串輸入,其輸入項為數組名,選項C在數組名a和b前加“&”符號,是錯誤的。 11. D 【分析】 strcmp(s1,s2)將字符串
38、s1和s2自左向右按字符的ASCII碼值逐對進行比較,直到出現(xiàn)不同的字符或遇到'0'為止,如果s1等于s2,則strcmp(s1,s2)等于0;如果s1大于s2,則strcmp(s1,s2)大于0;如果s1小于s2,則strcmp(s1,s2)小于0。12. C 【分析】 字符串復制函數strcpy(str1,str2)將字符串str2同串結束標志'0'復制到字符串str1中,函數返回str1的指針。字符串連接函數strcat(str1,str3) 將字符串str3連接到字符串str1之后。因此本題答案為選項C。 13. A 【分析】 結構體變量占內存的大小是該
39、結構體各成員所需內存量的總和。 14. D 【分析】 程序中定義了一個結構體數組cnum2,包含2個元素,并將初值1,3,2,7依次賦值給cnum0.x、cnum0.y、cnum1.x和cnum1.y。因此,表達式“cnum0.y/cnum0.x*cnum1.x”的值為6。 15. C 【分析】 將初值"John",17,"Paul",19,"Mary",18,"adam",16 分別賦值給、c0.age、、c1.age、、c2.age、、c3.age,因此選
40、項C能夠打印出Mary。 16. C 【分析】程序中定義了一個共用體類型的變量u1,共用體各成員共同使用4字節(jié)內存空間,初值u1.c=A,所以u1.n=65,輸出是以%c格式符輸出的,因此本題答案為選項C。 17. D 【分析】變量a是一個結構體類型,所占內存的大小是該結構體各成員所需內存量的總和。整型變量c占4字節(jié)內存,共用體類型變量k占內存的大小是該共用體中最大的一個成員j所占用的內存量,為4字節(jié),因此本題答案為選項D。 18. A 【分析】變量u是一個共用體類型變量,共用體類型變量u占內存的大小是該共用體中最大的一個成員c所占用的內存量共4個字節(jié),共用體的所有成員公用一個存儲空間,同一時
41、間只能存儲一個成員,并且所引用的是最后一次存入成員的值。因此本題答案為4,34,12。 16 19. B 【分析】選項A定義枚舉類型不能使用“=”,是錯誤的;選項C定義枚舉類型時,花括號中的一些名字是程序設計者自己指定的,命名規(guī)則與標識符相同。無固定含義,只是一個符號。選項C中以數字作為標識符是錯誤的,選項D有雙引號是錯誤的,因此本題答案為選項B。 20. B 【分析】選項A的正確定義語句為typedef char *STRING255; 選項C的正確定義語句為typedef char STRING; 選項D的正確定義語句為typedef char *STRING; 因此本題答案為選項B。 填
42、空題 1. 0 4 【分析】二維數組x35由3行5列組成,行列下標都從0開始,即元素從x00開始到x24,因此最小行下標為0,最大列下標為4。 2. ak!=y 【分析】while循環(huán)用于訪問a數組中的每個元素,從最后一個元素到第一個,直到一個等于y的元素被找到為止,如果查找成功,輸出下標值k,否則繼續(xù)查找,直到數組元素全部查找一遍。因此while循環(huán)的條件為ak!=y。 3. &ai i%4=0 printf("n"); 【分析】scanf語句要求給數組a中的每個元素賦初值,因此為&ai;程序要求以每行4個數據的形式輸出a數組,在for循環(huán)語句中加入條件判
43、斷語句,如果一行輸出4個元素(i%4=0)則打印輸出一個回車換行符printf("n")。 4. j=2 j>=0 【分析】前一個嵌套的for循環(huán)輸出數組a主對角線上的元素之和。后一個嵌套的for循環(huán)輸出數組a次對角線上的元素之和。次對角線上的元素滿足的特點是行下標和列下標的和為2,內層for循環(huán)第三條語句為j-,所以j的初值為2,條件為j>=0。 5. slen!= '0' 【分析】本程序是輸出字符數組s中存放的字符串的長度,從s0開始,向后搜索,每搜索一個元素,len增1,直到遇到字符串結束標志0為止。重復過程結束。這時,len中所保存的就是
44、s中有效字符的個數。 6. str0 s 【分析】strcpy(s, str0)函數是將字符串str0復制到字符數組s中,先假設字符串str0中存放的是三個字符串中最小的,strcmp()函數是將兩個字符串比較,總把最小的字符串放到s中。最后輸出s。 17 7. 12 【分析】結構體變量占內存的大小是該結構體各成員所需內存量的總和。結構體類型struct date中共定義三個成員都為int類型,共占12個字節(jié)。 8. person1.birthday.year=1982 【分析】嵌套結構體類型定義變量,采用逐級訪問的方式對變量賦值。式中的圓點“.”稱為成員運算符。 9. 4 8 【分析】共用體
45、類型的所有成員公用一個存儲空間,同一時間只能存儲一個成員,并且所引用的是最后一次存入成員的值。則e.in.x=2*2=4; e.in.y=4+4=8; 10. 1 6 【分析】枚舉類型變量的值是一些整數,從花括號的第一個名字開始,系統(tǒng)自動賦予從0開始的值。Red=0,yellow=1;若在定義類型時對枚舉常量進行了初始化,則按照初始化的值計算,blue=4,green=5,white=6。 編程題 1. 編寫一個程序,計算Fibonacci數列的前15個數,并將其存儲到一維數組fib中,然后輸出結果。Fibonacci數列的定義為: 1101121>=+=nnnFFFnnn 【問題分析】
46、 【程序代碼】 #include <stdio.h> int main() int fib15=1,1; int i; for (i=2;i<15;i+) fibi=fibi-1+fibi-2; for (i=0;i<15;i+) printf("%5d",fibi); printf("n"); return 0; 2. 有一個已經排好序的數組,編寫一個程序,實現(xiàn)輸入一個數,并按原來排序次序將該數插入到數組中。 【程序代碼】 18 #include <stdio.h> int main() const int N=10
47、; /定義一個包含11個元素的整型數組a,并初始化一組有序序列 int aN+1=20,25,31,36,41,46,67,68,78,98; int i,d; printf("請輸入一個整數:n"); scanf("%d",&d); for (i=N-1;i>=0;i-) if (ai>d) ai+1=ai; else ai+1=d; break; printf("插入整數后的新序列:n"); for (i=0;i<N+1;i+) printf("%4d",ai); return 0;
48、3. 隨機生成50個1200之間的整數,并存入數組a中,然后輸出這些整數;同時找出數組a中的所有素數,存入數組b,并按每行5個元素的格式由大到小輸出這些素數。 【程序代碼】 #include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> int main() int a50,b25=0; int num=0,flag; int i,j,t; /以下產生50個1200之間的隨機數存于數組a,并顯示 srand(int)time(0); for (i=0;i<
49、50;i+) ai=(int)(1+199*rand()/RAND_MAX); printf("%5d",ai); printf("n"); /找出數組a中所有素數 for (i=0;i<50;i+) flag=1; for (j=2;j<sqrt(ai);j+) 19 if (ai%j=0) flag=0; break; if (flag=1) && (ai!=1) bnum=ai; num+; /對數組b進行排序 for (i=0;i<num;i+) for (j=0;j<num-i;j+) if (bj<
50、;bj+1) t=bj; bj=bj+1; bj+1=t; /輸出素數 for (i=0;i<num;i+) printf("%5d",bi); if (i+1)%5=0) printf("n"); return 0; 4. 編寫一個程序,實現(xiàn)在一個5行6列的矩陣中查找指定數據,并輸出該數據及其在矩陣中的位置。 【程序代碼】 #include <stdio.h> int main() int a56=23,56,78,90,12,45,13,14,16,17,18,19, 32,35,36,38,39,31,41,43,45,46,48,49, 51,52,53,55,57,58; int i,j,c,r; int d;/查找的數據 int flag=0;/是否找到標志 /輸入要查找的數據 printf("請輸入查找數據:&qu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 破傷風考試題及答案
- 藥物使用風險評估試題及答案
- 考試遴選筆試試題及答案
- 文化產業(yè)管理證書考試全局觀試題及答案
- 文化產業(yè)管理證書考試的前沿研究與行業(yè)動態(tài)試題及答案
- 行車規(guī)章考試試題及答案
- 社會工作考研試題及答案
- 西醫(yī)臨床備考有效性試題及答案總結
- 藥劑學未來發(fā)展中的新機遇與挑戰(zhàn)試題及答案
- 系統(tǒng)復習2025年育嬰師考試的試題及答案
- 中醫(yī)科物理治療登記表
- 高山下的花環(huán)
- 中醫(yī)望色望神圖集共59張課件
- 藍色金色心有所盼定有所成勵志工作總結計劃PPT模板
- 《跋傅給事帖》2020年浙江嘉興中考文言文閱讀真題(含答案與翻譯)
- 八年級歷史下第一單元復習教案
- 物業(yè)小區(qū)保潔清潔方案
- 銀行從業(yè)資格考試題庫附參考答案(共791題精心整理)
- 年產20噸阿齊沙坦原料藥生產車間的設計和實現(xiàn)材料學專業(yè)
- 原地面高程復測記錄表正式版
- 滬寧城際接觸網專業(yè)驗收標準
評論
0/150
提交評論