C语言课后习题.docx
- 文档编号:17097852
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:63
- 大小:39.31KB
C语言课后习题.docx
《C语言课后习题.docx》由会员分享,可在线阅读,更多相关《C语言课后习题.docx(63页珍藏版)》请在冰点文库上搜索。
C语言课后习题
第1章 C语言概述
一、选择题
(1)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是
A)C语言程序仅可以编译执行
B)C语言程序仅可以解释执行
C)C语言程序既可以编译执行又可以解释执行
D)以上说法都不对
(2)以下叙述中错误的是
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能直接在计算机上运行
C)通过编译得到的二进制目标程序需要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
(3)以下关于简单程序设计的步骤和顺序的说法中正确的是
A)确定算法后,整理并写出文档,最后进行编码和上机调试
B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档
C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档
D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
(4)以下叙述正确的是
A)C语言程序是由过程和函数组成的
B)C语言函数可以嵌套调用,例如:
fun(fun(x))
C)C语言函数不可以单独编译
D)C语言中除了main函数,其他函数不可作为单独文件形式存在
(5)以下关于C语言的叙述中正确的是
A)C语言中的注释不可以夹在变量名或关键字的中间
B)C语言中的变量可以在使用之前的任何位置进行定义
C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致
D)C语言的数值常量中夹带空格不影响常量值的正确表示
(6)以下叙述中正确的是
A)程序设计的任务就是编写程序代码并上机调试
B)程序设计的任务就是确定所用数据结构
C)程序设计的任务就是确定所用算法
D)以上三种说法都不完整
(7)下列关于C语言文件的叙述中正确的是
A)文件由一系列数据依次排列组成,只能构成二进制文件
B)文件由结构序列组成,可以构成二进制文件或文本文件
C)文件由数据序列组成,可以构成二进制文件或文本文件
D)文件由字符序列组成,其类型只能是文本文件
(8)以下叙述中正确的是
A)在C语言程序中,main函数必须放在其它函数的最前面
B)每个后缀为.C的C语言程序都可以单独进行编译
C)在C语言程序中,只有main函数才可单独进行编译
D)每个后缀为.C的C语言程序都应该包含一个main函数
9)C语言主要是借助以下哪个功能来实现程序模块化
A)定义函数B)定义常量和外部变量
C)三种基本结构语句D)丰富的数据类型
二、填空题
习题答案
一、选择题
ADBBBDCBA
二、填空题
第2章 数据的存储与运算
一、选择题
(1)以下选项中不能用作C程序合法常量的是
A)1.234B)'123'C)123D)"\x7G"
(2)以下选项中可用作C程序合法实数的是
A).1e0B)3.0e0.2C)E9D)9.12E
(3)以下叙述中错误的是
A)C程序在运行过程中所有计算都以二进制方式进行
B)C程序在运行过程中所有计算都以十进制方式进行
C)所有C程序都需要编译链接无误后才能运行
D)C程序中整型变量只能存放整数,实型变量只能存放浮点数
(4)以下选项中能表示合法常量的是
A)整数:
1,200
B)实数:
1.5E2.0
C)字符斜杠:
‘\’
D)字符串:
"\007"
(5)有以下程序
#include<stdio.h>
main()
{ints,t,A=10;doubleB=6;
s=sizeof(A);t=sizeof(B);
printf(“%d,%d\n”,s,t);}
在VC6平台上编译运行,程序运行后的输出结果是
A)2,4 B)4,4 C)4,8 D)10,6
(6)以下C语言用户标识符中,不合法的是
A)_1 B)AaBcC)a_b D)a—b
(7)以下关于C语言数据类型使用的叙述中错误的是
A)若要准确无误差的表示自然数,应使用整数类型
B)若要保存带有多位小数的数据,应使用双精度类型
C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型
(8)以下选项中,能用作用户标识符的是
A)voidB)8_8C)_0_D)unsigned
(9)表达式:
(int)((double)9/2)-(9)%2的值是
A)0B)3C)4D)5
(10)若有定义语句:
intx=10;,则表达式x-=x+x的值为
A)-20B)-10C)0D)10
(11)有以下程序
#include
main()
{inta=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d\n”,a=2*b);}
程序运行后的输出结果是
A)0,0B)1,0C)3,2D)1,2
(12)有以下定义语句,编译时会出现编译错误的是
A)chara=’a’;
B)chara=’\n’;
C)chara=’aa’;
D)chara=’\x2d’;
(13)以下选项中,能用作数据常量的是
A)o115B)0118C)1.5e1.5D)115L
(14)设有定义:
intx=2;以下表达式中,值不为6的是
A)x*=x+1B)x++,2*x
C)x*=(1+x)D)2*x,x+=2
(15)程序段:
intx=12;doubley=3.;printf("%d%8.6f",x,y);的输出结果是
A)123.B)123.
C)12,3.D)123.
(16)C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是
A)预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义
B)用户标识符可以由字母和数字任意顺序组成
C)在标识符中大写字母和小写字母被认为是相同的字符
D)关键字可用作用户标识符,但失去原有意义
(17)以下叙述中错误的是
A)非零的数值型常量有正值和负值的区别
(B)常量是程序运行过程中值不能被改变的量
(C)定义符号常量必须用类型名来设定常量的类型
(D)用符号名表示的常量叫符号常量
二、填空题
习题答案
一、选择题
BABDCDDCBBDCDDAAC
二、填空题
第3章最简单的C程序设计——顺序程序设计
一、选择题
(1)若有定义语句:
inta=3,b=2,c=1;,以下选项中错误的赋值表达式是
A)a=(b=4)=3;B)a=b=c+1;
C)a=(b=4)+c;D)a=1+(b=c=4);
(2)有以下程序段
charname[20];
intnum;
scanf("name=%snum=%d",name,&num);
当执行上述程序段,并从键盘输入:
name=Lilinum=1001<回车>后,name的值为
A)Lili B)name=Lili
C)Lilinum=D)name=Lilinum=1001
(3)有以下程序
#include
main()
{intx=011;
printf("%d\n",++x); }
程序运行后的输出结果是
A)12B)11C)10D)9
(4)以下关于结构化程序设计的叙述中正确的是
A)一个结构化程序必须同时由顺序、分支、循环三种结构组成
B)结构化程序使用goto语句会很便捷
C)在C语言中,程序的模块化是利用函数实现的
D)由三种基本结构构成的程序只能解决小规模的问题
(5)有以下定义:
int a;long b;double x,y;则以下选项中正确的表达式是
A)a%(int)(x-y) B)a=x!
=y;
C)(a*y)%b D)y=x+y=x
(6)表达式a+=a-=a=9的值是
A)9 B)-9C)18D)0(7)若变量已正确定义,在if(W)printf(“%d\n,k”);中,以下不可替代W的是
A)a<>b+c B)ch=getchar()
C)a==b+c D)a++
(8)有以下程序
#include
main()
{chara,b,c,d;
scanf(“%c%c”,&a,&b);
c=getchar();d=getchar();
printf(“%c%c%c%c\n”,a,b,c,d); }
当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:
回车也是一个字符)
12
34
则输出结果是
A)1234 B)12
C)12
3
D)12
34
(9)有以下程序,其中k的初值为八进制数
#include
main()
{intk=011;
printf("%d\n",k++); }
程序运行后的输出结果是
A)12B)11C)10D)9
(10)有以下程序
#include
main()
{inta=2,b=2,c=2;
printf("%d\n",a/b&c); }
程序运行后的输出结果是
A)0B)1C)2D)3
(11)有以下程序
#include
main()
{charc1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d\n”,c1,c2);}
已知字母A的ASCII码为65,程序运行后的输出结果是
A)E,68B)D,69
C)E,DD)输出无定值
(12)有以下程序
#include
main()
{inta1,a2;charc1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
printf("%d,%c,%d,%c",a1,c1,a2,c2);}
若通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,
程序输出结果是:
12,a,34,b则正确的输入格式是(以下_代表空格,
A)12a34b
C)12,a,34,b
(13)若有定义和语句:
inta,b;scanf(“%d,%d”,&a,&b);以下选项中的输入数据,不能把值3赋给变量a、5赋给变量b的是
A)3,5,B)3,5,4C)3,5D3,5
二、填空题
(1)以下程序运行后的输出结果是【1】。
#include
main()
{inta;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a); }
(2)有以下程序(说明:
字符0的ASCII码值为48)
#include
main()
{charc1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2); }
若程序运行时从键盘输入48<回车>,则输出结果为【2】。
(3)以下程序运行后的输出结果是【3】。
#include<stdio.h>
main()
{inta=200,b=010;
printf(”%d%d\n”,a,b); }
(4)有以下程序
#include<stdio.h>
main()
{int x,y;
scanf(”%2d%1d”,&x,&y);printf(”%d\n”,x+y);
}
程序运行时输入:
程序的运行结果是【4】。
(5)以下程序的功能是:
将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。
请填空。
#include
main()
{intx=256;
printf("%d-%d-%d\n",【5】,x/10%10,x/100);
}
(6)若有定义语句:
inta=5;,则表达式:
a++的值是_【6】__。
(7)若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值为【7】___。
(8)以下程序运行后的输出结果是_【8】_。
#include
main()
{intx=20;
printf(“%d”,0 printf(“%d\n”,0 习题答案 一、选择题 AACC(A或B)DACDAAAC 二、填空题 【1】3 【2】09 【3】2008 【4】15 【5】x%100%10 【6】5 【7】1 【8】10 第4章 选择结构程序设计 一、选择题 (1)if语句的基本形式是: if(表达式)语句,以下关于“表达式”值的叙述中正确的是 A)必须是逻辑值B)必须是整数值 C)必须是正数D)可以是任意合法的数值 (2)有以下程序 #include main() {ints; scanf("%d",&s); while(s>0) {switch(s) {case1: printf("%d",s+5); case2: printf("%d",s+4);break; case3: printf("%d",s+3); default: printf("%d",s+1);break; } scanf("%d",&s); } } 运行时,若输入123450<回车>,则输出结果是 A)B)66656C)66666D) (3)有以下程序 #include main() {intx=1,y=0; if(! x)y++; elseif(x==0) if(x)y+=2; elsey+=3; printf("%d\n",y); } 程序运行后的输出结果是 A)3B)2C)1D)0 (4)有以下程序 #include main() {int a=1,b=0; if(! a)b++; else if(a==0)if(a)b+=2; else b+=3; printf(”%d\n”,b); } 程序运行后的输出结果是 A)0B)1C)2D)3 (5)若有定义: doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是 A)a=a++,i++; B)i=(a+k)<=(i+k); C)i=a; D)i=! a; (6)若a是数值类型,则逻辑表达式(a==1)||(a! =1)的值是 A)1 B)0 C)2 D)不知道a的值,不能确定 (7)以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是 A)switch(a) {case1: a=b;break; default: a++; } B)switch(a==1) {case0: a=b;break; case1: a++; } C)switch(a) {default: a++;break; case1: a=b; } D)switch(a==1) {case1: a=b;break; case0: a++; } (8)设有定义: inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是 A)if(a>b)c=a,a=b,b=c; B)if(a>b){c=a,a=b,b=c;} C)if(a>b)c=a;a=b;b=c; D)if(a>b){c=a;a=b;b=c;} (9)有以下程序 #include main() {intc=0,k; for(k=1;k<3;k++) switch(k) {default: c+=k case2: c++;break; case4: c+=2;break;} printf(“%d\n”,c);} 程序运行后的输出结果是 A)3B)5C)7D)9 (10)以下程序段中,与语句: k=a>b? (b>c? 1: 0): 0;功能相同的是 A)if((a>b)&&(b>c))k=1; elsek=0; B)if((a>b)||(b>c)k=1; elsek=0; C)if(a<=b)k=0; elseif(b<=c)k=1; D)if(a>b)k=1; elseif(b>c)k=1; elsek=0; (11)以下是if语句的基本形式: if(表达式)语句 其中"表达式" A)必须是逻辑表达式 B)必须是关系表达式 C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式 (12)有以下程序 #include main() {intx; scanf("%d",&x); if(x<=3);else if(x! =10)printf("%d\n",x);} 程序运行时,输入的值在哪个范围才会有输出结果 A)不等于10的整数 B)大于3且不等于10的整数 C)大于3或等于10的整数 D)小于3的整数 (13)有以下程序 #include main() {inta=1,b=2,c=3,d=0; if(a==1&&b++==2) if(b! =2||c--! =3) printf("%d,%d,%d\n",a,b,c); elseprintf("%d,%d,%d\n",a,b,c); elseprintf("%d,%d,%d\n",a,b,c);} 程序运行后输出结果是 A)1,2,3B)1,3,2C)1,3,3D)3,2,1 (14)下列关系表达式中,结果为“假”的是 A)(3+4)>6B)(3! =4)>2 C)3<=4||3D)(3<4)==1 (15)如果以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是 A)switch(a+9)B)switcha*b {casec1: y=a-b;{case10: x=a+b; casec2: y=a+b;default: y=a-b; }} C)switch(a+b)D)switch(a*a+b*b) {case1: case3: y=a+b;{default: break; break;case3: y=a+b;break; case0: case4: y=a-b;case2: y=a-b;break; } (16)有以下程序 #include main() {chara=’H’; a=(a>=’A’&&a<=’’Z)? (a-‘A’+’a’): a; printf(“%c\n”,a); } 程序运行后的输出结果是 A)AB)a.C)HD)h 二、填空题 (1)有以下程序 #include main() {intx; scanf("%d",&x); if(x>15)printf("%d",x-5); if(x>10)printf("%d",x); if(x>5)printf("%d\n",x+5); } 若程序运行时从键盘输入12<回车>,则输出结果为【1】。 (2)以下程序运行后的输出结果是【2】。 #include main() {intx=10,y=20,t=0; if(x==y)t=x;x=y;y=t; printf("%d%d\n",x,y); } (3)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为【3】时表示逻辑值“真”。 (4)设x为int型变量,请写出一个关系表达式【4】,用以判断x同时为3和7的倍数时,关系表达式的值为真。 (5)有以下程序 #include main() {inta=1,b=2,c=3,d=0; if(a==1) if(b! =2) if(c==3)d=1; elsed=2; elseif(c! =3)d=3; elsed=4; elsed=5; printf(“%d\n”,d); } 程序运行后的输出结果是【5】。 习题答案 一、选择题 DADA无答案ABCAADBCBDD 二、填空题 (1)1217 (2)200 (3)非0 (4)(x%3==0)&&(x%7==0) (5)4 第5章 循环结构程序设计 一、选择题 (1)有以下程序段 inti,n; for(i=0;i<8;i++) {n=rand()%5; switch(n) {case1: case3: printf("%d\n",n);break; case2: case4: printf("%d\n",n);continue; case0: exit(0); } printf("%d\n",n); } 以下关于程序段执行情况的叙述,正确的是 A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环操作 C)当产生的随机数n为1和2时不做任何操作 D)当产生的随机数n为0时结束程序运行 (2)有以下程序 #include main() {chars[]="012xy\08s34f4w2"; inti,n=0; for(i=0;s[i]! =0;i++) if(s[i]>='0'&&s[i]<='9')n++; printf("%d\n",n); } 程序运行后的输出结果是 A)0B)3C)7D)8 (3)若i和k都是int类型变量,有以下for语句 for(i=0,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 习题