您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 《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.************#includestdio.h/*包含头文件,为了使用printf和scanf语句,注意句末无分号*/voidmain(){printf(“***********\n”);/*\n的作用相当于回车*/printf(“Iamastudent.\n”);printf(“***********\n”);}2.编写一个C程序,输入a、b两个数,输出其中大的数。(只用一个主函数)#includestdio.hvoidmain(){inta,b;printf(“Pleaseinputa,b:\n”);scanf(“%d,%d”,&a,&b);/*注意输入两个数之间用逗号分隔*/if(ab)printf(“%d”,a);elseprintf(“%d”,b);}3.编写一个C程序,输入a、b、c三个数,输出其中最大数。(只用一个主函数)#includestdio.hvoidmain(){inta,b,c,max;printf(“Pleaseinputa,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(ab)max=b;/*max用于保存a,b中比较大的数*/if(maxc)max=c;/*将a,b中较大的数再和c比较*/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)95.若m,x,y,z都是整型变量,则计算表达式m=(x=5,y=10,z=25)执行后,m的值为(C)。A)5B)10C)25D)406.设变量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.5C)i的值是字符A的ASCII值加上2D)非法表达式8.下列是用户自定义标识符的是(B)。A)intB)_xyC)2xyD)3-xy9.下面与x=y++完全等价的表达式是(A)。A)x=y,y=y+1B)x=x+1,y=xC)x=++yD)x+=y+110.已知各变量的类型说明如下: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.014.已知各变量的类型说明如下,则C语言中错误的表达式是(A)。intk,a,b;unsignedlongw=5;doublex=1.42;A)x%(-3)B)w+=2C)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=0x25printf(“%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∪∪∪∪∪∪abcA∪N14.下面程序的运行结果是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。#includestdio.hvoidmain(){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.写出下面赋值表达式
本文标题:《C语言程序设计习题与上机指南》答案
链接地址:https://www.777doc.com/doc-3375449 .html