程序的設計習題與答案_第1頁
程序的設計習題與答案_第2頁
程序的設計習題與答案_第3頁
程序的設計習題與答案_第4頁
程序的設計習題與答案_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、2011-2012年度第一學期“C語言程序設計”期末考試復習提綱、考試題型序號題型每題得分題量總分一選擇題21530一填空2510二程序閱讀4520四編程題1011015230二、題例:(一)項目二數據類型、運算符和表達式選擇題:1 .不合法的C語言整型常量是A。A.-012B.0x35C.123LD.8E22 .不合法的C語言實型常量是A。A.E3B.123C.-6.2E4D.5.03 .不合法的C字符常量是C。A.'2'B.''101'C.'APD.'n'4 .下列四組選項中,均是不合法的用戶標識符的選項是B。A.WP_0do

2、B.b-agotointC.floatla0_AD.-123abcTEMP5.下列四組選項中,均是合法轉義字符的選項是A。A.''n'B.017''"'C.'018''f''xab'D.'0''101''xlf'6.定義三個變量a、b、c,并分別賦初值為5。能實現該功能的語句是_C_A.inta=b=c=5;B.inta,b,c=5;C.inta=5,b=5,c=5;D.inta=5;b=5;c=5;7 .若x,y,t均為int類型,則執行語

3、句x=y=3;t=+x|+y;后,y的值是D。A.不定值B.4C.1D.38 .若x、i、j、k都是int型變量,則計算下面表達式后,x的值為C。x=(i=4,j=16,k=32)A.4B.16C.32D.529 .設有說明:charw;intx;floaty;doublez;則表達式w*x+z-y值的數據類型為A.floatB.charC.intD.double10 .設以下變量均為int類型,則值不等于7的表達式是C。A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y)填空題:D.(y=6,y+1,x=y,x+1)1 .若有定義intm

4、=5,y=2;,則計算表達式y+=y-=m*=y后的y值是-16。2 .若s是int型變量,且s=6,則表達式s%2+(s+1)%2的值為。3 .若a是int型變量,則表達式(a=4*5,a*2),a+6的值為26。4 .若x和a均是int型變量,則計算表達式x=(a=4,6*2)后的x值為12,計算表達式x=a=4,6*2后的x值為4。5 .若a是int型變量,則計算表達式a=25/3%3后a的值為2。6 .若x和n均是int型變量,且x和n的初值均為5,則計算表達式x+=n+后x的值為10,n的值為6。7 .若有定義:charc='010'則變量c中包含的字符個數為J。8

5、.若有定義:intx=3,y=2;floata=2.5,b=3.5;則下面表達式的值為J。(x+y)%2+(int)a/(int)b9 .已知字母a的ASCII碼為十進制數97,且設ch為字符型變量,則表達式ch='a'+'8'-'3'的值為102。閱讀題:(寫出程序運行結果)1. #include<stdio.h>main()intx=97;chary='b';printf("%c,%d”,x,y);答:a,982. #include<stdio.h>main()intx=6;x+=x-=x*x

6、;printf("x=%dn",x)答:x=-603. #include<stdio.h>main()intx;(x=4*5,x*5),x+25;printf("x=%dn",x)答:x=204. #include<stdio.h>main()inti=1,j;j=-i+;printf("dn",j)答:-1編程題:(順序結構編程)1 .輸入華氏溫度,輸出攝氏溫度。C=5/9*(F-32)#include<stdio.h>main()floatC,F;printf("請輸入華氏溫度F:&q

7、uot;);scanf("%f",&F);C=5.0/9*(F-32);printf("%.2fF=%.2fCn",F,C);v計算結果保留到小數2 .輸入底面半徑r和高度h,計算并輸出圓柱體的體積v。v=Ttr2h(兀取3.14,點后兩位)#include<stdio.h>#definePI3.14main()floatr,h,V;printf("請輸入底面半徑r和高度h:");scanf("%f%f",&r,&h);V=PI*r*r*h;printf("圓柱體的體積

8、V=%.2fn",V);3 .從鍵盤輸入一扇形的半徑和角度,求扇形的面積和周長。#include<stdio.h>#definePI3.14main()floatr,n,S,C;printf("請輸入扇形的半徑r和角度n:");scanf("%f%f",&r,&n);S=(n*PI*r*r)/360;C=(n*PI*r)/180+2*r;printf("扇形的面積S=%.2f,周長C=%.2fn",S,C);4 .從鍵盤輸入學生的三門考試成績,計算并輸出平均成績。#include<stdio

9、.h>main()floata,b,c,avg;printf("請輸入學生三門考試的成績:");scanf("%f%f%f",&a,&b,&c);avg=(a+b+c)/3;/*求平均成績*/printf("平均成績為:.2fn",avg);(二)項目三C語言程序控制結構選擇題:1 .下列for循環的循環次數是)。inti=0,j;for(j=10;i=j=10;i+,j-)printf("ok");A.0次B.1次C.10次D.無限次2 .下列for循環的循環次數是B。inti=0,

10、j=0;for(;!j&&i<=5;i+)j+;A.5次B.1次C.無限D.6次3 .語句for(i=0,j=0;i<=100;i+)j=j+i;運行后j的值為DA.500B.100C.5000D.50504 、有以下程序:#include<stdio.h>main()charc;while(c=getchar()!='?')putchar(-c);程序運行時,如果從鍵盤輸入:Y?N?3車,則輸出結果為D。A.YB.XYC.YXD.X5 .下面的程序段執行時,若從鍵盤輸入5,則輸出為D。inta;scanf("%d,&a

11、);if(a->5)printf("%dn”,a+);elseprintf("%dn",a);A.7B.6C.5D.46 .若inta=5;則執行下列語句后打印的結果為A。doprintf("%2dn",a-);while(!a);A.5B.不打印任何結果C.4D.陷入死循環;運行后j的值為 D7 .語句for(i=0,j=0;i<=100;i+)j=j+iA. 500 B. 100 C. 5000D. 50508 .下面程序段的運行結果是Ccintn=0;while(n+<=2);printf("%d,n);D.有

12、語法錯誤A.2B.3C.49 .若i為整型變量,則以下循環執行次數是for(i=2;i=0;)printf("%d,i-);A.無限次B.0次C.1次D.2次10 .執行語句for(i=1;i+<4;);后變量i的值是C。和第八題相似A.3B.4C.5D.不定填空題:1、若輸入字符串:abcdef回車,則以下while循環體將執行0次。While(ch=getchar()=,d')printf("*”);2、下面程序段的運行結果是a=-5。i=1;a=0;s=1;doa=a+s*i;s=-s;i+;while(i<=10);printf("a=

13、%d,,a);3 .下面程序段是從鍵盤輸入的字符中統計數字字符的個數,用換行符結束循環。請填空。intn=0,c;c=getchar();while(c!=,n,)if(c>='0'&&c<='9')n+;c=getchar();4 .以下程序中,while語句的循環次數是無限次。#include<stdio.h>main()inti=0;while(i<10)if(i<1)continue;if(i=5)break;i+;printf("%d,i);5 .下面程序的功能是用“輾轉相除法”求兩個正整數

14、的最大公約數。請填空。#include<stdio.h>main()intr,m,n;scanf("%d%d,&m,&n);if(m<n)r=m;m=n;n=r;r=m%n;while(r)m=n;n=r;r=_m%n;printf("%dn",n);6 .執行以下程序后,輸出“#"的個數是6#include<stdio.h>main()inti,j;for(i=1;i<5;i+)for(j=2產i;j+)putchar('#');閱讀題:(寫出程序運行結果)1. #include<

15、;stdio.h>main()inty=10;doy-;while(-y);printf("%dn”,y-);答:02. #include<stdio.h>main()intx=15;while(x>10&&x<50)x+;if(x/3)x+;break;elsecontinue;printf("%dn",x);答:173. #include<stdio.h>main()inta=1,b=0;for(;a<3;a+)switch(a+)case1:b-;break;case2:b+;case3:b+=

16、3;printf("%dn",b);答:14. #include<stdio.h>main()ints,i;for(s=0,i=1;i<3;i+,s+=i)printf(“%dn”,s);答:5編程題:1. 計算s=1+1/2+1/3+1/n#include<stdio.h>main()inti,n;floats;scanf("%d",&n);for(s=0.0,i=1;i<=n;i+)s=s+1.0/(i);printf("s=%fn",s);2. 求和:從1加到100#include&l

17、t;stdio.h>main()intn,s;for(s=0,n=1;n<=100;n+)s=s+n;printf("s=%dn",s);n!3. 如果0<n<17,使之能正確地計算#include<stdio.h>main()intn,i;longs;printf("請輸入整數n:");scanf("%d",&n);if(n>0&&n<17)for(i=2,s=1;i<=n;i+)s=s*i;printf("%d!=%dn",n,s);

18、elseprintf("輸入錯誤!請輸入1-16中的整數!n");*n)4 .如果0n<8,請計算s=1!+2!+3!+n!,并打印輸出計算結果s。(注:n!=1*2*3*#include<stdio.h>main()intn,i,s,fact;printf("請輸入整數n:");scanf("%d",&n);if(n>0&&n<8)for(i=1,s=0,fact=1;i<=n;i+)fact=fact*i;/*求n!*/s=s+fact;/*求s=1!+2!+3!+n!*

19、/printf("s=%dn",s);elseprintf("輸入錯誤,請輸入1-7中的整數!n");5 .從鍵盤輸入一個大于1的整數,輸入是否為素數,是,則輸出“YES',否則輸出“N(J#include<stdio.h>main()intn,i;printf("請輸入整數n:");scanf("%d",&n);if(n>1)for(i=2;i<n;i+)if(n%i=0)break;if(i=n)printf("YES'n");elseprin

20、tf("NO'n");elseprintf("輸入錯誤,請輸入大于1的整數!n");(三)項目四數組選擇題:1 .若二維數組a有m列,則在aij前的元素個數為B.(注意列)A.j*m+IB.i*m+jC.i*m+j-1D.i*m+j+12 .以下對二維數組a的正確說明是CA.inta3町B.floata(3,4);C.doublea14;D.floata(3)(4);intx口3=1,3,5,7,9,11;,則x數組的彳亍數為A3 .若有說明:A.2B.34 .若有以下定義inta=1,2,3,4,5,6,7;charc1='b'

21、,c2='2'則數值不為2的表達式是A。A.c2-0B.a1C.5 .以下程序的輸出結果是Bmain()inta33=1,2,3,4,5,6,i,j,s=0for(i=0;i<3;i+)for(j=0;j<=i;j+)C.4D.無確定值d'-c1D.a'3'-c2s+=aij;printf("%dn",s);A.18B.19C.20D.216 .有兩個字符數組a、b,則以下正確的輸入語句是B.“a"),gets(“b");A.gets(a,b);B.scanf("%s%S,a,b);C.sca

22、nf("%s%s,&a,&b);D.gets(7 .當執行下面的程序時,如果輸入ABC則輸出結果為A#include<stdio.h>#include<string.h>main()charss10="1,2,3,4,5”;gets(ss);strcat(ss,"6789");printf("%sn",ss);A.ABC6789B.BC67C.12345ABC6D.ABC4567898 .判斷字符串s1是否大于字符串s2,應當使用D.A.if(s1>s2)B.if(strcmp(s1,s2

23、)C.if(strcmp(s2,s1)>0)D.if(strcmp(s1,s2)>0)填空題:1.下面程序以每行4個數據的形式輸出a數組,請填空。#defineN20main()intaN,i;for(i=0;i<N;i+)scanf("%d',_&ai);for(i=0;i<N;i+)if(i%4=0)printf("n");printf("%3d,ai);printf("n");2 .若有定義:inta34=1,2,0,4,6,8,10;則初始化后,a12的初值是0,a21的初值是一6.3

24、.下面程序的運行結果是7,3。main()inta10=10,2,-13,21,11,67,-78,8,90,-53;inti,x=0,y=0;for(i=0;i<10;i+)if(ai>0)x+;elsey+;printf("%d,%dn”,x,y);4 .下面程序的功能是:輸入50個數,按逆序輸出,請填空。main()inta50,i;for(i=0;i<50;i+)scanf("%d,&ai);for(_i=49;i>=0;.i-)printf("%4d,ai);5 .下面程序可求出矩陣a的主對角線上的元素之和,請填空。mai

25、n()inta33=1,3,5,7,9,11,13,15,17,sum=0,i,j;for(i=0;i<3;i+)for(j=0;j<3;j+)if(_i=j)sum=sum+_aij;printf("sum=%dn',sum);6 .下面程序的功能是在三個字符串中找出最小的,請填空。#include<stdio.h>#include<string.h>main()chars20,str320;inti;for(i=0;i<3;i+)gets(stri);strcpy(s,_str0);if(strcmp(str1,s)<0)s

26、trcpy(s,str1);if(strcmp(str2,s)<0)strcpy(s,str2);printf("%sn",_s_);閱讀題:1. #include<stdio.h>main()inta10,i;for(i=9;i>=0;i-)ai=10-i;printf(“%d%d%d”n,a2,a5,a8);答:8522. #include<stdio.h>main()inta33=1,2,3,4,5,6,7,8,9,i,s=0;for(i=0;i<=2;i+)s=s+aii;printf(“s=%dn”,s);答:s=153.

27、 #include<stdio.h>main()inta44=1,3,5,2,4,6,3,5,7;printf(“%d%d%d%d”n,a03,a12,a21,a30);答:06504. #include<stdio.h>#include<string.h>main()chars10=“a”,”good”,”world”;strcat(s0,s1);printf(“%s”,s0);答:agood5. #include<stdio.h>main()chars=“abcdef”;s3=0;printf(“%sn”,s);答:abc編程題:1 .從鍵盤

28、輸入10個整數,存入數組a,從數組a的第二個元素起,分別將后項減前項之差存入數組b,按每行3個元素輸出數組b。main()inta10,b10,i,j;for(i=0;i<10;i+)scanf("%d",&ai);for(i=0,j=0;i<9;i+,j+)bj=ai+1-ai;printf("%5d",bj);if(i%3=2)printf("n");2. 輸入一個字符串,將其中的大寫字符轉換成小寫,其它的不做轉換,然后輸出得到的字符串。#include<stdio.h>main()inti;cha

29、rs100;scanf("%s",s);for(i=0;si!='0'i+)if(si>='A'&&si<='Z')si=si+32;for(i=0;si!='0'i+)printf("%c",si);printf("n");3. 讀入20個整數,統計非負數個數,并計算非負數之和#include<stdio.h>main()inta20,i,n,s=0;for(i=0;i<20;i+)scanf("%d",

30、&ai);for(i=0;i<20;i+)if(ai>=0)n+;s=s+ai;printf(printf(非負數個數:n=%dn",n);非負數之和:s=%dn",s);4. 某班有30名學生,考試共5門課程,輸入各門成績,計算每人的總分,輸出全班學生的各科成績及總分。#include<stdio.h>main()inti,j;floatscore305,sumr30=0.0,0.0,sum=0;printf("請輸入30個同學各5門課程的成績:n");for(i=0;i<30;i+)for(j=0;j<5;

31、j+)scanf("%f",&scoreij);for(i=0;i<30;i+)for(j=0;j<5;j+)sumri=sumri+scoreij;sum=sum+sumri;printf("t課程一課程二課程三課程四課程五n");for(i=0;i<30;i+)printf("第2d個同學:”,i);for(j=0;j<5;j+)printf("%8.2f",scoreij);printf("n");printf("%.2fn",sum);5. 從鍵

32、盤輸入10個數,從小到大排列(或從大到小排列),將其輸出(冒泡法或選擇法任選)冒泡法排序:main()inta10,i,j,t;for(i=0;i<10;i+)scanf("%d",&ai);for(i=0;i<9;i+)for(j=0;j<10-i-1;j+)if(aj>aj+1)t=aj;aj=aj+1;aj+1=t;printf("從小到大排列:n");for(i=0;i<10;i+)printf("%d",ai);printf("n");選擇法排序:#include&l

33、t;stdio.h>main()inta10,i,j,k,t;for(i=0;i<10;i+)scanf("%d",&ai);for(i=0;i<9;i+)k=i;for(j=i+1;j<10;j+)if(aj>ak)k=j;D. 6以下正確的程序段的是DB. p=&n;scanf("%d ,*p);D. p=&n;*p=m;A+B=9.C. char str20;D. char str20,*p=str;if(i!=k)t=ai;ai=ak;ak=t;for(i=0;i<10;i+)printf(&qu

34、ot;%5d",ai);printf("n");(四)項目五和項目六函數、指針選擇題1 .以下正確的函數定義形式是AA.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(intx,inty);D.doublefun(intx,y);2 .以下函數調用語句中實參的個數是A。fun(v1,v2),(v3,v4,v5),v6);A.3B.4C.52.若有說明;int*p,m=5,n;A.p=&n;scanf("%d,&p);C.scanf("%d,&n);*p=n;2

35、.以下程序的運行結果是inta=5;intb=7;main()inta=4,b=5,c;c=plus(a,b);printf("A+B=%dn',c);plus(intx,inty)intz;z=x+y;return(x);3 .以下正確的程序段是B.A.charstr20;B.char*p;"%S',p);scanf("%s,&str);scanf(scanf("%s,&str2);填空題:scanf("S',p2);1.若有定義:inta尸2,4,6,8,10,12,*p=a;則*(p+1)的值是匕.

36、*(a+5)的值是22 .下面程序段的運行結果是hELLO!.chars80,*sp="HELLO!;sp=strcpy(s,sp);s0='h'puts(sp);3 .理解下面的程序,填空使程序完整。#include<stdio.h>intmax(_intx,inty)intz;if(x>y)z=x;elsez=y;_return(z);main()inta,b,c;scanf("%d%d,_&a&b);c=max(a,b);printf("a=%d,b=%d,max=%drT,a,b,c);閱讀題:1. #include<stdio.h>voidfunc(intx)x=20;main()intx=10;func(x);printf("%d,x);答:102. #include<stdio.h>voidfun(float*a,float*b)floatw;*a=*a+*a;w=*a;*a=*b;*b=w;main()floatx=2.0,y=3.0;float*px=&x,*py=

溫馨提示

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

評論

0/150

提交評論