C语言程序设计 第17章选择填空习题及答案.docx
- 文档编号:12633353
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:37
- 大小:33.49KB
C语言程序设计 第17章选择填空习题及答案.docx
《C语言程序设计 第17章选择填空习题及答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 第17章选择填空习题及答案.docx(37页珍藏版)》请在冰豆网上搜索。
C语言程序设计第17章选择填空习题及答案
习题一
一、选择题
1.C程序的基本单位是(A)。
A.函数B.文件C.语句D.字符
2.C程序中的变量(B)。
A.不用说明B.先说明后引用
C.先引用后说明D.引用和说明顺序无关
3.变量的说明在(B)。
A.执行语句之后B.执行语句之前
C.执行语句当中D.位置无关
4.C语言是一种(C)。
A.机器语言B.符号语言
C.高级语言D.面向对象的语言
二、填空题
1.一个C程序总是从主函数开始执行。
2.结构化程序由顺序、选择、循环三种基本结构构成。
3.一个C程序只有一个名为main的主函数。
4.C程序中的每个语句以分号结束。
5.C程序中,函数由函数首部和函数体组成。
6.每个基本结构有一个入口和一个出口,没有死循环和死语句。
7.算法是计算机解决问题所依据的步骤。
习题二
一、选择题
1.下列数据中属于字符串常量的是(B)。
A.ABCB."ABC"C.'abc'D.'A'
2.在计算机内存中,'\n'占用的字节数是(C)。
A.4B.3C.1D.2
3.字符串"ABC"在内存中占用的字节数是(D)。
A.6B.8C.3D.4
4.在C语言中,合法的长整型常数是(B)。
A.568701400B.0LC.0.03546287D.2.654e11
5.char型常量在内存中存放的是(A)。
A.ASCII代码值B.BCD代码值
C.十进制代码值D.内码值
6.下列各项中正确的标识符是(D)。
A.?
bbB.a=8C.b.βD.b_4
7.下列不正确的转义字符是(D)。
A.\\B.\0C.\"D.0x4
8.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为(B)。
A.0B.1C.2D.3
9.设a的值为5,执行下列语句后,b的值不为2的是(C)。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=(float)a/2
10.执行语句x=(a=3,b=a--)后,x、a、b的值依次是(C)。
A.3,3,2B.3,2,2C.3,2,3D.2,3,2
11.设有语句inta=3;,则执行了语句a+=a-=a*a;后,变量a的值是(D)。
A.3B.0C.9D.-12
12.在下列运算符中,优先级最高的是(B)。
A.&&B.%C.=D.>=
13.设整型变量a的值为3,则计算表达式a---a后,表达式的值为(B)。
A.1B.0C.2D.表达式出错
14.设整型变量a、b、c的值均为2,表达式a---b+++c++的结果是(C)。
A.6B.9C.2D.表达式出错
15.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(D)。
A.1B.2.5C.2D.2.0
16.下列表达式中符合C语言语法的赋值表达式是(C)。
A.a=4+b++c=a+8B.a=4+b++=a+8
C.a=(4+b,b++,a+8)D.a=4+b,c=a+8
17.若有以下定义:
chara;intb;floatc;doubled;,则表达式a*b+d-c的值的类型为(D)。
A.intB.floatC.charD.double
二、填空题
1.在内存中存储"A"要占2个字节,存储'A'要占1个字节。
2.符号常量的定义方法是#define常量名常量。
3.无符号基本整型的数据类型符为unsignedint双精度实型数据类型符为double,字符型数据类型符为char。
4.十进制数673的二进制、八进制和十六进值数分别为1010100001、2412和2A1。
5.在C语言中,书写八进制数时必须加前缀0;书写十六进制数时必须加前缀0x。
6.在微机上,int型、short型、long型、float型和double型数据一般在内存中分别占2字节、2字节、4字节、4字节和8字节。
7.设有下列运算符:
<<、+、++、&&、>=,其中优先级最高的是++,优先级最低的是&&。
8.设x、y为int型变量,且x=1,y=2,则表达式1.0+x/y的值为1.0。
9.设整型变量x、y、z均为5,则:
①执行x-=y-z后,x的值为5。
②执行x%=y+z后,x的值为5。
10.数学式
的C语言表达式为a/b*c)。
三、简答题
1.字符常量与字符串常量有什么区别?
2.对于TurboC系统来说,char型变量与int型变量在内存中存储数据的区别是什么?
3.整型变量可细分为哪六类?
4.什么是一个实型数据的规范化指数形式?
5.设x=3.5,a=5,y=6.7,求算术表达式x+a%3*(int)(x+y)%2/4的值。
6.设a=2,b=3,x=4.5,y=1.6,求表达式(float)(a+b)/2+(int)x%inty的值。
7.设整型变量a=12,写出下列表达式运算后a的值。
①a*=2+5②a/=a+a③a+=a-=a*=a
8.写出下列程序的运行结果。
main()
{charc1='A',c2='B',c3='C',c4='\101',c5='\h42';
printf("A%cb%c\t%c\tbc\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);
}
结果:
AAbBCabc
AB
9.写出下面程序的运行结果。
main()
{inti,j,m,n;
i=5;
j=6;
m=++i;
n=--j;
printf("%d,%d,%d,%d",i,j,m,n);
}
结果:
6,5,6,5
习题三
一、选择题
1.printf()函数输出实数时,使用的格式字符是(C)。
A.%dB.%cC.%fD.%o
2.下面变量说明中(C)是正确的。
A.char:
a,b,c;B.chara;b;c;
C.chara,b,c;D.chara,b,c
3.putchar()函数可以向终端输出一个(D)。
A.整型变量表达式值B.实型变量值
C.字符串D.字符或字符型变量值
4.阅读以下程序,当输入数据的形式为:
25,13,10〈CR〉,正确的输出结果为(D)。
main()
{intx,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
}
A.x+y+z=48B.x+y+z=35C.x+z=35D.不确定值
5.以下说法正确的是(D)。
A.输入项可以是一个实型常量
B.只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);
D.当输入数据时,必须指明变量的地址,如scanf("%f",&f);
6.以下能正确地定义整型变量a、b和c并为其赋初值5的语句是(C)。
A.inta=b=c=5;B.inta,b,c=5;
C.inta=5,b=5,c=5;D.a=b=c=5;
7.已知ch是字符型变量,下面正确的赋值语句是(B)。
A.ch='a+b';B.ch='\xff';C.ch='\08';D.ch="\";
8.设x、y均为float型变量,则以下不合法的赋值语句是(B)。
A.++x;B.y=(x%2)/10;C.x*=y+8;D.x=y=0;
9.以下格式符中,不能用来输入实型数的是(B)
A.fB.e(E)C.g(G)D.x
10.若floatnum=123.456,以%+10.4d的格式输出,结果正确的是(B)
A.123.456000B.123.4560C.123.4560D.+123.4560
二、填空题
1.以下程序的输出结果是x=1y=2*sum*=3
10squaredis:
100。
main()
{intx=1,y=2;
printf("x=%dy=%d*sum*=%d\n",x,y,x+y);
printf("10squaredis:
%d\n",10*10);
}
2.以下程序的输出结果是a=325x=3.14。
main()
{inta=325;doublex=3.1415926;
printf("a=%2dx=%7.2f\n",a,x);
}
3.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空:
a+=b;b=a-b;a-=b;
4.若x为int型变量,则执行以下语句后x的值是-14。
x=7;
x+=x-=x+x;
5.C语句可以分为五类,含7种控制语句、声明语句、表达式语句、空语句和复合语句。
6.赋值语句是由赋值表达式加上一个分号构成。
7.a=12,n=5,表达式a%=(n%=2)值是0。
8.有一个输入函数scanf("%d",k);则不能使float类型变量k得到正确数值的原因是k前无&
和%d与k的类型不一致。
9.putchar()函数可以向终端输出一个字符。
10.已有定义inti,j;floatx;为将-10赋给i,12赋给j,410.34赋给x,则对应以下scanf()函数调用语句的数据输入形式是-12C410.34。
scanf("%o%x%e",&i,&j,&x);
11.pirntf()函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度大于5,则按实际宽度输出。
12.使用getchar()和putchar()函数必须在源程序中加#include"stdio.h"。
习题四
一、选择题
1.执行下面的程序段后,b的值为(B)。
intx=35;
charz='A';
intb;
b=((x&&15)&&(z<'a'));
A.0B.1C.2D.3
2.设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n-c>d)后n的值为(B)。
A.1B.2C.3D.4
3.若k是int型变量,且有下面的程序段,输出结果是(A)。
K=-3;
if(k<=0)printf("####");
elseprintf("&&&&");
A.####B.&&&&
C.####&&&&D.有语法错误,无输出结果
4.设A、B和C都是int型变量,且A=3,B=4,C=5,则下面表达式中值为0的达式是(D)。
A.A&&BB.A<=B
C.A‖B+C&&BD.!
((A
C‖1)
5.阅读程序:
#include"stdio.h"
main()
{floatx,y;
scanf("%f",&x);
if(x<0.0)y=0.0;
elseif((x<5.0)&&(x!
=2.0))
y=1.0/(x+2.0);
elseif(x<10.0)y=1.0/x;
elsey=10.0;
printf("%f\n",y);
}
若运行时从键盘上输入2.0,则上面程序的输出结果是(C)
A.0.000000B.0.250000
C.0.500000D.1.000000
6.阅读程序:
#include"stdio.h"
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
上面程序输出结果是(A)。
A.a=2,b=lB.a=l,b=l
C.a=l,b=0D.a=2,b=2
7.下面程序的输出是(C)。
main()
{inta=–1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
printf("%d%d%d%\n",k,a,b);}
A.003B.012C.103D.112
8.为表示关系x≥y≥z,应使用C语言表达式(A)。
A.(x>=y)&&(y>=z)B.(x>=y)AND(y>=z)
C.(x>=y>=z)D.(x>=y)&(y>=z)
9.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为(D)。
A.a<>0B.!
aC.a=0D.a
10.若有以下定义:
floatx;inta,b;
则正确的switch语句是(D)。
A.switch(x)
{case1.0:
printf("*\n");
case2.0:
printf("**\n");}
B.switch(x)
{case1,2:
printf("*\n");
case3:
printf("**\n");}
C.switch(a+B)
{case1:
printf("\n");
case1+2:
printf("**\n");}
D.switch(a+b);
{case1:
printf("*\n");
case2:
printf("**\n");}
11.下列语句中,错误的是(C)。
A.while(a=b)a++;B.while(0);C.doD.do
{printf(“ok\n”);{x++;
}while(x==5)}while(--x==0);
12.执行语句:
for(i=1;i++<4;)后变量i的值为:
(B)。
A.3B.4C.5D.6
13.以下程序的输出结果是:
(D)。
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
A.10192B.9876C.10990D.101091
14.以下for语句的循环次数为:
(B)。
inti=0,j=0;
for(;!
j&&i<=5;i++)j++;
A.5次B.1次C.6次D.无限多次
15.以下程序段中内嵌循环共被执行的次数为:
(A)
for(i=5;i;i--)
for(j=0;j<4;j++)
{…}
A.20B.24C.25D.30
二、填空题
1.设ch是char型变量,其值为A,且有下面的表达式:
ch=(ch>'A'&&ch<='Z')?
(ch+32):
ch
该表达式的值是A。
2.若已知a=10,b=20,则表达式“!
a
3.已知a=10,b=20,c=30,则表达式
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=10,b=19,c=30。
4.下面程序的输出结果是0,0,4。
main()
{inta=-1,b=4,k;
k=(++a<0)&&!
(b-->=0);
printf("%d%d%d\n",k,a,b);
}
5.假定所有变量均已正确说明,下列程序段运行后,x的值是4。
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);if(c)x=3;
elsex=4;
6.若执行下面的程序时,从键盘上输入3和4,则输出结果是3。
main()
{inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a&&b)printf("%d\n",s);
elseprintf("%d\n",s--);
}
7.以下程序的输出结果是x=11,i=11。
main()
{intx=1,i=1;
for(;x<50;i++)
{if(x>=10)
break;
if(x%2!
=1)
{x+=3;
continue;
}
x-=1;
}
printf("x=%d,i=%d\n",x,i);
}
8.以下程序的输出结果是i=9,j=10。
main()
{inti=10,j=0;
do
{j=j+i;
i--;
}while(i>j);
printf("i=%d,j=%d\n",i,j);
}
9.以下程序的输出结果是35。
main()
{intm=7,n=5,i=1;
do
{if(i%m==0)
if(i%n==0)
{printf(“%d\n”,i);break;}
i++;
}while(i!
=0);
}
10.以下程序的输出结果是1,-2。
main()
{intx=3;
do
{printf("%d",x-=2);
}while(!
(--x));
}
11.以下程序的输出结果是i=4,j=6。
main()
{inti,j;
for(i=0;i<5;i++)
{for(j=1;j<10;j++)
if(j==6)
break;
if(i<3)
continue;
if(i>3)
break;
}
printf("i=%d,j=%d\n",i,j);
}
习题五
一、选择题
1.下列为一维数组初始化时,正确的是(D).
A.inta[]={1,3,5,7,9,…,15};B.inta[5]={};
C.inta[5]={5*3};D.inta[5]={0};
2.下列一维数组说明中,正确的是(A).
A.#defineM10B.intm;
floats[M];scanf(“%d”,&m);
floata[m];
C.intm=10,a[m];D.inta[];
3.若要将2,4,6,8存入数组a中,不正确的是(C).
A.inta[4]={2,4,6,8};B.inta[]={2,4,6,8};
C.inta[4];a={2,4,6,8};D.inta[4];a[0]=2;a[1]=4,a[2]=6;a[3]=8;
4.若有说明:
inta[5][5];则对数组元素的正确引用是(C).
A.a[3+2][3]B.a[0,3]C.a[4][1+2]D.a[][2]
5.下列二维数组初始化中,错误的是(A).
A.inta[2][]={{3,4},{5}};B.inta[][3]={2,3,4,5,6,7};
C.inta[3][3]={0};D.inta[5][4]={{1,2},{2,3},{3,4},{4,5}};
6.若有以下数组定义:
charch[]="book_120\n";则数组ch的存储长度是(D)。
A.7B.8C.9D.10
7.以下程序段的输出结果是(A).
charstr[8]={'a','b','c','d','\0','y','z','\0'};
printf("%s",str);
A.abcdB.abcdyzC.abcdyzD.出错
8.设有如下定义:
chars1[20]="tianjin",s2[10]="beijing";
执行语句:
strcpy(s1+4,s2);printf("%s",s1);后,输出结果是(B).
A.tianB.tianbeijingC.tianjinbeijingD.tianbeij
9.合法的数组定义是(B)
A.inta[]={"string"};B.inta[]={0,1,2,3,4,5};
C.chara={"string"};D.chara[]={0,1,2,3,4,5};
10.若有以下说明,则数值为4的表达式是(D)
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c]
11.下列语句中,正确的是(D)
A.chara[3][]={'abc','I'};B.chara[][3]={'abc','I'};
C.chara[3][]={'a',"I"};D.chara[][3]={"abc","I"};
12.设有如下定义,则正确的叙述为(C)
charx[]={"abcdefg"};
chary[]={'a','b','c','d','e','f','g'};
A.数组x和数组y等价B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度
二、填空题
1.设有定义语句“inta[3][4]={{1},{2},{3}}”,则a[1][1]值为0,a[2][1]的值为0。
2.执行“intb[5]={},a[][3]={1,2,3,4,5,6}”后,b[4]=0,a[1][2]=6。
3.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p;
ints[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)k=p;
if(s[p]>s[k])
printf("%d\n",k);
}
4.下面程序的功能是将一个字符串str的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 第17章选择填空习题及答案 语言程序设计 17 选择 填空 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)