C语言课后习题答案.docx
- 文档编号:5814037
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:71
- 大小:46.65KB
C语言课后习题答案.docx
《C语言课后习题答案.docx》由会员分享,可在线阅读,更多相关《C语言课后习题答案.docx(71页珍藏版)》请在冰豆网上搜索。
C语言课后习题答案
第一章习题
1.1选择题:
⑴一个C程序的执行是( A )。
A) 从main()函数开始,直到main()函数结束
B) 从第一个函数开始,直到最后一个函数结束
C) 从第一个语句开始,直到最后一个语句结束
D)从main()函数开始,直到最后一个函数结束
⑵计算机能直接执行的语言是(B)。
A)汇编语言B)机器语言C)高级语言D)A和B
⑶一个C程序是由(C)。
A)一个主程序和若干子程序组成
B)若干过程组成
C)一个或多个函数组成
D)若干子程序组成
⑷下列说法正确的是(B)。
A)C程序书写格式限制严格,一行内必须写一个语句
B)C程序书写比较自由,一个语句可以分行写在多行上
C)C程序书写格式限制严格,要求一行内必须写一个语句,并要求行号
D)C程序中一个语句不可以分写在多行上
1.2填空题:
⑴构成C语言程序的基本单位是 函数 。
⑵C语言源程序文件的后缀是 .c ,经过编译后,生成文件的后缀是 ,obj ,经过连接后,生成文件的后缀是 .exe 。
⑶在TURBOC环境中用RUN命令运行一个C程序时,所运行的程序的后缀是 .exe 。
⑷一个C语言程序必须有而且只能有一个主函数,它的函数名为 main 。
⑸一个函数有两部分组成,第一部分称为 函数首部 ;第二部分称为 函数体 。
⑹函数体由符号 { 开始,用符号 } 结束。
函数体的前面是 声明 部分,其后是 执行 部分。
1.3上机编辑、调试、运行下列程序,发现错误,并改正之。
/*求1+2+3+……+10的和*/
#include
main()
{
intsum,n;
sum=0;n=1;
while(n<10)
{sum=sum+n;
n=n+1;
}
printf("sum=%d\n",sum);
}
第二章习题
2.1选择题
⑴在以下标识符中,(B)是合法的用户标识符。
A)a#bB)getchC)voidD)ab*
⑵不合法的八进制数是( B )。
INTXX=23%o
A)0B)028C)077D)01
⑶不合法的十六进制数是( A )。
0x
A)oxffB)0XabcC)0x11D)0x19
⑷以下选项中正确的整型常量是(B)。
A)12.B)-20C)1,000D)456
⑸以下选项中正确的实型常量是(D)。
A)0B)3.1415C)0.329×102D).871
⑹以下选项中不正确的实型常量是(B)。
A)2.607E-1B)0.8103e3C)-88.77D)871e-2
⑺以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子
的C语言表达式是(A)。
A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z
⑻在C语言中,字符型数据在内存中以(C)的形式存放。
A)原码B)补码C)ASCII码D)BCD码
⑼sizeof(float)是(C)。
A)一种函数调用B)一个不合法的表示形式C)一个整型表达式D)一个实型表达式
⑽表达式b=((241&15)&&('Z'|'a'))的值是(B)。
A)0B)1C)TRUED)FALSE
⑾若变量已正确定义并赋值,符合C语言语法的表达式是(B)。
A)a=a+7;B)a=7+b+c,a++C)int(13.4%4)D)a=a+7=c+b
⑿以下叙述中正确的是(A)。
A)a是实型变量,C语言允许进行a=10,因此可以这样说:
实型变量中允许存放整型值
B)在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式
C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值改变为0
D)已有a=3,b=5。
当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3
2.2填空题
⑴数学式子
cos2x·
写成C语言表达式是cos(x)*cos(x)*((a+b)/(a-b))。
⑵a是整型变量,能将a清零的表达式是a=0;能将a中的各二进制为均置成1的表达式是a=-1。
⑷若a,b和c均是int型变量,则执行下面表达式后,a值为6,b值为4,c值为2。
a=(b=4)+(c=2)
⑸经过下述赋值后,变量x的数据类型是int。
intx=2;
doubley;
y=(double)x;
⑹若x和n均是整型变量,且x和n的初值均为5,则执行下面表达式后,x值为10,n值为6。
x+=n++x=x+n++
⑺若有定义:
intb=7;floata=2.5,c=4.7;则下面表达式的值为5.5。
a+(int)(b/3*(int)(a+c)/2)%4
⑻若有定义:
intm=7,y=2;则执行下面表达式的值后,y值为-24。
y+=y-=m*=y
⑼表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的类型为int。
⑾条件“-1
⑿若x和a均是整型变量,则执行表达式①后的x值为12,执行表达式②后的x值为4。
1x=(a=4,6*2)
2x=a=4,6*2
⒀一个字节包含8个二进制位,在一个字节中能存放的最大(十进制)整数是,它的二进制数的形式是;最小(十进制)整数是,它的二进制数的形式是。
⒁当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是,它的二进制数的形式是;最小(十进制)整数是,它的二进制数的形式是。
2.3改错题
⑴#includestdio.h;
main()/*mainfunction*/
{
floatr,s;/*risradius,sisareaofcircular*/
r=5.0;
s=3.14159*r*r;
printf("%f\n",s);
⑵#includestdio.h
main()/*mainfunction*/
{
floata,b,c,v;/*a,b,caresides,visvolumeofcube*/
a=2.0;b=3.0;c=4.0
v=a*b*c;
printf("%f\n",v);
}
第三章习题
3.1什么是C语言的基本执行单位?
C语言的语句是如何分类的?
3.2C语言的流程控制语句有哪几种?
3.3结构程序设计的基本结构有哪几种?
3.4C语言的输入输出操作是由语句来实现的吗?
3.5顺序结构程序的特点是什么?
3.6输入下面的程序,观察运行结果。
#include
main()
{
floata1,a2;
doubleb1,b2;
a1=3141.59;a2=0.000001;
b1=3141.59;b2=0.000001;
printf("%f,%lf\n",a1+a2,b1+b2);
}
答案:
3141.590089,3141.590001
3.7输入下面的程序,观察运行结果。
#include
main()
{
charch;
intk;
ch='a';k=66;
printf("%c,%d,%x,%o,%d,%c",ch,ch,ch,ch,k,k);
}
答案:
a,97,61,141,66,B
3.8输入下面的程序,观察运行结果。
#include
main()
{
floatx;
doubley;
x=123.45678;
y=123.45678;
printf("%-4.2f,%-6.2e\n",x,y);
}
答案:
123.46,1.2e+02
3.9输入下面的程序,观察运行结果,并说明程序的功能(注意:
运行时输入大写字母)。
#include
main()
{
charc1,c2;
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}
答案:
A,65
a,97
该程序是将键盘输入的大写字母转换为对应的小写字母。
3.10编写程序:
求三个正整数(小于32767)的算术平均值。
main()
{inta,b,c;
floatd;
printf("\ninputa,b,c=");
scanf("%d,%d,%d",&a,&b,&c);
d=(a+b+c)/3.0;
printf("\nd=%f",d);
}
3.11编写程序:
已知圆的半径,求圆的周长和面积(要求半径值由键盘接受)。
main()
{intr;
floatl,s;
printf("\ninputr=");
scanf("%d",&r);
l=2*3.14159*r;
s=3.14159*r*r;
printf("\nL=%f\nS=%f",l,s);
}
3.12编写程序:
计算a+b2-6的值,其中:
a=4,b=3;
a=5,b=2;
a=2,b=8。
main()
{
floata,b,h;
printf("\ninputa,b=");
scanf("%f,%f",&a,&b);
h=a+b*b-6;
printf("\na=%f,b=%f\nh=%f",a,b,h);
}
第四章习题
4.1判断下列陈述的真假:
⑴在三种形式的if语句中,在if关键字之后均为表达式。
该表达式只能是逻辑表达式或关系表达式。
False
⑵在if语句中,关键字之后的表达式必须用括号括起来,并随后跟分号(;)。
False
⑶在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。
True
⑷条件运算符的结合方向是自右至左。
True
⑸switch语句中的case后面必须是整常量表达式,如整数常数、字符常量。
True
⑹当switch的整类型表达式的结果值与某一个case块的整常量表达式的值相等时,将转至该case块,并且执行该case与下一个case之间的所有语句。
False
⑺可以使用goout语句跳出switch语句。
False
⑻else总是与它前面最近的if配对。
True
4.2阅读下面的程序,说明程序的运行结果。
#include
main()
{
intx=10,y=20,t;
if(x!
=y)
{
t=x;
x=y;
y=t;
}
printf("%d,%d\n",x,y);
}
答案:
20,10
4.3输入下面的程序,观察运行结果并说明程序的功能。
#include
main()
{
intx=20;
if(x>=0)
if(x<50)
printf("xisok\n");
else
printf("xisnotok\n");
}
答案:
xisok
4.6编写程序:
从键盘输入三个正整数,按由大到小的顺序输出。
/*4.6题。
从键盘输入3个数按由小到大排序*/
main()
{inta,b,c,t;
printf("inputa,b,c=:
");
scanf("%d%d%d",&a,&b,&c);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}
printf("%5d%5d%5d",a,b,c);
}
4.7编写程序:
从键盘输入一个正整数,判断它是否既能被3整除,又能被7整除。
main()
{intk;
scanf("%d",&k);
if(k%3==0&&k%7=0)
printf("\nyes");
else
printf("\nno");
}
#include
main()
{
intx;
scanf("%d",&x);
if(x%3==0)
{if(x%7==0)
printf("333333-777777");
else
printf("333333-no7");
}
else
{if(x%7==0)
printf("no3-7777777");
else
printf("no3no7");
}
}
4.8编写程序:
求函数:
X+5(X>=0)
y=
X-5(X<0)
的值。
main()
{intx,y;
scanf("%d",&x);
if(x>=0)
y=x+5;
else
y=x-5;
printf("y=%d",y);
}
习题
5.1试比较三种循环语句的异同。
5.2选择题:
⑴下面关于for循环的正确描述是(D)。
A)for循环只能循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断终止条件
C)在for循环中,不能用break语句跳出循环体
D)在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
⑵对for(表达式1;;表达式3)可以理解为(B)。
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
⑶若有“intm;”,则以下循环执行次数是(B)。
for(m=2;m==0;)
A)无限次B)0次C)1次D)2次
⑷下面不是死循环的是(A)。
A)for(y=0,x=1;x>++y;x=i++)i=x;
B)for(;;x=++1);
C)while
(1){x++;}
D)for(i=10;;i--)sum+=i;
⑸下面程序段的运行结果是(B)。
for(i=0;i<5;i++)
{
if(i==2)continue;
printf("%d",i);
}
A)01B)0134C)01234D)不打印
⑹下面程序段的运行结果是(C)。
intk=10;
while(k=0)k=k-1;
A)while循环执行10次B)循环是无限循环
C)循环体语句一次也不执行D)循环体语句执行一次
⑺执行语句“for(n=1;n++<4;);”后变量n的值是(C)。
A)3B)4C)5D)不定
⑻以下正确的描述是(B)。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句和continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
5.3写出下列程序的运行结果
⑴
main()
{
inti=0,a=0;
while(i<20)
{
for(;;)
if(i%10==0)break;
elsei--;
i+=11;a+=i;
}
printf("%d\n",a);
}
答案:
32
⑵
main()
{
inti,j,b=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
if(j>=i)b++;
printf("%d\n",b);
}
答案:
3
5.4下面程序的功能是从键盘输入10个无序的整数,去掉最大数和最小数,然后求其平均值。
请填空。
main()
{
intj,x,max,min,sum;
fioatave;
printf("Enter10number:
\n");
scanf("%d",&x);
sum=max=min=x;
for(j=2;j<=10;j++)
{
scanf(“%d”,&x);
sum+=x;
if(x>max)max=x;
elseif(x } sum=sum-max-min; ave=sum/8.0; print("Theaverageis%.2f\n",ave); } 5.5编程计算1~100之间是7的倍数的数值之和。 #include main() {inti,s=0; for(i=0;i<=100;i++) if(i%7==0) s+=i; printf("\ns=%d",s); } 5.6编写程序,利用下面公式求π的近似值: π2/6=1/12+1/22+1/32+1/42+…,直到某项绝对值不大于10-12为止。 #include #include main() {longn=1; floatx,sum=0; x=1.0/(n*n); while(x>=1e-12) {sum=sum+x; n++; x=1.0/(n*n); } sum=sqrt(sum*6); printf("\nPI=%f,n=%ld",sum,n-1); } /*5-6题。 得用下面公式求π值。 π2/6=1/12+1/22+……直到某项绝对值不大于 10-12为止*/ #include #include main() {floatpi=0,t=1,n=1; while(fabs(t)>1e-12) {pi+=t; n=n+1; t=1/(n*n); } pi=sqrt(pi*6); printf("pi=%10.2f",pi); } 5.7计算键盘输入的字符数。 (提示: 用getchar()) #include #include main() {charc; intn=0; c=getchar(); while(c! ='\n') {n++; c=getchar(); } printf("n=%d",n); } #include main() {charc; intchgs=0; printf("Enteronelinechar: \n"); while(c=getchar()! ='\n') { chgs++; } printf("chgs=%d\n",chgs); } 5.8用1元人民币兑换1分、2分、5分的硬币,编程计算共有多少种不同的兑换方法。 #include main() {intx,y,z; for(x=0;x<=20;x++) {for(y=0;y<=50;y++) {z=100-x*5-2*y; if(z>0) printf("\nx=%d\ty=%d\tz=%d",x,y,z); } } } #include #include main() { intg,k,s,fa=0; for(g=1;g<=93;g++) for(k=1;k<=47;k++) {s=(100-g-2*k)/5; if(g+2*k+5*s==100) fa=fa+1; } printf("\nfa=%d\n",fa); } 5.9编程求出1000以内的所有完全数。 若一个数恰好等于它的因子之和(除自身外),则称该数为完全数,例如: 6=1+2+3,故6是完全数。 #include main() {inti,j,s=0; for(i=1;i<=1000;i++) {s=0; for(j=1;j if(i%j==0)s+=j; if(s==i)printf("\n%4d",i); } } #include main() {intm,s,i; for(m=2;m<=1000;m++) {s=0; for(i=1;i if((m%i)==0)s=s+i; if(s==m) {printf("%dyes,factorsare",m); for(i=1;i if(m%i==0)printf("%d,",i); printf("\n"); } } } main() {intk[1000]; inti,a,n,s; for(a=2;a<=1000;a++) {n=0; s=a;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 习题 答案