程序设计习题及答案.docx
- 文档编号:28182162
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:29
- 大小:28.14KB
程序设计习题及答案.docx
《程序设计习题及答案.docx》由会员分享,可在线阅读,更多相关《程序设计习题及答案.docx(29页珍藏版)》请在冰豆网上搜索。
程序设计习题及答案
2011-2012年度第一学期“C语言程序设计”期末考试复习提纲
一、考试题型
序号
题型
每题得分
题量
总分
一
选择题
2
15
30
二
填空
2
5
10
三
程序阅读
4
5
20
四
编程题
10
1
10
15
2
30
二、题例:
(一)项目二数据类型、运算符和表达式
选择题:
1.不合法的C语言整型常量是A。
A.–012B.0x35C.123LD.8E2
2.不合法的C语言实型常量是A。
A.E3B..123C.–6.2E4D.5.0
3.不合法的C字符常量是C。
A.’2’B.’\101’C.’AB’D.’\n’
4.下列四组选项中,均是不合法的用户标识符的选项是B。
A.WP_0do
B.b-agotoint
C.floatla0_A
D.-123abcTEMP
5.下列四组选项中,均是合法转义字符的选项是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类型,则执行语句x=y=3;t=++x||++y;后,y的值是D。
A.不定值B.4C.1D.3
8.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。
x=(i=4,j=16,k=32)
A.4B.16C.32D.52
9.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为D。
A.floatB.charC.intD.double
10.设以下变量均为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=5,y=2;,则计算表达式y+=y-=m*=y后的y值是-16。
2.若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为1。
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中包含的字符个数为1。
8.若有定义:
intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为1。
(x+y)%2+(int)a/(int)b
9.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-’3’的值为102。
阅读题:
(写出程序运行结果)
1.#include
main()
{intx=97;chary=’b’;
printf(“%c,%d ”,x,y) ;
}
答:
a,98
2.#include
main()
{intx=6;
x+=x-=x*x ;
printf(“x=%d\n”,x) ;
}
答:
x=﹣60
3.#include
main()
{intx;
(x=4*5,x*5),x+25;
printf(“x=%d\n”,x) ;
}
答:
x=20
4.#include
main()
{inti=1,j;
j=-i++;
printf(“%d\n”,j) ;
}
答:
﹣1
编程题:
(顺序结构编程)
1.输入华氏温度,输出摄氏温度。
C=5/9*(F-32)
#include
main()
{
floatC,F;
printf("请输入华氏温度F:
");
scanf("%f",&F);
C=5.0/9*(F-32);
printf("%.2f℉=%.2f℃\n",F,C);
}
2.输入底面半径r和高度h,计算并输出圆柱体的体积v。
v=πr2h(π取3.14,v计算结果保留到小数点后两位)
#include
#definePI3.14
main()
{
floatr,h,V;
printf("请输入底面半径r和高度h:
");
scanf("%f%f",&r,&h);
V=PI*r*r*h;
printf("圆柱体的体积V=%.2f\n",V);
}
3.从键盘输入一扇形的半径和角度,求扇形的面积和周长。
#include
#definePI3.14
main()
{
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=%.2f\n",S,C);
}
4.从键盘输入学生的三门考试成绩,计算并输出平均成绩。
#include
main()
{
floata,b,c,avg;
printf("请输入学生三门考试的成绩:
");
scanf("%f%f%f",&a,&b,&c);
avg=(a+b+c)/3;/*求平均成绩*/
printf("平均成绩为:
%.2f\n",avg);
}
(二)项目三C语言程序控制结构
选择题:
1.下列for循环的循环次数是 D。
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,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的值为D 。
A.500B.100 C.5000D.5050
4、 有以下程序:
#include
main()
{char c;
while((c=getchar())!
='?
') putchar(--c); }
程序运行时,如果从键盘输入:
Y?
N?
<回车>,则输出结果为D。
A.YB.XYC.YXD.X
5.下面的程序段执行时,若从键盘输入5,则输出为 D 。
inta;
scanf(”%d”,&a);
if(a-->5)printf(”%d\n”,a++);elseprintf(”%d\n”,a);
A.7B.6C.5D.4
6.若inta=5;则执行下列语句后打印的结果为 A 。
do
{printf(“%2d\n”,a--);
}while(!
a);
A.5 B.不打印任何结果 C.4 D.陷入死循环
7.语句for(i=0,j=0;i<=100;i++)j=j+i;运行后j的值为 D 。
A.500 B.100 C.5000 D.5050
8.下面程序段的运行结果是C。
intn=0;
while(n++<=2);printf(“%d”,n);
A.2B.3C.4D.有语法错误
9.若i为整型变量,则以下循环执行次数是B。
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;
do{a=a+s*i;s=-s;i++;}while(i<=10);
printf(“a=%d”,a);
3.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束
循环。
请填空。
intn=0,c;
c=getchar();
while(c!
=’\n’)
{
if(c>=’0’&&c<=’9’)n++;
c=getchar();
}
4.以下程序中,while语句的循环次数是无限次。
#include
main()
{inti=0;
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++;
}
printf(“%d”,i);
}
5.下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。
请填空。
#include
main()
{intr,m,n;
scanf(“%d%d”,&m,&n);
if(m r=m%n; while(r){m=n;n=r;r=__m%n__;} printf(“%d\n”,n); } 6.执行以下程序后,输出“#”的个数是___6____。 #include main() {inti,j; for(i=1;i<5;i++) for(j=2;j<=i;j++) putchar(‘#’); } 阅读题: (写出程序运行结果) 1.#include main() {inty=10; do{y--; }while(--y); printf(“%d\n”,y--); } 答: 0 2. #include main() {int x=15; while(x>10&&x<50) {x++; if(x/3){x++;break;} else continue; } printf(“%d\n”,x); } 答: 17 3.#include main() {inta=1,b=0; for(;a<3;a++) switch(a++) {case1: b--;break; case2: b++; case3: b+=3; } printf(“%d\n”,b); } 答: ﹣1 4.#include main() {ints,i; for(s=0,i=1 ;i<3 ;i++,s+=i) ; printf(“%d\n”,s); } 答: 5 编程题: 1.计算s=1+1/2+1/3+……+1/n #include main() { inti,n; floats; scanf("%d",&n); for(s=0.0,i=1;i<=n;i++) s=s+1.0/(i); printf("s=%f\n",s); } 2.求和: 从1加到100 #include main() { intn,s; for(s=0,n=1;n<=100;n++) s=s+n; printf("s=%d\n",s); } 3.如果0 #include 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! =%d\n",n,s); } elseprintf("输入错误! 请输入1-16中的整数! \n"); } 4.如果0〈n<8,请计算s=1! +2! +3! +……+n! ,并打印输出计算结果s。 (注: n! =1*2*3*……*n) #include 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! */ } printf("s=%d\n",s); } elseprintf("输入错误,请输入1-7中的整数! \n"); } 5.从键盘输入一个大于1的整数,输入是否为素数,是,则输出“YES”,否则输出“NO” #include main() { intn,i; printf("请输入整数n: "); scanf("%d",&n); if(n>1) { for(i=2;i if(n%i==0)break; if(i==n)printf("YES\n"); elseprintf("NO\n"); } elseprintf("输入错误,请输入大于1的整数! \n"); } (三)项目四数组 选择题: 1.若二维数组a有m列,则在a[i][j]前的元素个数为____B____.(注意列) A.j*m+IB.i*m+jC.i*m+j-1D.i*m+j+1 2.以下对二维数组a的正确说明是____C____. A.inta[3][];B.floata(3,4);C.doublea[1][4];D.floata(3)(4); 3.若有说明: intx[][3]={1,3,5,7,9,11};,则x数组的行数为___A____。 A.2B.3C.4D.无确定值 4.若有以下定义 inta[]={1,2,3,4,5,6,7}; charc1=’b’,c2=’2’; 则数值不为2的表达式是_____A_____。 A.c2-0B.a[1]C.’d’-c1D.a[‘3’-c2] 5.以下程序的输出结果是_____B______。 main() {inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=0;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf(“%d\n”,s); } A.18B.19C.20D.21 6.有两个字符数组a、b,则以下正确的输入语句是___B____. A.gets(a,b);B.scanf(“%s%s”,a,b); C.scanf(“%s%s”,&a,&b);D.gets(“a”),gets(“b”); 7.当执行下面的程序时,如果输入ABC,则输出结果为____A_____。 #include #include main() {charss[10]=“1,2,3,4,5”; gets(ss);strcat(ss,”6789”);printf(”%s\n”,ss); } A.ABC6789B.BC67C.12345ABC6D.ABC456789 8.判断字符串s1是否大于字符串s2,应当使用___D____. A.if(s1>s2)B.if(strcmp(s1,s2)) C.if(strcmp(s2,s1)>0)D.if(strcmp(s1,s2)>0) 填空题: 1.下面程序以每行4个数据的形式输出a数组,请填空。 #defineN20 main() {inta[N],i; for(i=0;i for(i=0;i {if(___i%4==0____)__printf(“\n”);_ printf(“%3d”,a[i]); } printf(“\n”); } 2.若有定义: inta[3][4]={{1,2},{0},{4,6,8,10}}; 则初始化后,a[1][2]的初值是___0____,a[2][1]的初值是____6___。 3.下面程序的运行结果是___7,3_____。 main() {inta[10]={10,2,-13,21,11,67,-78,8,90,-53}; inti,x=0,y=0; for(i=0;i<10;i++) if(a[i]>0)x++; elsey++; printf(“%d,%d\n”,x,y); } 4.下面程序的功能是: 输入50个数,按逆序输出,请填空。 main() {inta[50],i; for(i=0;i<50;i++) scanf(“%d”,&a[i]); for(__i=49__;i>=0;_i--__) printf(“%4d”,a[i]); } 5.下面程序可求出矩阵a的主对角线上的元素之和,请填空。 main() {inta[3][3]={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+__a[i][j]__; printf(“sum=%d\n”,sum); } 6.下面程序的功能是在三个字符串中找出最小的,请填空。 #include #include main() {chars[20],str[3][20]; inti; for(i=0;i<3;i++)gets(str[i]); strcpy(s,__str[0]__); if(strcmp(str[1],s)<0)strcpy(s,str[1]); if(strcmp(str[2],s)<0)strcpy(s,str[2]); printf(“%s\n”,__s__); } 阅读题: 1.#include main() {inta[10],i; for(i=9;i>=0;i--)a[i]=10-i; printf(“%d%d%d\n”,a[2],a[5],a[8]); } 答: 852 2.#include main() {inta[3][3]={1,2,3,4,5,6,7,8,9},i,s=0; for(i=0;i<=2;i++) s=s+a[i][i]; printf(“s=%d\n”,s); } 答: s=15 3.#include main() {inta[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf(“%d%d%d%d\n”,a[0][3],a[1][2],a[2][1],a[3][0]); } 答: 0650 4.#include #include main() {chars[][10]={“a”,”good”,”world”}; strcat(s[0],s[1]); printf(“%s”,s[0]); } 答: agood 5.#include main() {chars[]=“abcdef”; s[3]=’\0’; printf(“%s\n”,s); } 答: abc 编程题: 1.从键盘输入10个整数,存入数组a,从数组a的第二个元素起,分别将后项减前项之差存入数组b,按每行3个元素输出数组b。 #include main() { inta[10],b[10],i,j; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0,j=0;i<9;i++,j++) { b[j]=a[i+1]-a[i]; printf("%5d",b[j]); if(i%3==2)printf("\n"); } } 2.输入一个字符串,将其中的大写字符转换成小写,其它的不做转换,然后输出得到的字符串。 #include main() { inti; chars[100]; scanf("%s",s); for(i=0;s[i]! ='\0';i++) { if(s[i]>='A'&&s[i]<='Z') s[i]=s[i]+32; } for(i=0;s[i]! ='\0';i++) printf("%c",s[i]); printf("\n"); } 3.读入20个整数,统计非负数个数,并计算非负数之和 #include main() { inta[20],i,n,s=0; for(i=0;i<20;i++) scanf("%d",&a[i]); for(i=0;i<20;i++) if(a[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 习题 答案