C程序设计17章复习题.docx
《C程序设计17章复习题.docx》由会员分享,可在线阅读,更多相关《C程序设计17章复习题.docx(17页珍藏版)》请在冰豆网上搜索。
C程序设计17章复习题
《C程序设计》1-7章复习题
1.算法具有五个特性,以下选项中不属于算法特性的是______。
A)有穷性 B)简洁性 C)可行性 D)确定性
2.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是
A)大写字母 B)连接符 C)数字字符 D)下划线
3.以下选项中可作为C语言合法常量的是______。
A)-80. B) -080 C)-8e1.0 D)-80.0e
以下叙述中正确的是______。
A)用C程序实现的算法必须要有输入和输出操作
B)用C程序实现的算法可以没有输出但必须要输入
C)用C程序实现的算法可以没有输入但必须要有输出
D)用C程序实现的算法可以既没有输入也没有输出
4.以下不能定义为用户标识符的是______。
A)Main B)_0 C)_int D)sizeof
5.以下选项中不能作为合法常量的是______。
A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0
6.数字字符0的ASCII值为48,若有以下程序
main()
{ char a='1',b='2 ';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是______。
A) 3,2 B)50,2 C)2,2 D)2,50
7.有以下程序
main()
{ int m=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是______。
A)12353514 B)12353513 C)12343514 D)12343513
8.有定义语句:
int b;char c[10];,则正确的输入语句是______。
A) scanf("%d%s",&b,&c); B)scanf("%d%s",&b, c);
C) scanf("%d%s",b, c); D) scanf("%d%s",b,&c);
9.有以下程序
main()
{ int m,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。
A)m=123n=456p=789 B) m=123 n=456 p=789
C) m=123,n=456,p=789 D)123 456 789
10.有以下程序
main()
{ int a,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是______。
A)6,1 B)2,1 C)6,0 D)2,0
11.有以下程序
main()
{
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
程序运行后的输出结果是______。
A)1 2 3 B)2 3 4 C) 2 2 3 D)2 3 3
12.若整型变量a、b、c、d中的值依次为:
1、4、3、2。
则条件表达式a
a:
cc:
d的值是______。
A)1 B)2 C)3 D)4
13.有以下程序
main()
{
char a[7]="a0\0a0\0"; int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d\n",i,j);
}
程序运行后的输出结果是______。
A)2 2 B)7 6 C)7 2 D)6 2
14.以下能正确定义一维数组的选项是______。
A)int a[5]={0,1,2,3,4,5}; B)char a[]={0,1,2,3,4,5};
C)char a={'A','B','C'}; D)int a[5]="0123";
15.已有定义:
char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是______。
A)数组a和b的长度相同 B)a数组长度小于b数组长度
C)a数组长度大于b数组长度 D)上述说法都不对
16.以下叙述中错误的是______。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D)可以通过赋初值的方式确定数组元素的个数
17.有以下程序
main()
{ int a=1,b;
for(b=1;b<=10;b++)
{ if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是______。
A)3 B) 4 C)5 D)6
18.有以下程序
main()
{ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{ for(j=0;j<=i;j++) printf("%4c",' ');
for(j=_____;j<4;j++) printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角
1 2 3 4
6 7 8
11 12
16
则在程序下划线处应填入的是______。
A)i-1 B)i C)i+1 D)4-i
19.以下叙述中错误的是
A)用户所定义的标识符允许使用关键字
B)用户所定义的标识符应尽量做到“见名知意”
C)用户所定义的标识符必须以字母或下划线开头
D)用户定义的标识符中,大、小写字母代表不同标识
20.以下叙述中错误的是
A)C语句必须以分号结束
B)复合语句在语法上被看作一条语句
C)空语句出现在任何位置都不会影响程序运行
D)赋值表达式末尾加分号就构成赋值语句
(13)以下叙述中正确的是
A)调用printf函数时,必须要有输出项
B)使用putchar函数时,必须在之前包含头文件stdio.h
C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
21.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是
A)k%2 B)k%2==1 C)(k%2)!
=0 D)!
k%2==1
22.以下不能正确计算代数式 值的C语言表达式是
A)1/3*sin(1/2)*sin(1/2) B)sin(0.5)*sin(0.5)/3
C)pow(sin(0.5),2)/3 D)1/3.0*pow(sin(1.0/2),2)
23.以下能正确定义且赋初值的语句是
A)int n1=n2=10; B)char c=32;
C)float f=f+1.1; D)double x=12.3E2.5;
24.以下程序的功能是:
给r输入数据后计算半径为r的圆面积s。
程序在编译时出错。
main()
/* Beginning */
{ int r; float s;
scanf("%d",&r);
s=p*r*r; printf("s=%f\n",s);
}
出错的原因是
A)注释语句书写位置错误 B)存放圆半径的变量r不应该定义为整型
C)输出语句中格式描述符非法 D)计算圆面积的赋值语句中使用了非法变量
25.设有定义:
int k=1,m=2; float f=7;,则以下选项中错误的表达式是
A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m
26.设有定义:
int a=2,b=3,c=4;,则以下选项中值为0的表达式是
A)(!
a==1)&&(!
b==0) B)(a
c||1
C)a && b D)a||(b+b)&&(c-a)
27.有以下程序段
int k=0,a=1,b=2,c=3;
k=a
b:
a; k=k>c ?
c:
k;
执行该程序段后,k的值是
A)3 B)2 C)1 D)0
28.有以下程序段
int n,t=1,s=0;
scanf("%d",&n);
do{ s=s+t; t=t-2; }while (t!
=n);
为使此程序段不陷入死循环,从键盘输入的数据应该是
A)任意正奇数 B)任意负偶数 C)任意正偶数 D)任意负奇数
29.设变量已正确定义,则以下能正确计算f = n!
的程序段是
A) f=0; B) f=1;
for(i=1;i<=n;i++) f*=i; for(i=1;i C) f=1; D) f=1;
for(i=n;i>1;i++) f*=i; for(i=n;i>=2;i--) f*=i;
30.有以下程序
main()
{ char p[]={'a', 'b', 'c'}, q[]="abc";
printf("%d %d\n", sizeof(p),sizeof(q));
};
程序运行后的输出结果是
A)4 4 B)3 3 C)3 4 D)4 3
31.有以下程序
main()
{ char a1='M', a2='m';
printf("%c\n", (a1, a2) ); }
以下叙述中正确的是
A)程序输出大写字母M B)程序输出小写字母m
C)格式说明符不足,编译出错 D)程序运行时产生出错信息
32.有以下程序
#include
main()
{ char c1='1',c2='2';
c1=getchar(); c2=getchar(); putchar(c1); putchar(c2);
}
当运行时输入:
a<回车> 后,以下叙述正确的是
A)变量c1被赋予字符a,c2被赋予回车符
B)程序将等待用户输入第2个字符
C)变量c1被赋予字符a,c2中仍是原有字符2
D)变量c1被赋予字符a,c2中将无确定值
33.有以下程序
main()
{ int k=5,n=0;
while(k>0)
{ switch(k)
{ default :
break;
case 1 :
n+=k;
case 2 :
case 3 :
n+=k;
}
k--;
}
printf("%d\n",n);
}
程序运行后的输出结果是
A)0 B)4 C)6 D)7
34.有以下程序
#include
main()
{ char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'};
printf("%d %d\n", strlen(p), strlen(q));
}
以下叙述中正确的是
A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
D)由于p和q数组中都没有字符串结束符,故长度都不能确定
35.以下不合法的用户标识符是
A)j2_KEY
B)Double
C)4d
D)_8_
36.以下不合法的数值常量是
A)011
B)1e1
C)8.0E0.5
D)0xabcd
37.以下不合法的字符常量是
A)’\018’
B)’\"’
C)’\\’
D)’\xcc’
38.表达式3.6-5/2+1.2+5%2的值是
A)4.3
B)4.8
C)3.3
D)3.8
39.以下能正确定义字符串的语句是
A)char str[]={‘\064’};
B)char str=”kx43”;
C)char str=’’;
D)char str[]=”\0”;
40.以下数组定义中错误的是
A)int x[][3]={0};
B)int x[2][3]={{l,2},{3,4},{5,6}};
C)int x[][3]={{l,2,3},{4,5,6}};
D)int x[2][3]={l,2,3,4,5,6};
41.若有定义:
float x=1.5;int a=1,b=3,c=2;则正确的switch语句是
A)switch(x)B)switch((int)x);
{case 1.0:
printf("*\n"); {case 1:
printf("*\n");
case 2.0:
printf("**\n");} case 2:
printf("**\n");}
C)switch(a+b) D)switch(a+b)
{case 1:
printf("*\n");{case 1:
printf("*\n");
case 2+1:
printf("**\n");}case c:
printf("**\n");}
42.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
A)(!
E==0)
B)(E>0‖E<0)
C)(E==0)
D)(E!
=0)
43.要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义, 以下正确的程序段是
A)while((ch=getchar())!
=′N′)printf("%c",ch);
B)while(ch=getchar()!
=′N′)printf("%c",ch);
C)while(ch=getchar()==′N′)printf("%c",ch);
D)while((ch=getchar())==′N′)printf("%c",ch);
44.有以下程序
main()
{int y=10;
while(y--);printf("y=%d\n",y);
}
程序执行后的输出结果是
A)y=0
B)y=-1
C)y=1
D)while构成无限循环
45.有以下程序
main()
{int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出
A)0,1,2,0
B)0,0,0,3
C)1,1,2,0
D)编译有错
46.有以下程序
main()
{int i,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序执行后的输出结果是
A)x=4
B)x=8
C)x=6
D)x=12
47.有以下程序
main()
{int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf("%d",t[2-i][i]);
}
程序执行后的输出结果是
A)7 5 3
B)3 5 7
C)3 6 9
D)7 5 1
48.以下叙述中错误的是
A)C语言源程序经编译后生成后缀为.obj的目标程序
B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
49.以下叙述中错误的是
A)算法正确的程序最终一定会结束
B)算法正确的程序可以有零个输出
C)算法正确的程序可以有零个输入
D)算法正确的程序对于相同的输入一定有相同的结果
50.以下叙述中错误的是
A)C程序中的#include和#define行均不是C语句
B)除逗号运算符外,赋值运算符的优先级最低
C)C程序中,j++;是赋值语句
D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算
二、填空题
51.以下程序运行时,若从键盘输入:
10 20 30<回车>,输出的结果是 【1】 。
#include
main()
{ int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
52.以下程序运行后的输出结果是 【2】 。
main()
{ int a=3,b=4,c=5,t=99;
if(b if(a printf("%d %d %d\n",a,b,c);
}
53.(9)以下程序运行后的输出结果是 【3】 。
main()
{ int a,b,c;
a=10; b=20; c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c);
}
54.(10)以下程序运行后的输出结果是 【4】 。
main()
{ char c1,c2;
for(c1='0',c2='9';c1 printf("\n");
}
55.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:
B33<回车>,则输出结果是 【5】 。
#include
main()
{ char a,b;
a=getchar();scanf("%d",&b);
a=a-'A'+'0';b=b*2;
printf("%c %c\n",a,b);
}
56.以下程序运行后的输出结果是 【6】 。
main()
{ int x=0210; printf("%X\n",x);
}
57.以下程序运行后的输出结果是 【7】 。
main()
{ int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n",b);
}
58.以下程序运行后的输出结果是 【8】 。
main()
{ char c; int n=100;
float f=10; double x;
x=f*=n/=(c=50);
printf("%d %f\n",n,x);
}
59.以下程序的功能是计算:
s=1+12+123+1234+12345。
请填空。
main()
{ int t=0,s=0,i;
for( i=1; i<=5; i++)
{ t=i+ 【9】 s=s+t; }
printf("s=%d\n",s);
}
60.已知字母A的ASCII码为65。
以下程序运行后的输出结果是 【10】 。
main()
{ char a, b;
a='A'+'5'-'3'; b=a+'6'-'2'
printf("%d %c\n", a, b);
}
61.以下程序的功能是输出如下形式的方阵:
13 14 15 16
9 10 11 12
5 6 7 8
1 2 3 4
main()
{ int i,j,x;
for(j=4; j 【11】 j--)
{ for(i=1; i<=4; i++)
{ x=(j-1)*4 + 【12】
printf("%4d",x);
}
printf("\n");
}
}
62.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句【13】。
63. (7)以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。
当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:
a+b>c,a+c>b,b+c>a。
请填空。
main()
{float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if(【14】)printf("YES\n");/*a、b、c能构成三角形*/
else printf("NO\n");/*a、b、c不能构成三角形*/
}
64.以下程序的输出结果是【15】 。
main()
{int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1];
printf("%d\n",s);
}
65.以下程序的功能是:
输出100以内(不含100)能被3整除且