《C语言程序的设计习题与上机的指南》答案.docx
- 文档编号:29135479
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:148
- 大小:66.35KB
《C语言程序的设计习题与上机的指南》答案.docx
《《C语言程序的设计习题与上机的指南》答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序的设计习题与上机的指南》答案.docx(148页珍藏版)》请在冰豆网上搜索。
《C语言程序的设计习题与上机的指南》答案
第一部分习题篇
第一章C语言概述
一.单选题
1.以下说法中正确的是(C)。
A)C语言程序总是从第一个函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言中的main()函数必须放在程序的开始部分
2.一个C语言程序是由(B)。
A)一个主程序和若干子程序组成B)函数组成
C)若干过程组成D)若干子程序组成
3.C语言规定,在一个源程序中,main函数的位置(C)。
A)必须在最开始B)必须在系统调用的库函数的后面
C)可以任意D)必须在最后
4.以下叙述不正确的是(D)。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释只能位于一条语句的后面
5.下列关于C语言的说法不正确的是(D)。
A)C语言既有高级语言的功能,也具有低级语言的一些功能
B)C语言中的一条执行语句都必须用分号结束
C)注释可以出现在程序中任意合适的地方
D)include命令行后面必须加分号
6.用C语言编写的代码程序(B)。
A)可以立即执行B)是一个源程序
C)经过编译即可执行D)经过编译解释才能执行
7.用高级语言(如C语言)编写的程序称为(A)
A)源程序B)目标程序C)可执行程序D)编译程序
8.一个函数的组成有(A)。
A)函数首部和函数体B)函数名和函数的声明部分
C)主函数和子函数D)声明部分和执行部分
9.在C语言中,用来表示“取地址”的符号是(B)。
A)#B)&C)*D)@
10.C语言是计算机高级语言,它适合于作为系统描述语言,它(A)。
A)既可用来写系统软件,也可用来写应用软件
B)只能写系统软件,不能用来写应用软件
C)不能写系统软件,只能用来写应用软件
D)既不能写系统软件,也不能写应用软件
二.填空题
1.C语言用函数作为程序的模块单位,便于实现程序的模块化。
2.C语言允许直接访问物理地址,能进行位操作。
3.用C语言编写的程序,每一个语句和数据定义的结尾必须要有一个分号。
4.每个C程序中必须有一个main()函数。
5.C程序中的函数体由{}括起来。
6.C程序中的“\n”表示在程序运行中换行。
7.C程序中,“/*……*/”表示注释部分。
8.C程序中,一个函数由函数首部和函数体组成。
9.一个C程序总是从main()函数开始执行的,不论该函数在整个程序中的位置如何。
10.在纸上编好一个C源程序后,要经过编辑、编译、连接、运行这几个步骤进行上机运行。
三.判断题
1.C语言不具有低级语言的特性。
(错)
2.C语言之所以也被称为中级语言,是因为它比高级语言的功能要少,而比低级语言的功能多。
(错)
3.C语言与其他高级语言一样具有结构化的控制语句。
(对)
4.C语言允许直接访问物理地址。
(对)
5.每一个C程序必须有一个main函数。
(对)
6.C程序的语句最后应有一个分号。
(对)
7.C程序中的main函数必须放在整个程序的最前头。
(错)
8.计算机高级语言对源程序进行翻译有两种方式:
编译和解释。
(对)
四.编程题
1.编写一个C程序,输出以下信息:
************
Iamastudent.
************
#include
voidmain()
{
printf(“***********\n”);/*\n的作用相当于回车*/
printf(“Iamastudent.\n”);
printf(“***********\n”);
}
2.编写一个C程序,输入a、b两个数,输出其的数。
(只用一个主函数)
#include
voidmain()
{
inta,b;
printf(“Pleaseinputa,b:
\n”);
scanf(“%d,%d”,&a,&b);/*注意输入两个数之间用逗号分隔*/
if(a>b)
printf(“%d”,a);
else
printf(“%d”,b);
}
3.编写一个C程序,输入a、b、c三个数,输出其中最大数。
(只用一个主函数)
#include
voidmain()
{
inta,b,c,max;
printf(“Pleaseinputa,b,c:
\n”);
scanf(“%d,%d,%d”,&a,&b,&c);
max=a;
if(a
if(max printf(“Thelargestnumberis%d”,max); } 第二章数据与运算 一.单选题 1.C语言中最简单的数据类型包括(B)。 A)整型、实型、逻辑型B)整型、实型、字符型 C)整型、字符型、逻辑型D)字符型、实型、逻辑型 2.C语言中运算对象必须是整型的运算符是(D)。 A)*B)/C)=D)% 3.在C程序中,以下不正确的叙述是(D)。 A)逗号运算符的优先级最低 B)ABC和abc是两个不同的变量 C)若a和b类型相同,在执行了赋值表达式a=b后,b中的值将放入a中,而b的值不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数据 4.设有intx=8,表达式x++*1/3的值是(A)。 A)2B)3C)8D)9 5.若m,x,y,z都是整型变量,则计算表达式m=(x=5,y=10,z=25)执行后,m的值为(C)。 A)5B)10C)25D)40 6.设变量i是int类型,f是float型,d是double型,执行表达式5+’i’-f*d,其结果的数据类型为(B)。 A)int型B)double型C)float型D)非法表达式 7.设变量i是int类型,执行语句i=’A’+2.5后,正确的叙述是(C)。 A)i的值是字符DB)i的值是字符A的ASCII值加上2.5 C)i的值是字符A的ASCII值加上2D)非法表达式 8.下列是用户自定义标识符的是(B)。 A)intB)_xyC)2xyD)3-xy 9.下面与x=y++完全等价的表达式是(A)。 A)x=y,y=y+1B)x=x+1,y=xC)x=++yD)x+=y+1 10.已知各变量的类型说明如下: intk,a,b; longw=8; floatx=2.56; 以下不符合C语言语法的表达式是(A)。 A)x%5B)w-=5C)k=(a=8,b=6,a-b)D)a+=a-=(b=2)*(a=5) 11.运行以下程序段时编译出错,其原因是(D)。 charc1='a',c2='123'; printf("%c,%d\n",c1,c2); A)字符串要用"123"表示B)'123'只能赋值给字符数组 C)c2是字符变量,不能用%d格式输出D)c2是字符变量,只能赋以字符常量 12.若定义floata;,现要从键盘输入a数据,其整数位为3位,小数位为2位,则选用(A)。 A)scanf("%6f",&a);B)scanf("%5.2f",a); C)scanf("%6.2f",&a);D)scanf("%f",a); 13.若定义doublet;,则表达式t=1,t+5,++t的值为(B)。 A)1.0B)2.0C)6.0D)7.0 14.已知各变量的类型说明如下,则C语言中错误的表达式是(A)。 intk,a,b; unsignedlongw=5; doublex=1.42; A)x%(-3)B)w+=2 C)k=(a=2,b=3,a+b)D)a+=a-=(b=4*(a=3)) 15.以下程序段的运行结果是(C)。 inta=0,b=0,c=0; if(a&&++b)c++; printf("%d,%d\n",b,c); A)1,1B)1,0C)0,0D)0,1 二.填空题 1.在C语言中,一个float型数据在在中所占的字节数为4,一个double型数据在在中所占的字节数是8。 2.下面程序的输出结果是28。 main() { inta=2,b=3,c=4; a*=16+(b++)-(++c); printf(“%d”,a); } 3.下面程序的输出结果是5。 main() { intx=17,y=26; printf(“%d”,y/=(x%=6)); } 4.执行下面程序段后,c3中的值是0。 intc1=1,c2=2,c3; c3=1.0/c2*c1; 5.进行下列变量定义后,表达式a*b+d-c的类型是double。 chara; intb; floatc; doubled; 6.下面程序的输出结果是8,10。 main() { intx=010,y=10; printf(“%d,%d\n”,x,y); } 7.下面程序的输出结果是12。 main() { intx=3,y=5; printf(“%d\n”,x=(x--)*(--y)); } 8.已知字母A的ASCII码是十进制数65,设c为字符型变量,则表达式c=’A’+’5’-’2’的值为D或68。 9.下面程序的输出结果是52。 main() { intx=065; printf(“%d\n”,--x);/ } 10.下面程序的输出结果是25,21,37。 main() { inta,b,c; a=25; b=025; c=0x25 printf(“%d,%d,%d\n”,a,b,c); } 11.下面程序的输出结果是48。 main() { intx=0110; printf(“%x\n”,x); } 12.下面程序的输出结果是20200.000000。 main() { charc; intn=100; floatf=10; doublex; x=f*=n/=(c=5); printf(“%d%f\n”,n,x); } 13.写出下面程序的运行结果。 (请用∪表示空格) main() { charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’; printf(“a%c∪b%c\tc%c\tabc\n”,c1,c2,c3); printf(“\t\b%c∪%c\n”,c4,c5); } 程序的运行结果是: aa∪bb∪∪∪cc∪∪∪∪∪∪abc A∪N 14.下面程序的运行结果是9,11,9,10。 main() { inti,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d\n”,i,j,m,n); } 15.以下程序的运行结果是11.50。 #include voidmain() { inti=5,j=9; floatx=2.3,y=4.5; printf("%8.2f\n",i%(int)(x+y)*j/2/3+y); } 三.判断题 1.C语言中,字符常量可以用单引号或双引号括起来。 (错) 2.C语言中,字符常量只能包含一个常量(字符)。 (对) 3.在C语言中,字符串常量隐含处理成以‘\0’结尾。 (对) 4.下面程序段的输出结果是9。 (错) inta=9; printf(“%o\n”,a);(注意: %o中的o是字母o,不是数字0) 5.C语言中,用户所定义的标识符允许使用关键字。 (错) 6.C语言中,用户所定义的标识符中,大、小字母代表不同标识。 (对) 7.C语言中,符号常量的值在程序运行过程中可以改变。 (错) 8.C语言中,不要求对程序中所用到的变量进行强制定义。 (错) 9.C语言中,一个整数如果其值在-323768~32767围,认为它是int型,只能赋值给int型变量。 (错) 10.设一个C系统的float型有效数字是7位,则超过7位数的运算是不准确的。 (对) 四.计算题 1.求下面表达式的值。 1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7 第1步: (int)(x+y)=(int)(7.2)=7 第2步: a%3*7%2/4=7%3*7%2/4=1*7%2/4=1/4=0 第3步: x+0=x=2.5(计算机显示为2.500000) 2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5 第1步: (float)(a+b)/2=(float)(2+3)/2=(float)(5)/2=5.0/2=2.5 第2步: (int)x%(int)y=(int)(3.5)%(int)(2.5)=3%2=1 第3步: 2.5+1=3.5(计算机显示为3.500000) 2.写出下面赋值表达式运算后a的值,设原来a=12,n=5。 1)a+=aa=a+a=12+12=24 2)a-=2a=a-2=12-2=10 3)a*=2+3a=a*(2+3)=12*5=60 4)a/=a+aa=a/(a+a)=12/24=0注意a是整型 5)a%=(n%=2)已知: n=5a=0 6)a+=a-=a*=a从右向左解: a=a*a=144;a=a-a=0;a=a+a=0 五.编程题 1.要将“China”译成密码,规律是: 用原来的字母后面第4个字母代替原来的字母。 例如,“A”用字母“E”来替代。 因此,“China”应译为“Glmre”。 编程: 用赋初值的方法使c1.c2.c3.c4.c5这五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,这五个变量分别变为‘G’、‘l’、‘m’、‘r’、‘e’,并输出。 #include voidmain() { charc1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’; c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4; printf(“passwordis%c%c%c%c%c\n”,c1,c2,c3,c4,c5); } 运行结果: passwordisGlmre 也可以用循环和数组: #include voidmain() { charc[]={“China”}; printf(“passwordis“); for(inti=0;i<=4,i++) printf(“%c”,c[i]+=4); printf(“\n”); } 2.请编程,要求用赋初值的方法使c1.c2这两个变量的值分别为97和98,然后分别按整型和字符型输出。 #include voidmain() { charc1=97,c2=98; printf(“%d,%d\n”,c1,c2); printf(“%c,%c\n”,c1,c2); } 3.编写程序,从键盘输入三个单精度数a、b、c,计算总和、平均值、x=a2+b2+c2的值,并计算x平方根的值。 所有运行数据保留三位小数,第四位四舍五入。 #include #include voidmain() { doublea,b,c,total,average,square,squareroot; printf("请输入三个单精度实数: "); scanf("%f%f%f",&a,&b,&c); total=a+b+c; average=total/3.0; square=a*a+b*b+c*c; squareroot=sqrt(square); printf("三个数的和=%-15.3f,三个数的平均值=%-15.3f\n",total,average); printf("三个数的平方和x=%.3f,x的平方根=%.3f\n",square,squareroot); } 运行结果: 请输入三个单精度实数: 1.234.567.89 三个数的和=13.680,三个数的平均值=4.560 三个数的平方和x=84.559,x的平方根=9.196 4.输入三角形的三个边长,计算并输出三角形的面积。 #include #include voidmain() { floata,b,c,k,area; printf("请输入三角形三条边的边长: "); scanf("%f%f%f",&a,&b,&c); if((a+b<=c)||(a+c<=b)||(b+c<=a)) printf("您输入的三条边无法构成三角形。 \n"); else { k=(a+b+c)/2; area=sqrt(k*(k-a)*(k-b)*(k-c));/*函数sqrt(x)是求x的平方根*/ printf("该三角形的面积是%6.2f\n",area); } } 5.输入两个长整型数,输出它们(整数除的)商和余数。 #include voidmain() { longa1,a2,a3,a4; printf("请输入两个整数: "); scanf("%ld%ld",&a1,&a2); a3=a1/a2; a4=a1%a2; printf("两数进行整数除的商是%ld,余数是%ld\n",a3,a4); } 运行结果: 请输入两个整数: 654321789 两数进行整数除的商是829,余数是240 6.输入两个整数,输出它们(实数除)的商,并输出商的第二位小数位(例如: 15/8.0=1.875,1.875的第二位小数位是7)。 #include voidmain() { inta,b,c; floatf; printf("请输入两个整数: "); scanf("%d%d",&a,&b); f=1.0*a/b; c=(int)(f*100)%10; printf("两数进行实数除,商是%f,商的第二位小数位是%d\n",f,c); } 运行结果: 请输入两个整数: 158 两数进行实数除,商是1.875000,商的第二位小数位是7 7.输入一个(unsigned类型)无符号整数,分别输出它的低四位和高四位。 #include voidmain() { unsignedu,high4,low4; printf("请输入一个无符号整数: "); scanf("%u",&u); low4=(u&0xf);/*u的低四位保留原值,其余位置0*/ high4=(u&0xf000)>>12;/*u的高四位保留原值,其余位置0,并右移12位*/ printf("%u的十六进制是%x\n",u,u); printf("十六进制表示%u的低四位是%x,高四位是%x\n",u,low4,high4); } 运行结果: 请输入一个无符号整数: 54332 54332的十六进制是d43c 十六进制表示54332的低四位是c,高四位是d 8.输入两个小写字母分别赋值给字符变量ch1与ch2,将它们转换成大写字母,并交换ch1与ch2的值,最后输出ch1与ch2的值。 #include voidmain() { charc1,c2,t; printf("请输入两个半角的小写英文字母: "); c1=getchar(); c2=getchar(); c1-=32; c2-='a'-'A';/*与32等价*/ t=c1; c1=c2; c2=t; printf("%c%c\n",c1,c2); } 运行结果: 请输入两个半角的小写英文字母: db BD 9.输入秒数,将它转换,用小时、分钟、秒来表示。 例如输入7278秒,则输出: 2小时1分18秒。 #include voidmain() { intk; inthour,minute,second; printf("请输入秒数: "); scanf("%d",&k); hour=k/3600; k%=3600; minute=k/60; second=k%60; printf("%d小时%d分钟%d秒。 \n",hour,minute,second); } 运行结果: 请输入秒数: 7278 2小时1分钟18秒。 10.输入两个复数的实部和虚部,输出这两个复数积的实部和虚部。 两复数的积按下面的公式计算: (a+bi)·(c+di)=(ac-bd)+(ad+bc)i。 #include voidmain() { floata,b,c,d,real,imag; printf("请输入第一个数的实部和虚部: "); scanf("%f%f",&a,&b); printf("请输入第二个数的实部和虚部: "); scanf("%f%f",&c,&d); real=a*c-b*d; imag=a*d+b*c; printf("两个复数积的实部和虚部分别是%f,%f\n",real,imag); } 运行结果: 请输入第一个数的实部和虚部: 1.12.2 请输入第二个数的实部和虚部: 3.34.4 两个复数积的实部和虚部分别是-6.050000,12.100000 第三章C程序的基本控制结构 一.单选题 1.若变量已经正确定义为float型,要通过语句scanf(“%f%f%f”,&a,&b,&c)。 给a输入10.0,n输入20.0,c输入30.0,下列不正确的输入形式是(B)。 A)10<回车>20<回车>30<回车>B)10.0,20.0,30.0<回车> C)10.0<回车>20.030.0<回车>D)1020<回车>30<回车> 2.若有说明语句: charc=’65’;则变量c(D)。 A)包含1个字符B)包含2个字符 C)包含3个字符D)说明不合法,c的值不确定 3.若w=1,x=2,y=3,z=4,则条件表达式w w: y y: z的值是(A)。 A)1B)2C)3D)4 4.x、y、z被定义为int型变量,若从键盘给它们输入数据,正确的输入语句是(B)。 A)inputx,y,z;B)scanf(“%d%d%d”,&x,&y,&z); C)scanf(“%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序的设计习题与上机的指南 语言 程序 设计 习题 上机 指南 答案