C练习题答案.docx
- 文档编号:2884029
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:8
- 大小:31.95KB
C练习题答案.docx
《C练习题答案.docx》由会员分享,可在线阅读,更多相关《C练习题答案.docx(8页珍藏版)》请在冰豆网上搜索。
C练习题答案
一、填空
1、C语言规定,在一个源程序中main函数的位置可以任意
2、C语言中的标识符只能由三种字符组成,它们是数字、字母和下划线
3、表达式18/4*sqrt(4.0)/8值的数据类型为双精度
4、当a=3,b=2,c=1时,表达式f=a>b>c的值是0
5、在C语言中,char型数据在内存中的存储形式是ASCII值
6、对应scanf(“a=%d,b=%d”,&a,&b);语句的输入a为3,b为7的键盘输入格式是a=3,b=7
7、C语言提供的三种逻辑运算符是&&、||、!
8、下面程序段的运行结果是you?
charstr[]=“howareyou?
”;
printf(“%s”,str+8);
9、模块化程序设计要求:
高内聚、低偶合。
10、已知指针p的指向如图所示,则表达式*p++的值是21
二、单项选择
1、以下运算符中运算级别最高的是(D)
(A)%(B)/(C)<(D)!
2、以下是字符常量的是C
(A)"C"(B)'\\''(C)'W'(D)''
3、sizeof(float)是 B 。
(A)一个双精度型表达式
(B)一个整型表达式
(C)一种函数调用
(D)一个不合法的表达式
4、已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是:
(C)
(A)scanf("%2d%2d%2d",&i,&j,&k);
(A)scanf("%d%d%d",&i,&j,&k);
(A)scanf("%d,%d,%d",&i,&j,&k);
(A)scanf("i=%d,j=%d,k=%d",&i,&j,&k);
5、以下非法的赋值语句是:
(C)
(A)n=(i=2,++i);(B)j++;
(C)++(i+1);(D)x=j>0;
6、以下四个选项中,均是不合法的用户标识符的是(C)
(A)AP_Odo(B)floatla0_A
(C)b-agotoint(D)_123tempint
7、若有说明语句:
charc='/72';则变量c(A)
(A)包含1个字符(B)包含2个字符
(C)包含3个字符(D)说明不合法,C的值不确定
8、下面不正确的字符串常量是:
(A)
(A)'abc'(B)"12'12"(C)"0"(D)""
9、执行下列程序段后,a值为:
D
inta,b;
a=15;b=12;
a=(a--==b++)?
a%5:
a/5;
(A)0(B)2.8(C)4(D)2
10、判断char型变量ch是否为大写字母的正确表达式是(C)
(A)’A’<=ch<=’Z’
(B)(ch>=’A’)&(ch<=’Z’)
(C)(ch>=’A’)&&(ch<=’Z’)
(D)(‘A’<=ch)AND(‘Z’>=ch)
11、以下程序的运行结果是(C)
main()
{intm=5;
if(m++>5)
printf(“%d\n”,m);
else
printf(“%d\n”,m--);
}
(A)4(B)5(C)6(D)7
12、以下程序段的运行结果是:
(B)
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf(“%d”,s);
(A)0 (B)1 (C)无限循环 (D)程序段中的控制表达式是非法的
13、C语言中while和do-while循环的主要区别是 (A)。
(A)do-while的循环体至少无条件执行一次
(B)while的循环控制条件比do-while的循环控制条件严格
(C)do-while允许从外部转到循环体内
(D)do-while的循环体不能是复合语句
14、有如下程序,该程序的执行结果是(C)
main()
{intnum=0;
while(num<=2)
{num++;
printf(“%d”,num);
}
}
(A)1(B)12(C)123(D)1234
15、以下程序运行后的输出结果是(A)
main()
{inti=3,j=0;
do
{j=j+(--i);}while(i<2);
printf(“%d\n”,j);}
(A)2(B)3(C)4(D)无限循环
16、如果charcc[]=“12345”,做sizeof(cc)后的返回值应为(C)
(A)2(B)5(C)6(D)1
17、判断字符串a和b是否相等,应当使用(D)。
(A)if(a==b)
(B)if(a=b)
(C)if(strcpy(a,b))
(D)if(strcmp(a,b))
18、执行语句for(i=1;i++<4;);后变量i的值(C)
(A)3(B)4(C)5(D)不定
19、下面程序行的结果是:
(C)
func(inta,intb)
{intc;
c=a+b;
Returnc;
}
main()
{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
20、有以下程序:
main()
{chars[]="ABCD",*p;
for(p=s+1;p
}
程序运行后的输出结果是(D)
A)ABCD B)A C)B D)BCD
BCD B C CD
CD C D D
D D
三、改错题
1、以下程序段求两个数的和:
inta,b=4,c;
scanf(“%d”,a);
c=a+b;
printf(“%d”,c);
答案:
scanf(“%d”,a);有错,
应为:
scanf(“%d”,&a);
2、以下程序段将输入字符显示到屏幕上:
charch;
ch=getchar(‘ch’);
putchar(‘ch’);
答案:
一、ch=getchar(‘ch’);有错
改为:
ch=getchar()
二、putchar(‘ch’);有错
改为:
putchar(ch);
3、以下程序段输出最大者:
inta=5,b=3;
if(a
elseprintf(“%d”,b);
答案:
if(a
改为:
if(a>b)printf(“%d”,a);
4、以下程序段求1-10所有数的和:
intsum,i;
do
{sum=sum+i;
i++;
}while(i<10);
printf(“%d”,sum);
答案:
intsum,i;有错
改为:
intsum=0,i=1;
while(i<10);有错
改为
while(i<=10);
5、以下程序段将输入的字符串显示到屏幕上:
charstr[20];
scanf(“%s”,&str);
puts(str);
答案:
scanf(“%s”,&str);有错
改为
scanf(“%s”,str);
因为数组名本身就表示数组的首地址
四、编程题
答案:
#include"stdio.h"
voidmain()
{
doublex,y;
printf("请输入X的值:
");
scanf("%lf",&x);
if(x<1)
{y=x;}
elseif(x>=1&&x<10)
{y=2*x-1;}
else
{y=3*x-1;}
printf("y=%lf",y);
}
2、求十个学生成绩的平均值。
答案:
#include"stdio.h"
voidmain()
{
doublescore[10],sum=0,avg;
inti;
printf("请输入10个学生的成绩:
");
for(i=0;i<10;i++)
{
scanf("%lf",&score[i]);
sum=sum+score[i];
}
avg=sum/10;
printf("学生的平均成绩为:
%.2lf",avg);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 练习题 答案