《C语言程序设计》期末考试试卷(答案卷)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章C语言概述第2章程序的灵魂----算法
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)
2.1以下叙述中正确的是
A)C语言比其他语言高级
B)C语言可以不用编译就能被计算机识别执行
C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D)C语言出现的最晚,具有其他语言的一切优点
正确答案: C
2.2 以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
正确答案: A
2.3 以下说法正确的是
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
正确答案: C
2.4 C语言规定,在一个源程序中,main函数的位置
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
正确答案: C
2.5 以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
正确答案: D
2.6 下列叙述中正确的是
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言的函数可以嵌套调用
正确答案: D
2.7 以下叙述正确的是
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
正确答案: D
2.8 以下说法错误的是
A)一个算法应包含有限个步骤
B)在计算机上实现的算法是用来处理数据对象的
C)算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现
D)算法的目的是为了求解
正确答案: C
2.9 算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是
A)有零个输入或多个输入B)高效性C)有穷性D)确定性
正确答案: B
2.10 下列关于C语言的说法不正确的是
A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能
B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号
C)注释可以出现在程序中任意合适的地方
D)命令行后面不能加分号,命令行不是C语言的语句
正确答案: B
2.11 以下说法错误的是
A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式
B)计算机只能处理由0和1的代码构成的二进制指令或数据
C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件
D)每一种高级语言都有它对应的编译程序
正确答案: C
2.12 C语言中用于结构化程序设计的3种基本结构是
A)顺序结构、选择结构、循环结构B)if,switch,break C)for,while,do-while D)if,for,continue 正确答案: A
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)
2.13 用高级语言编写的程序称为【1】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。
正确答案: 源程序
2.14 C语言程序的注释可以出现在程序中的任何地方,一个注释以【2】作为开始和结束。
正确答案: /* */
第3章数据类型运算符与表达式
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)
3.1 C语言中最简单的数据类型包括
A)整型、实型、逻辑型
B)整型、实型、字符型
C)整型、字符型、逻辑型
D)字符型、实型、逻辑型
正确答案: B
3.2 C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母,数字和下划线中任一字符
正确答案: C
3.3 下列可用于C语言用户标识符的一组是
A)void, define, WORD
B)a3_b3, _123,Car
C)For, -abc, IF Case
D)2a, DO, sizeof
正确答案: B
3.4 下面四个选项中,均是不正确的8进制数或16进制数的选项是
A)016 0x8f 018 B)0abc 017 0xa C)010 -0x11 0x16 D)0a12 7ff -123
正确答案: D
3.5 下列数据中,不合法的C语言实型数据的是
A)0.123 B)123e3 C)2.1e3.5 D)789.0
正确答案: C
3.6 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是
A)a=20000+20000; B)a=4000*10; C)a=30000+10000; D)a=4000L*10L;
正确答案: D
3.7 若有说明语句:char c='\72';则变量c
A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定正确答案: A
3.8 有字符串如下,"\n\\\407as1\"\xabc",则字符串的长度为
A)6 B)7 C)8 D)9
正确答案: D
3.9 C语言中运算对象必须是整型的运算符是
A)%= B)/ C)= D)<=
正确答案: A
3.10 若变量已正确定义并赋值,以下符合C语言语法的表达式是
A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b
正确答案: B
3.11 若变量a,i已正确定义,且i已正确赋值,合法的语句是
A)a= =1 B)++i;C)a=a++=5;D)a=int(i);
正确答案: B
3.12 若有定义:int a=7;float x=2.5,y=
4.7;则表达式x+a%3*(int)(x+y)%2/4的值是
A)2.500000 B)2.750000 C)3.500000 D)0.000000
正确答案: A
3.13 若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是
A)sizeof,&=,<<<,^,&= C)^,<<,sizeof,&= D)<<,^,&=,sizeof
正确答案: B
3.14 以下不正确的叙述是
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
正确答案: D
3.15 已知int i,a;执行语句i=(a=3,a++,- -a,a+4,a+5,++a);后,变量i的值为
A)2 B)3 C)4 D)5
正确答案: C
3.16 设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为A)int B)float C)double D)不确定
正确答案: C
3.17 在C语言中,char型数据在内存中的存储形式是
A)补码B)反码C)原码D)ASCII码
正确答案: D
3.18 字符型数据在机器中是用ASCII码表示的,字符’5’和’7’在机器中表示为
A)10100011和01110111
B)01000101和01100011
C)00110101和00110111
D)01100101和01100111
正确答案: C
3.19 不能进行++和- -运算的数据类型为
A)指针B)整型C)长整型D)常量
正确答案: D
3.20 设有int x=11;则表达式(x++*1/3)的值是
A)3 B)4 C)11 D)12
正确答案: A
3.21 以下程序的输出结果是main(){ int a=21,b=11; printf("%d\n",- -a+b,- -b+a); } A)30 B)31 C)32 D)33
正确答案: A
3.22 假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为
A)17 B)16 C)15 D)14
正确答案: C
3.23 已知int a=6; 则执行a+=a-=a*a;语句后,a的值为
A)36 B)0 C)-24 D)-60
正确答案: D
3.24 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是
A)n=(n*100+0.5)/100.0
B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0
D)n=(n/100+0.5)*100.0
正确答案: B
3.25 sizeof(float)是
A)一个双精度型表达式B)一个整型表达式C)一种函数调用D)一个不合法的表达式正确答案: B
3.26 在C语言中,int,char和short三种类型数据在内存中所占用的字节数
A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定
正确答案: D
3.27 以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C 语言表达式是
A)x/y*z B)x*(1/(y*z))C)x/y*1/z D)x/y/z
正确答案: A
3.28 下列关于复合语句和空语句的说法错误的是
A)复合语句是由“{”开头,由“}”结尾的
B)复合语句在语法上视为一条语句
C)复合语句内,可以有执行语句,不可以有定义语句部分
D)C程序中的所有语句都必须由一个分号作为结束
正确答案: C
3.29 下列关于字符串的说法中错误的是
A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志
B)′\0′作为标志占用存储空间,计入串的实际长度
C)在表示字符串常量的时候不需要人为在其末尾加入′\0′
D)在C语言中,字符串常量隐含处理成以′\0′结尾
正确答案: B
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
) 3.30 以下程序的输出结果是【1】。
int a=1234; printf ("%2d\n",a);正确答案: 1234 3.31 在计算机中,字符的比较是对它们的【2】进行比较。
正确答案: ASCII码 3.32 在内存中,存储字符′x′要占用1个字节,存储字符串″X″要占用【3】个字节。
正确答案: 2 3.33 在C语言中(以16位PC 机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【4】。
正确答案: 8 3.34 以下程序段的输出结果是【5】。
main (){int a=2,b=3,c=4; a*=16+(b++)-(++c); printf("%d",a); } 正确答案: 28 3.35 以下程序段的输出结果是【6】。
int x=17,y=26; printf ("%d",y/=(x%=6)); 正确答案: 5 3.36 下列y的值是【7】。
int y; y=sizeof(2.25*4);正确答案: 8 3.37 以下程序的输出结果是【8】。
main (){int i=010,j=10;pirntf ("%d,%d\n",i,j); } 正确答案: 8,10 3.38 已知字母a 的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为【9】。
正确答案: f 3.39 如下语句printf("%c\n",′B′+40);在执行后的输出结果是【10】。
正确答案: j 3.40 定义int a=5,b=20;若执行语句printf("%d\n",++a*- -b/5%13);后,输出的结果为【11】。
正确答案: 9 第4章顺序程序设计2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 6/73 一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)4.1 若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是A)102233 B)10.0,22.0,33.0 C)10.022.0 33.0 D)10 2233 正确答案: B 4.2 现有以下程序段#include main(){ int a,b,c; scanf ("a=%*d%d,b=%d%*d,c=%d",&a,&b,&c); printf("a=%d,b=%d,c=%d\n",a,b,c); } 若输出的结果为a=20,b=30,c=40,则以下能够正确输入数据的是A)a=10]20,b=20]30,c=40 B)20,30,40 C)a=20,b=30,c=40 D)a=10]20,b=30]20,c=40 [注]: “]”表示空格,表示回车正确答案: D 4.3 x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是A)INPUT x、y、z; B)scanf("%d%d%d",&x,&y,&z); C)scanf("%d%d%d",x,y,z); D)read("%d%d%d",&x,&y,&z); 正确答案: B 4.4 已有定义int a=-2;和输出语句printf
("%8lx",a);以下正确的叙述是A)整型变量的输出形式只有%d一种B)%x是格式符的一种,它可以适用于任何一种类型的数据C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度正确答案: D 4.5 下列程序段的输出结果是:int a=1234; float b=123.456; double c=12345.54321; printf("%2d,%2.1f,%2.1f",a,b,c); A)无输出B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5 正确答案: C 4.6 执行下列程序时输入:123456789 输出结果是main(){ char s[100]; int c, i; scanf("%c",&c); scanf("%d",&i); scanf("%s",s); printf("%c,%d,%s \n",c,i,s);} A)123,456,789 B)1,456,789 C)1,23,456,789 D)1,23,456 正确答案: D 4.7 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf ("***a=%d,b=%d,c=%d \n",a,b,c ):printf ("###a=%d,b=%d,c=%d \n" ,a,b,c);程序输出的结果是A)***a=25,b=13,c=19 B)***a=26,b=14,c=19 C)### a=25,b=13,c=19 D)### a=26,b=14,c=19 正确答案: C 4.8 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n")); A)5 B)14 C)8 D)输出项不合法,无正常输出2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 7/73 正确答案: A 4.9 下列程序的输出结果是main(){ double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d\n", d*y); } A)3 B)3.2 C)0 D)3.07 正确答案: C 4.10 调用gets和puts函数时,必须包含的头文件是A)stdio.h B)stdlib.h C)define D)以上都不对正确答案: A 4.11 阅读下面程序段#include "stdio.h" main(){ char c; c=(′z′-′a′)/2+′A′; putchar(c);} 输出结果为A)M B)N C)O D)Q 正确答案: A 二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)4.12 下列程序的输出结果是16.00,请填空。
main(){int a=9, b=2; float x=【1】, y=1.1,z; z=a/2+b*x/y+1/2; printf("%5.2f\n", z ); } 正确答案: 6.6 4.13 在使用putchar和getchar函数处理字符时,必须在程序的开头出现包含头文件的命令行是【2】。
正确答案: #include 4.14 下列程序的输出结果是【3】,【4】。
#include main(){ float a=-1.3;b=1.3; printf ("%f,%f",fabs(a),fabs(b);} 正确答案: 1.300 000 正确答案: 1.300 000 4.15 执行程序时的输入为123456789,则程序的运行结果为【5】。
#include "stdio.h" main(){ int a,b; scanf ("%2d%*2d%1d",&a,&b); printf("%d\n",a-b);} 正确答案: 7 第5章选择结构程序设计一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
) 5.1 在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。
在求逻辑值时,用2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 8/73 ()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。
A)1 0 B)0 1 C)非0 非0 D)1 1 正确答案: A 5.2 已知int x=6,y=2,z;则执行表达式z=x=x>y后,变量z的值为A)0 B)1 C)4 D)5 正确答案: B 5.3 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 正确答案: D 5.4 若变量c为char类型,能正确判断出c为小写字母的表达式是A)′a′<=c<=′z′ B)(c>=′a′)||(c<=′z′)C)(′a′<=c)and (′z′>=c)D)(c>=′a′)&&(c<=′z′)正确答案: D 5.5 设int x=1,y=1;表达式(!x||y- -)的值是A)0 B)1 C)2 D)-1 正确答案: B 5.6 有如下程序段int a=14,b=15,x; c har c=′A′; x=(a&&b)&&(cb)&&(n=c>d)后n的值是A)1 B)2 C)3 D)4 正确答案: B 5.9 已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z;后,表达式x+y的值为A)1 B)2 C)3 D)4 正确答案: C 5.10 表达式a<b||(c&d)中运算符优先级最高的是A)|| B)& C)< D)()正确答案: D 5.11 若运行时给变量x输入12,则以下程序的运行结果是main (){int x,y; scanf("%d",&x); y=x>12?x+10:x-12; printf("%d\n",y); } A)0 B)22 C)12 D)10 2016/6/6 c语言程序设计——单元习题
/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 9/73 正确答案: A 5.12 已知char ch=′C′;则以下表达式的值是ch=(ch>=′A′&& ch<=′Z′)?(ch+32):ch; A)A B)a C)Z D)c 正确答案: D 5.13 若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是A)(exp==0)B)(exp!=0)C)(exp==1)D)(exp!=1)正确答案: B 5.14 有以下程序main(){int i=1,j=1,k=2; if((j++||k++)&&i++)printf("%d,%d,%d\n",i,j,k); } 执行后输出结果是A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 正确答案: C 5.15 请阅读以下程序:main(){ int a=5,b=0,c=0; if(a=b+c)printf("***\n"); else printf("$$$\n"); } 以上程序A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出*** D)输出$$$正确答案: D 5.16 若执行下述程序时,若从键盘输入6和8时,结果为main(){int a,b,s; scanf("%d%d",&a,&b); s=a; if(a30?b:c; switch(d){ case 30 : printf("%d,",a); case 40 : printf("%d,",b); case 50 : printf("%d,",c); default : printf("#");}} 则输出的结果是A)40,50, B)50,# C)40,# D)40,50,# 正确答案: D 5.21 现有如下程序段,此程序段编译有错误,则程序段的错误出在#include main(){ int a=30,b=40,c=50,d; d=a>30?b:c; switch(d){ case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c); default:printf("#");}} A)default:printf("#");这个语句B)d=a>30?b:c;这个语句C)case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);这三个语句D)switch(d)这个语句正确答案: C 二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)5.22 设y是int型,请写出y为奇数的关系表达式【1】。
正确答案: (y%2)==1 或(y%2)!=0 5.23 设int a=5,b=6,表达式(++a= =b- -)?++a:--b的值是【2】。
正确答案: 7 5.24 将以下程序写成三目运算表达式是【3】。
if(a>b)max=a; else max=b; 正确答案: max=(a>b)?a:b; 5.25 以下程序输出的结果是【4】。
main(){ int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } 正确答案: 0 2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 11/73 5.26 若从键盘输入58,则以下程序输出的结果是【5】。
main(){int a; scanf("%d",&a); if(a>50)printf("%d",a); if (a>40)printf("%d",a); if(a>30)printf("%d",a); } 正确答案: 585858 5.27 阅读下面语句,则程序的执行结果是【6】。
#include "stdio.h" main(){ int a=-1,b=1,k; if((++a<0)&&!(b- -<=0))printf("%d,%d\n",a,b); else printf("%d,%d\n",b,a);} 正确答案: 1,0 5.28 阅读下面程序,则在执行时候的输出为【7】。
#include "stdio.h" main(){int x=1,y=2,z=0; if(x=2)z=x,x=y,y=z; printf("%d,%d\n",x,y);} 正确答案: 2,2 5.29 以下程序的输出结果是【8】。
main(){ int x=100, a=10, b=20, ok1=5, ok2=0; if(a100)break; } B)for(;;); C)int k=10000; do{k++;}while(k>10000); D)int s=36;while(s)--s; 正确答案: D 6.3 下面有关for循环的正确描述是A)for循环只能用于循环次数已经确定的情况B)for循环是先执行循环体语句,后判断表达式C)在for循环中,不能用break语句跳出循环体D)for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来正确答案: D 6.4 若int i,j;,则for(i=j=0;i<10&&j8;b=++k)printf("%d,%d,",a- -,- -b); printf("\n");} A)10,10,10,0, B)10,9,9,0, C)10,10,9,1, D)9,9,9,1, 考生答案: 正确答案: B 6.6 有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。
下面程序是求这堆零件总数,请选择填空。
#include main(){ int i; for(i=100;i2;m- -){ k=0; for(n=m;n>1;n- -)k=k+m*n; } printf ("%f\n",k); } A)5.000000 B)15.000000 C)25.000000 D)35.000000 正确答案: B 6.10 下面程序的运行结果是#include "stdio.h" main(){ int j,i,k=0; for(j=50;j<=60;j++){ if(!(k%10))printf("\n"); for(i=2;i=j-1){ printf("%d",j); k++; } } } A)5359 B)5953 C)3595 D)9535 正确答案: A 6.11 已知int t=0;while(t=1){...} 则以下叙述正确的是A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法D)
以上说法都不对正确答案: B 6.12 设有以下程序段int x=0,s=0; while(!x!=0)s+=++x; printf ("%d",s); 则A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的D)程序段执行无限次正确答案: B 2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 14/73 6.13 下列程序的输出结果是#include "stdio.h" main(){ int i=6; while(i- -)printf("%d",- -i); printf("\n");} A)531 B)420 C)654321 D)死循环正确答案: B 6.14 对下Ⅰ,Ⅱ两个语句描述正确的是Ⅰ.while(1)Ⅱ.for(;;)A)都是无限循环B)Ⅰ是无限循环,Ⅱ错误C)Ⅰ循环一次,Ⅱ错误D)以上答案都错正确答案: A 6.15 以下程序段的描述,正确的是x=-1; do {x=x*x;} while(!x); A)是死循环B)循环执行两次C)循环执行一次D)有语法错误正确答案: C 6.16 若有如下语句int x=3; do{ printf("%d\n",x-=2);}while(!(- -x)); 则上面程序段A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环正确答案: B 6.17 下面程序的运行结果是#include main(){ int a=1,b=10; do { b-=a; a++; }while(b- -(表示回车),则下面程序的运行结果是#include main(){char c; int v0=1,v1=0,v2=0; do{switch (c=getchar()){case ′a′:case ′A′: case ′e′:case ′E′: case ′i′:case ′I′: case ′o′:case ′O′: case ′u′:case ′U′:v1+=1; default:v0+=1;v2+=1; } }while(c!=′\n′); printf("v0=%d,v1=%d,v2=%d \n",v0,v1,v2);} A)v0=7,v1=4,v2=7 B)v0=8,v1=4,v2=8 2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 15/73 C)v0=11,v1=4,v2=11 D)v0=13,v1=4,v2=12 正确答案: D 6.19 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。
#include main(){ int i=0,j,k; do{ i++; k=316-13*i; }while(______); j=k/11; printf("316=13*%d+11*%d",i,j); } A)k/11 B)k%11 C)k/11==0 D)k%11==0 正确答案: B 6.20 C语言中while 和do-while循环的主要区别是A)do-while的循环体至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件更严格C)do-while允许从外部转到循环体内D)do-while 的循环体不能是复合语句正确答案: A 6.21 下列说法中错误的是A)只能在循环体内使用break语句B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环C)在while和do…while 循环中,continue语句并没有使整个循环终止D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断正确答案: A 二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)6.22 设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【1】。
for(i=0, j=10; i<=j; i++, j- -)k=i+j; 正确答案: 10 6.23 下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。
main(){int i, x, y=1; scanf("%d", &x); for(i=2; i<=x/2; i++)if【2】{ y=0; break;} printf("%d\n", y); } 正确答案: (x%i= =0) 6.24 以下程序的输出结果是【3】。
main(){ int y=9; for(; y>0; y- -)if (y%3= =0){ printf("%d", - -y); continue; } } 正确答案: 852 6.25 阅读下面程序段,则执行后的输出结果为【4】。
#include "stdio.h" main(){ int a=1; for (;a<=15;)if(++a%5!=2)continue; else printf("%d",a); printf("\n"); } 正确答案: 2712 2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 16/73 6.26 阅读下面语句,则执行后的输出结果为【5】#include "stdio.h" main(){char a,b; for(a=′0′,b=′9′;a=0 && t>c[j]){c[j+1]=c[j];j--;} c[j+1]=t; } for(i=0;i #include main (){ char a[30],b[30]; int k; gets(a); gets(b); k=strcmp(a,b); if(k>0)puts(a); else if(k< 6; p++)if(s[p]>s[k])【1】printf("%d\n", k); } 正确答案:k=p; 7.32 以下程序可把输入的十进制数以十六进制数的形式输出,请填空。
main()2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 20/73 { char b [17]={"0123456789ABCDEF"}; int c[64],d,i=0,base=16; long n; printf("Enter a number:\n");scanf("%ld",&n); do { c[i]=【2】; i++; n=n/base; }while(n!=0); printf("Transmite
new base:\n"); for(--i;i>=0;--i){ d=c[i]; printf("%c",b【3】); } printf("\n"); } 正确答案:n%base [d] 7.33 以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。
请填空。
#include #define N 80 int fun(int a[], int n){ int i,j=1; for (i=1;i=0;j--)if(【10】)b=b+ arr[i][j]; printf("%d,%d\n",a,b); } 正确答案:i==j j=2 i+j==2 第8章函数一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)8.1 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参考生答案: 正确答案: D 8.2 在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定考生答案: 正确答案: B 8.3 以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准考生答案: 正确答案: C 8.4 以下正确的说法是A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用考生答案: 正确答案: B 8.5 以下叙述正确的是A)函数可以嵌套定义但不能嵌套调用B)函数既可以嵌套调用也可以嵌套定义C)函数既不可以嵌套定义也不可以嵌套调用D)函数可以嵌套调用但不可以嵌套定义考生答案: 正确答案: D 8.6 下面对C语言的描述中,正确的是A)函数一定有返回值,否则无法使用函数B)C语言函数既可以嵌套定义又可以递归调用C)在C语言中,调用函数时,只能将实参的值传递给形参D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中考生答案: 正确答案: C 8.7 下列说法中错误的是A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽C)静态全局变量可以被其他的编辑单位所引用D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失考生答案: 正确答案: C 8.8 以下程序有语法错误,有关错误原因的正确说法是main()2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 22/73 { int G=5,k; void prt_char(); ... k=prt_char(G); ... } A)语句void prt_char();有错,它是函数调用语句,不能用void说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线考生答案: 正确答案: C 8.9 以下正确的函数头定义形式是A)double fun(int x,int y)B)double fun(int x;int y)C)double fun(int x,int y); D)double fun(int x,y); 考生答案: 正确答案: A 8.10 以下所列的各函数首部中,正确的是A)void play(var :Integer,var b:Integer)B)void play(int a,b)C)void play(int a,int b)D)Sub play(a as integer,b as integer)考生答案: 正确答案: C 8.11 不合法的main函数命令行参数表示形式是A)main(int a,char *c[])B)main(int arc,char **arv)C)main (int argc,char *argv)D)main(int argv,char *argc[])考生答案: 正确答案: C 8.12 下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5)); A)1 B)2 C)4 D)5 考生答案: 正确答案: B 8.13 设有如下函数fun (float x){ printf("\n%d",x*x); } 则函数的类型是A)与参数x的类型相同B)是void C)是int型D)无法确定考生答案: 正确答案: C 8.14 有以下程序float fun(int x,int y){ return(x+y);} main(){ int a=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); } 程序运行后的输出结果是A)编译出错B)9 C)21 D)9.0 考生答案: 正确答案: B 8.15 以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序void sort(int a[],int n){ int i,j,t; for(i=0;i a [p ])_ _ _ _ _ _ _ _ _; return(p); }在下划线处应填入的内容是A)i=p B)a[p]=a[i ]C )p = j D )p = I 考生答案: 正确答案: D 8.1 8 有以下程序i n t f (i n t n ){ i f (n = = 1 )r e t u r n 1; else return f(n-1)+ 1; }main(){ int i,j=0; for(i=1;i 2 )r e t u r n (f i b (n - 1 )+ f i b (n - 2 )); else return(2); }main(){ printf("%d\n",fib(3)); }该程序的输出结果是A)2 B)4 C )6 D )8 考生答案: 正确答案: B 8.2 0 下列函数的运行结果是m a i n (){ i n t i = 2 , p; int j,k; j=i; k=++i; p=f (j,k); 2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 24/73 printf("%d",p); } int f(int a,int b){ int c; if(a>b)c=1; else if(a==b)c=0; else c=-1; return(c); } A)-1 B)1 C)2 D)编译出错,无法运行考生答案: 正确答案: A 8.21 阅读下列程序,当运行函数时,输入asd af aa z67,则输出为#include #include #include int fun (char *str){ int i,j=0; for(i=0;str[i]!=′\0′;i++)if(str[i]!=′′)str[j++]=str[i]; str[j]= ′\0′; } main(){ char str[81]; int n; clrscr(); printf("Input a string : "); gets(str); puts(str); fun(str); printf("%s \n",str); } A)asdafaaz67 B)asd af aa z67 C)asd D)z67 考生答案: 正确答案: A 8.22 以下程序的输出结果是long fun(int n){ long s; if(n==1||n==2)s=2; else s=n-fun(n-1); return s; } main(){ printf("%ld\n", fun(3)); } A)1 B)2 C)3 D)4 考生答案: 正确答案: A 8.23 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是void print_value(int *x){ printf("%d\n",++*x); } A)23 B)24 C)25 D)26 考生答案: 正确答案: D 8.24 下面程序应能对两个整型变量的值进行交换。
以下正确的说法是main(){ int a=10,b=20; printf("(1)a=%d,b=%d\n",a,b); swap(&a,&b); printf("(2)a=%d,b=%d\n",a,b); } swap(int p,int q){ int t; t=p;p=q;q=t; 2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 25/73 } A)该程序完全正确B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可D)以上说法都不对考生答案: 正确答案: D 8.25 以下程序的输出结果是int f(){ static int i=0; int s=1; s+=i; i++; return s; } main(){ int i,a=0; for(i=0;i 0 & & a < 1 0 )c = (a + b )/ 2; else c=a*b/2; return c; }main(){ int a=8,b=20,c; c=f(a,b); printf("%d\n",c); }A)随机数B)80 C )2 8 D )1 4 考生答案: 正确答案: D 8.3 4 阅读如下程序段,则程序段的执行后的输出结果为# i n c l u d e " s t d i o.h " m a i n (){ c h a r c; int i; char co u n t (); int p(char); for(i=0;i< 3;i + + ){ m = t e s t 1 (); 2016/6/6 c语言程序设计——单元习题/jsjx/kcjs/cpro/dyxt/danyuanxiti.htm 28/73 n=test2(); } printf("%d,%d\n",m,n); } test1(){ int x=0; x++; return x; } test2(){ static int x=0; x++; return x; } A)1,1 B)1,3 C)3,1 D)3,3 考生答案: 正确答案: B 二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)8.36 当调用函数时,实参是一个数组名,则向函数传递的是【1】。
A 考生答案: 正确答案: 数组的首地址8.37 函数fun的功能是:根据以下公式求p的值,结果由函数值返回。
m与n为两个正数且要求m>n。
例如:m=12,n=8时,运行结果应该是495.000000。
请在题目的空白处填写适当的程序语句,将该程序补充完整。
#include #include float fun (int m, int n){ int i; double p=1.0; for(i=1;i<=m;i++)【2】;for(i=1;i<=n;i++)【3】; for(i=1;i<=m-n;i++)p=p/i; return p; } main (){ clrscr (); printf ("p=%f\n",fun (12,8)); } A 考生答案: 正确答案: p=p*i 正确答案: p=p/i 8.38 以下程序的输出结果是【4】。
void fun(){ static int a=0; a+=2; printf("%d",a); } main()。