C语言程序设计实验教程习题110.docx
《C语言程序设计实验教程习题110.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验教程习题110.docx(39页珍藏版)》请在冰豆网上搜索。
![C语言程序设计实验教程习题110.docx](https://file1.bdocx.com/fileroot1/2023-5/15/e7a94cbe-b1b2-451f-9dcb-d6b8d3ff87d8/e7a94cbe-b1b2-451f-9dcb-d6b8d3ff87d81.gif)
C语言程序设计实验教程习题110
第一章
一.选择题
1.最早开发C语言是为了编写下面那一种操作系统(C)
A.WindowsB.DOSC.UNIXD.Linux
2.下面哪一项不属于C语言的特点(B)
A.c语言具有可移植性B.c是一种面向对象程序设计语言
C.c语言具有自我扩展能力D.c语言程序执行效率较高
3.下面关于程序的说法中哪一项是正确的(B)
A.程序是指由二进制0和1构成的代码
B.程序就是人与计算机进行交流的语言
C.将需要计算机完成的工作写成一种形式化指令,而这些单个的指令就是程序
D.程序的设计形式是一致的
4.下面哪一项不属于c语言程序开发过程中设计程序阶段应该考虑的问题(D)
A.程序可以包含哪些函数B.用什么类型的变量来保存数据
C.需要哪些步骤来解决问题D.采用哪一张开发工具
5.经过连接以后生成的可执行文件的扩展名是下面的哪一项(B)
A..cB..exeC..oD..obj
6.下面哪一项不属于c语言继承开发环境包含的程序(C)
A.编辑程序B.编译程序C.汇编程序D.调试程序
二.选择题
1.把高级语言转换成机器语言的程序被称作(编译器)
2.c语言的代码通常使用(编译器)程序输入到计算机中。
3.ANSIC是C语言的第一个标准,一般称为(C89),目前最新的修改版本是(C99)。
4.程序调试的主要目的是(发现并修正错误)。
三.判断题
1.连接器只是把编译生成的目标代码连接起来生成可执行代码(F)。
2.C语言只能用来编写操作系统(F)。
3.UNIX操作系统本身提供C语言的编译器,称为CC(T)。
4.用机器语言编写的程序依赖于具体的机器,不具备可移植性(T)。
5.一个C语言程序只要编译和连接没有错误,就肯定能正常运行(F)。
第二章
一.选择题
1.下面哪一项可以作为c语言的标识符(B)。
A.2mB.varC.–n37D.ok?
2.下面哪一项怒能作为c语言的标识符(C)。
A.meanB.kedC.a+cD.Main
3.在C语言中,声明语句用下面列出的哪一种符号结束(B)。
A.逗号B.分号C.冒号D.句号
4.在下面关于变量的说明中哪一项是不正确的(C)。
A.变量在使用之前必须声明B.可以通过输入为变量赋值
C.声明变量时只需指定变量名D.变量名应该是一个合法的标识符
5.在下面关于注释的说明中哪一项是正确的(B)。
A.在执行程序时,注释会导致计算机在屏幕上显示/*和*/之间的内容
B.在程序中添加注释可以增强代码的可续性,应该鼓励多写注释
C.注释会增加程序源代码的长度,也会增加目标代码的长度
D.一个注释不可以分多行来写
6.下面哪一项不益于增强程序代码的可续性(C)
A.适当插入空行分隔不同的处理部分
B.为变量和函数命名时,尽量使名称能见名知意
C.删去不必要的圆括号使表达式简短
D.尽量把一条语句安排在一行
7.下面说法中正确的是哪一项(C)。
A.c语言源程序是由一个个语句构成的
B.c语言源程序有固定的书写格式
C.每个语句的末尾必须有一个分号,作为语句结束的标志
D.可以用/*…*/对c语言程序中的任何部分作注释
8.调用printf()函数输出3个变量的值,正确的语句是哪一项(A)。
A.printf(”%d%d%d\n”,x,y,z);B.printf(“%d%d%d\n”,x,y);
C.printf(“%d%d\n”,x,y,z);D.printf(“%D%D%D\n”;
二填空题
1.c程序的每条语句必须以(;)结尾。
2.(printf())函数用于在屏幕上显示输出。
3.(scanft())函数用于输入数据。
4.(stdion)头文件包含了标准输入输出库函数的声明。
5.一个函数定义包括函数头和(函数值)。
6.C语言程序的基本模块是(函数)。
7.编译器可以发现程序中的(语法)错误。
8.能够进行判断的c语句是(if语句)。
三.判断题
1.在c语言中,Abc和abc是不同的两个标识符(T)。
2.main()函数是程序执行的起点(T)。
3.程序中的一行可以有多条语句(T)。
4.一个c程序可以包含多个函数,但只能有一个main()函数(T)。
5.在声明变量时必须为其指定一种数据类型(T)。
6.只能通过赋值语句改变变量的值(F).
7.变量的声明可以放在函数体重的任何位置(F)。
8.在程序中可以包含多个预处理命令(T)。
第三章
一.选择题
1.以下选项中均为合法整型常量的是A
A160.Oxffff,011
2.以下选项不正确的转义字符是C
C‘077’
3.设a是int类型,有语段:
a=-017L;printf("%d\n,a);,输出结果为D
D-15
4.下列变量说明语句中,正确的是C
Cintx,y,z=10
5.以下为字符串常量的是B
B"—China"
6.以下不属于C语言数据类型的是D
Dlongunsignedshort
7.以下选项均为不合法浮点常量的是B
B。
123,2e2.5,e5
8.以下选项中均为不合法转义字符的是A
A'\",'\\','\n'
9.char类型在内存中的存储形式是D
DASCII码
10.以下选项中正确定义符号常量的是C
C#defineNAME"Wang"
11.scanf()函数称为A
A格式输入函数
12.设a为float类型变量,则下列选项中正确的是A
Ascanf("%f",&a);
13.getchar()函数和putchar()函数的头文件是B
Bsttdio.h
14.设有语句段:
inta=256,b=356;printf("%d\n",a,b);,则输出结果为D
D256
15.设有语句段:
floatx;scanf("%6.2f",&x);printf("X=%f\n",x);若输入数据:
134.89后,则B
B运行结果错
二.填空题
1.c语言中标识符的首字符必须是(字母或者下划线)
2.在VC++中,int类型数据占用(4)个字节
3.若有变量说明语句:
charc='\72';,则变量C包含
(1)个字符
4.字符串"w\x53\\\np\103q"的长度是(7)
5.字符串"HOWAREYOU?
"在内存中占用(13)个字节。
6.scanf()函数的功能是按(格式控制字符串)指定的格式,在标准输入设备上把数据输入到(变量)中
7.在输入多个数值型数据时,若scanf()函数的"格式控制字符串”中没有非格式字符作为输入数据的间隔符,则可用(定格),(Tab)和(Enter)作分隔。
8.设有语句段,int=65;printf("%d,%c\n,x,x");,则输出结果为(65.A)
9.设有语句段,floatx=123.456;printf("x=%,2f\n"x);则输出结果(X=123.46)
10.若要输出以下各种类型的数据,应使用神马转换说明符;字符宽度为4的十进制证书应使用"%4d";字段宽度为6的十六进制整数应使用("%6x"),八进制整数应用(%6o");字段宽度为4的字符应使用("%4c");字段宽度为10,保留3位小数的双精度实数应使用("%10.31f"),字段宽度为8的字符串应使用("%8s")
三.判断题
1.在C语言中,数据有常量和变量之分T
2.在c语言中,可以把一个字符串赋给一个字符变量F
3.符号常量不是常量的一种数据类型,而是任何类型常量的另一种表示形式T
4.语句printf("%d\n",12.8%4);的输出结果为0F
5.在使用scanf()函数为douple型变量赋值时,可使用%f或%lf格式符F
6.说明语句inta=10,b=10,c=10;和说明语句inta=b=c=10;等价F
7.有语句intx;scanf("%4d",&x);若输入数据123456,则只能把1234赋给变量xF
8.语句段:
int=100;y=200;printf("d\n,(x,y));的输出结果为200T
9.scanf()和printf()是C语言中标准的格式输入输出语句F
10.若有intx=15;printf("%d\n",&x);则系统不会报错,则输出X的地址T
第四章
一选择题
1.下列运算符中,只能用于整形数据的是D
D%
2.设有定义inta=8,b=5,c;,则执行语句c=a/b+0.4;后,c的值是B
B1
3.设有定义inta,b,i=18;doublex,y;则符合C语言规则的表达式是A
Ay=(float)i
4.设有定义intk=11;,则表达式k++*1/3的值是B
B3
5.设有定义floata=2;b=4;h=3;则以下C语言表达式中与代数式计算结果不相符的是B
B(1/2)*(a+b)*h
6.有以下程序C,执行后输出结果为:
C
C6.4
7.以下选项中,与表达式k=n++等价的表达式是A
Ak=n,n=n+1
8.设有定义doublex,y;,则表达式x=2,y=x+3/2的值是D
D3.000000
9.设有定义intm=10;,则以下错误的表达式是A
Am++=15
10.设有定义inta=5;float=5.5;则以下错误的表达式是D
D.———a+b
二.填空题
1.表达式8/4*(int)2.5/(int)1.25*(3.7+2.3))的数据类型为(int)
2.设有定义intx='f';,则执行语句printf("%c\n",'a'+(x-'a'+1));后输出结果是(g)
3.表达式5%6的值是(5)
4.设y为int型变量,则描述“y是偶数”的表达式是(y%2==0)
5.设有定义intx=3,y=2;floata=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为
(1)
6.设有定义inta=6;则表达式a+=a-=a*a的值(-60)
7.设有定义intk;则执行表达式k=10,k++,k++,k+3后,表达式的值是15,变量k的值是(12)
8.以下程序a='H'-'A'+'O'执行后输出结果是(7)
9以下程序printf("%f\n",z),执行后输出结果是(-7.300000)
10.请书写数学式cos60+8ey的C语言表达式(cos(60*3.14159/180)+8*exp(y))
三,判断题
1.x++是一个合法的算术表达式T
2.x=y=z=0是一个合法的赋值表达式T
3.要求参与运算的操作数必须是基本类型的运算符是%F
4.凡是表达式都是一个确定的值T
5.无论是整数还是实数,只要允许的范围内都可以准确无误的表示F
6.在主函数内变量一经定义,系统将自动赋予初始值F
7.设a为实型变量,且有语句a=10;,因此可说实型变量中允许存放整型值F
8.在赋值表达式中,赋值号右边可以是变量也可以是任意表达式,但赋值号左边只能是变量T
9.执行表达式a=b后,变量a的值由原值改变为b的值,而变量b的值置零F
10.在C语言程序中,书写任何表达式都只能写在一行内F
第五章
一、选择题
1、判断char型变量c1是否为小写字母的正确表达式为(D)
A、‘a’<=c1<=‘z’B、(c1>=‘A’)&&(c1<=‘z’)
C、(‘a’>=c1)||(‘z’<=c1)D、(c1>=‘a’)&&(c1<=‘z’)
2、在C语言中的if语句中,用以决定分支流程的表达式为(D)
A、只能用关系表达式B、只能用逻辑表达式
C、只能用算术表达式D、任意表达式
3、若变量都已正确说明,则以下程序段的输出为(D)
inta=1,b=2,c,d;
if(a=b)c=d=a;
elsec=b;d=b;
printf(“c=%d,d=%d”,c,d);
A、c=1,d=1B、c=1,d=2C、c=2,d=1D、c=2,d=2
4、请阅读以下程序
#include
voidmain()
{
inta=5,b=0,c=0;
if(a=b+c)printf(“&&&”);
elseprintf(“###”);
}
下列说法正确的是:
(D)
A、有语法错不能通过编译B、可以通过编译但不能连接
C、输出&&&D、输出###
5、两次运行下面的程序,如果从键盘上分别输入6和4,则输出的结果是(D)
#include
voidmain()
{
intx;
scanf(“%d”,&x);
if(x>5)printf(“%d”,x);
elseprintf(“%d\n”,x--);
}
A、7和5B、6和3C、7和4D、6和4
6、以下不正确的if语句形式是(B)
A、if(x>y);
B、if(x==y)x+=y
C、if(x!
=y)scanf(“%d”,&x);elsescanf(“%d”,&y);
D、if(x7、为了避免在嵌套的条件语句if-else中产生二定义,C语言规定:
else子句总是与下面选项中的哪一个配对(B)
A、缩排位置相同的ifB、其之前最近的if
C、其之后最近的ifD、同一行上的if
8、若有以下定义:
floatx;inta,b;,则正确的switch语句是(C)
A、switch(x)B、switch(int(x))
{{
case1.0:
printf(“*\n”);case1:
printf(“*\n”);
case2.0:
printf(“**\n”);case2:
printf(“*\n”);
}}
C、switch(a+b)D、switch(a+b);
{{
case1:
printf(“*\n”);case1:
printf(“*\n”);
case2:
printf(“***\n”);case2:
printf(“*\n”);
}}
9、设inta=9,b=8,c=7,x=1;,则执行语句if(a>7)if(b>8)if(c>9)x=2;elsex=3;后x的值是(C)
A、0B、2C、1D、3
10、请从以下表达式中选出a为偶数时值为0的表达式(D)
A、a%2=0B、!
a%2!
=0C、a/2*2–2=0D、a%2
11、在下列选项中,没有构成死循环的程序段是(C)
A、inti=100;B、for(;;);
while
(1)
{
i=i%100+1;
if(i>100)break;
}
C、intk=1000;D、ints=36;
do{--k;}while(k);while(s>=0);++s;
12、C语言中do-while循环中,循环由do开始,用while结束;而且在while表达式后面的哪一个符号不能丢,它表示do-while循环的结束(B)
A、\nB、;C、%D、,
13、下列有关for循环的描述正确的是(D)
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环体语句中,可以包含多条语句,但要用花括号括起来
14、对于for(表达式;;表达式3)可理解为(B)
A、for(表达式;0;表达式3)B、for(表达式;1;表达式3)
C、for(表达式;表达式1;表达式3)D、for(表达式;表达式3;表达式3)
15、执行程序段:
x=-1;do{x=x*x;}while(!
x);的结果是(C)
A、死循环B、循环执行2次C、循环执行一次D、有语法错误
16、以下程序的输出结果是(D)
#include
voidmain()
{
inty=10;
while(y--);
printf(“y=%d\n”,y);
}
A、y=0B、无限循环,无结果输出C、y=1D、y=-1
17、若有如下程序段:
intn=0;while(n++<=2)printf(“%d”,n);,则正确的执行结果是(D)
A、3B、2C、1D、123
18、设有程序段:
intk=10;while(k=0)k=k-1;,则下列描述正确的是(C)
A、while循环执行10次B、循环是无限循环
C、循环体语句一次也不执行D、循环体语句执行一次
19、以下能正确计算1X2X3X4X…X10的程序段是(C)
A、do{I=1;s=1;s=s*I;i++;}B、do{i=1;s=0;s=s*i;i++;}
while(i<=10);while(i<=10);
C、i=1;s=1;D、i=1;s=0;
do{s=s*i;i++;}while(i<=10);do{s=s*i;i++;}while(i<=10);
20、程序段inty=10;do{y--;}while(--y);printf(“%d\n”,y--);的运行结果是(D)
A、-1B、1C、8D、0
21、程序段inta=1,b=10;do{b-=a;a++;}while(b--<0);printf(“a=%d,b=%d\n”,a,b);的运行结果是(B)
A、a=3,b=11B、a=2,b=8C、a=1,b=-1D、a=4,b=9
22、以下for循环的执行次数是(C)
for(x=0;y=0;(y!
=123)&&(x<4);x++);
A、无限次B、循环次数不定C、执行4次D、执行3次
23、以下正确的描述是(B)
A、continue语句的作用是结束整个循环的执行
B、只能在循环体内和switch语句内使用break语句
C、在循环体内,使用break语句和使用continue语句的作用是相同的
D、从多层循环嵌套中退出时,只能使用goto语句
24、以下为死循环的程序段是(C)
A、for(i=1;;){if(++i&2==0)continue;if(++i%3==0)break;}
B、i=32767;do{if(i<0)break;}while(++i);
C、for(i=1;;)if(++i<10)continue;
D、i=1;while(i--);
二、填空题
1、在C语言中,逻辑运算符中,(逻辑非)的优先级高于算术运算符。
若已知a=2,b=3,则表达式!
a+b的值为(3)
2、以下程序实现:
输入三个数,按从小到大的顺序进行输出。
请在空中填入正确内容。
#include
voidmain()
{
intx,y,z,c;
scanf(“%d%d%d”,&x,&y,&z);
if(z>y){c=y;y=z;z=c;}
if(y>x){c=x;x=y;y=c;}
if(z>y){c=z;z=y;y=c;}
printf(“%d,%d,%d”,(x,y,z));
}
3、以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。
例如’a’变成’f’,’w’变成’b’。
请在空中填入正确的内容。
#include
voidmain()
{
charc;
c=(getchar())
if(c>=’a’&&(c<=’u’))(c=c+5);
elseif(c>=’v’&&c<=’z’)(c=c-21);
putchar(c);
}
4、有一个整数345,取它的个位数的表达式为(345%100),取百位数的表达式为(345/100),取十位数的表达式为(345/10%10)。
5、下面是计算n!
的值的程序。
#include
voidmain()
{
inti,s,n;
s=1
scanf(“%d”,&n);
for(i=1;i<=n;i++)(s=s*i);
printf(“s=%d\n”,s);
}
6、下面程序的功能是分别计算1~10之间的奇数和与偶数和。
#include
voidmain()
{
inta,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{
a+=i,(b=i+1),c+=b;}
printf(“偶数之和=%d”,a);
printf(“奇数之和=%d”,(c-11);
}
7、下面程序段是从键盘输入的字符中统计数字字符个数,用换行符结束循环。
intn=0,c;
c=getchar();
while(c!
=’\n’);
{
if(c>=’0’&&c<=’9’)n++
c=getchar();
}
8、下面程序的功能是用do-while语句求1~1000之间满足“用3除余2、用5除余3、用7除2”的数,且一行只能打印5个数。
#include
voidmain()
{
inti=1,j=0;
do
{if(i%3==2&&i%5==3&&i%7==2)
{
printf(“%4d”,i);j=j+1
if(i%5==0)
printf(“\n”);
}
i=i+1;
}
while(i<1000);
}
三、判断题
1、如果x>y或ay&&a
2、switch选择结构中必须有default子句(F)
3、语句if(a)x=1;与if(a==0)x=1;等价(F)
4、case后只能跟常量,不能跟变量(T)
5、if(x>0){x=x+y;printf(“%f”,x);};elseprintf(“%f”,-x);语句语法是正确的(F)
6、语句:
if(a>b)max=a;elsemax=b;,不可用条件表达式写为max=(a>b)?
a:
b;(F)
7、在case后的各常量表达式的值可以相同(F)
8、if语句执行时,首先计算紧跟在if后面一对圆括号中的表达式的值,如果表达式的值为非零(“真”),则执行if后的“语句”,然后去执行if语句后的下一个语句(T)
9、while语句do-while语句无论在什么情况下,二者的执行结果都一样(F)
10、continue语句的功能就是结束本层循环(F)
11、break语句的作用就是结束本层