智慧树知到《C语言程序设计》章节测试答案
第一章
1、构成c程序的基本单位是函数,有且只有一个主函数
A:对
B:错
答案: 对
2、c语言一行可以写多条语句
A:对
B:错
答案: 对
3、不正确的叙述是( )。
A:注释说明只能位于一条语句的后面。
B:C源程序的基本组成单元是函数。
C:C源程序可由一个或多个函数组成。
D:每条语句最后必须有一个分号。
答案: 注释说明只能位于一条语句的后面。
4、C源程序的调试是指对源程序进行( )。
A:录入与编辑。
B:编译、连接与运行。
C:查错与排错。
D:连接与运行。
答案: 编译、连接与运行。
5、以下叙述中正确的是( )。
A:C程序的执行总是从main函数开始的。
B:一对花括号"{}"只能作为函数体的定界符。
C:C源程序编译时注释部分的错误将被发现。
D:构成C源程序的基本单位是函数,所有函数名都可以由用户命名。
答案: C程序的执行总是从main函数开始的。
第二章
1、以下选项中可用作C程序合法实数的是
A:0.1e0
B:3.0e0.2
C:E9
D:9.12E
答案: 0.1e0
2、以下程序的输出结果是
#include <stdio.h>
main()
{ int x=10,y=10;
printf("%d %dn",x–,–y); }
A:10 10
B:9 9
C:9 10
D:10 9
答案: 10 9
3、若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是
A:a=(b=4)=3;
B:a=b=c+1;
C:a=(b=4)+c;
D:a=1+(b=c=4);
答案: a=(b=4)=3;
4、写出下面程序的运行结果:
#include <stdio.h>
void main( )
{
int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d ",x,y,z);
}
A:2,3,1
B:2,2,1
C:1,1,1
D:2,2,3
答案: 2,3,1
5、写出下面程序的运行结果:
#include <stdio.h>
void main( )
{
int a=1,b=0;
printf("%d,",b=a+b);
printf("%d",a=2*b);
}
A:3,2
B:2,2
C:1,2
D:1,1
答案: 1,2
6、写出下面程序的运行结果:
main()
{ int a,b,c=9;
a=3,b=4;
c%= a+b;
printf(“%d”,c)
}
A:3
B:2
C:1
D:4
答案: 2
7、写出下面程序的运行结果:
#include <stdio.h>
main()
{ int a=4,b,c;
c=a+(b=2);
a+=a-=a*a;
printf("%d,%d,%d ",a,b,c);
}
A:4,2,6
B:-8,2,6
C:-12,2,6
D:-24,2,6
答案: -24,2,6
8、对于int n=3;执行n+=n-=n*n;后n的值是9。
A:对
B:错
答案: 错
9、在C语言中8.9e1.2是不正确的实型常量。
A:对
B:错
答案: 对
10、对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。
A:对
B:错
答案: 对
11、若x为整型变量、j为实型变量,当执行语句:x=(int)j;后,j也变为整型变量。
A:对
B:错
答案: 错
12、“!”的优先级可以比“/”高。
A:对
B:错
答案: 对
13、两个char 型数据相加,其结果为char型。
A:对
B:错
答案: 错
14、若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。
A:对
B:错
答案: 错
15、在C程序中,%是只能用于整数运算的运算符。
A:对
B:错
答案: 对
16、以下各数均不是合法的八进制数:256、03A2、-0127。
A:对
B:错
答案: 错
17、C语言程序中,任何英语单词均可以作标识符。
A:对
B:错
答案: 错
18、若有宏定义:#define M(x,y,z) xy+z,则宏引用M(2+3,4+5,6+7)通过宏展开后的表达式应为(2+3)(4+5)+6+7。
A:对
B:错
答案: 错
19、C语言中不区分大小写英文字母。
A:对
B:错
答案: 错
20、程序中的变量代表内存中的一个存储单元,它的值不可以随时修改。
A:对
B:错
答案: 错
21、0x173是正确的十六进制常数。
A:对
B:错
答案: 对
22、逻辑表达式-5&&!8的值为1。
A:对
B:错
答案: 错
23、下面程序的输出是____
#include<stdio.h>
int main()
{ int k=11;
printf("k=%d,k=%o,k=%xn",k,k,k);
return 1;
}
A:k=11,k=12,k=11
B:k=11,k=13,k=13
C:k=11,k=013,k=0xb
D:k=11,k=13,k=b
答案: k=11,k=13,k=b
24、在下列选项中,不正确的赋值语句是___.
A:++t;
B:n1=(n2=(n3=0));
C:k=i=j;
D:a=b+c=1;
答案: a=b+c=1;
25、下面程序的输出的是_.
#include<stdio.h>
void main()
{int x=10,y=3;
printf("%dn",y=x/y);
}
A:0
B:1
C:3
D:不确定的值
答案: 3
26、已知字母A的ASCII码为十进制的65,下面程序的输出是_.
#include<stdio.h>
void main()
{char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%cn",ch1,ch2);
}
A:67,D
B:B,C
C:C,D
D:不确定的值
答案: 67,D
27、为表示关系x≥y≥z,应使用C语言表达式____.
A:(x>=y)&&(y>=z)
B:(x>=y)AND(y>=z)
C:(x>=y>=z)
D:(x>=y) & (y>=z)
答案: (x>=y)&&(y>=z)
28、下面程序的输出结果是___.
#include<stdio.h>
void main()
{
int a=-1, b=4, k;
k=(++a<=0)&&(b–<=0);
printf("%d,%d,%dn",k,a,b);
}
A:1,1,2
B:1,0,3
C:0,1,2
D:0,0,3
答案: 0,0,3
29、若有以下定义和语句:
int a=010, b=0x10, c=10;
printf("%d,%d,%dn",a,b,c);
则输出结果是____.
A:10,10,10
B:8,16,10
C:8,10,10
D:8,8,10
答案: 8,16,10
30、已知有double型变量x=2.5,y=4.7,整型变量a=7,
则表达式 x+a%3*(int)(x+y)%2/4的值是____.
A:2.4
B:2.5
C:2.75
D:0
答案: 2.5
31、假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;
则该程序段执行后,m的值是___.假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;
则该程序段执行后,m的值是___.
A:4
B:3
C:2
D:1
答案: 1
32、有以下程序,其中k的初值为八进制数
#include <stdio.h>
main()
{int k=011;
printf("%dn",k++);
}
程序运行后的输出结果是____
A:12
B:11
C:10
D:9
答案: 9
33、有以下程序
#include
#define SUB(a) (a)-(a)
main()
{ int a=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf("%dn",d);
}
程序运行后的输出结果是___
A:0
B:-12
C:-20
D:10
答案: -20
34、有以下定义语句,编译时会出现编译错误的是___
A:char a=’a’;
B:char a=’n’;
C:char a=’aa’;
D:char a=’x2d’
答案: char a=’aa’;
35、以下选项中,不正确的 C 语言浮点型常量是___
A:160.
B:0.12
C:2e4.2
D:0.0
答案: 2e4.2
36、以下选项中,___是不正确的 C 语言字符型常量。
A:'a'
B:'x41'
C:'101'
D:"a"
答案: "a"
37、以下合法的标识符是___。
A:int
B:_a12
C:3ce
D:stu#
答案: _a12
38、已知int x=023,表达式++x的值是___。
A:17
B:18
C:19
D:20
答案: 20
39、已知int x=10,表达式x+=x-=x-x的值是___。
A:10
B:40
C:30
D:20
答案: 20
40、在 C 语言中,字符型数据在计算机内存中,以字符的___形式存储。
A:原码
B:反码
C:ASCII 码
D:BCD码
答案: ASCII 码
41、若变量x、i、j和k都是int型变量,则计算下面表达式后,x的值是___。
x=(i=4,j=16,k=32)
A:4
B:16
C:32
D:52
答案: 32
42、下列不正确的转义字符是___。
A:''
B:'''
C:'074'
D:' '
答案: '074'
43、image.png
A:a/b/ce3
B:3ae/b/c
C:3ae/bc
D:ae/c/b3
答案: 3ae/bc
44、要为字符型变量 a赋初值,下列语句中哪一个是正确的___。
A:char a="3";
B:char a=‘3’;
C:char a=%;
D:char a=*;
答案: char a=‘3’;
45、字符串"ABC"在内存占用的字节数是___。
A:3
B:4
C:6
D:8
答案: 4
46、若有说明语句:char c='72';则变量c在内存占用的字节数是___。
A:1
B:2
C:3
D:4
答案: 1
47、C语言中,要求运算对象只能为整数的运算符是___。
A:%
B:/
C:>
D:*
答案: %
48、若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是___。
A:1
B:2
C:2.0
D:2.5
答案: 2.0
49、sizeof (double)的结果值是___。
A:8
B:4
C:2
D:出错
答案: 8
50、以下用户标识符中,合法的是___。
A:int
B:nit
C:123
D:a+b
答案: nit
51、表达式18/4*sqrt(4.0)/8值的数据类型是___。
A:int
B:float
C:double
D:不确定
答案: double
第三章
1、有以下程序
#include <stdio.h>
void main()
{
char a,b,c,d;
scanf(“%c%c“,&a,&b);
c=getchar( );
d=getchar( );
printf(“%c%c%c%cn”,a,b,c,d);
}
当执行程序时,按下列方式输入数据
12↙
34↙
则输出结果是
A:1234
B:12
C:12 回车 3
D:12 回车34
答案:
2、若有定义:int a,b;,通过语句scanf("%d;%d",&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是
A:3 空格5
B:3,5
C:3分号5
D:35
答案:
3、以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)
A:printf("%cn",'a'-32);
B:printf("%dn",'A');
C:printf("%cn",65);
D:printf("%cn",'B'-1);
答案:
4、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中的大写字母转换为小写字母的语句是
A:c=(c-‘A’)%26+’a’;
B:c=c+32;
C:c=c-‘A’+’a’;
D:c=(‘A’+c)%26-‘a’;
答案:
5、在C语言中,每个语句和数据定义是用__ 结束
A:句号
B:逗号
C:分号
D:括号
答案:
6、“putchar(70); ” 这一C语句输出的结果为( )
A:70
B:F
C:提示语法错误
D:C
答案:
7、C 语言标准格式输入函数scanf()的参数表中要使用变量的地址值。
A:对
B:错
答案:
8、表达式语句和表达式没有什么区别。
A:对
B:错
答案:
9、C 语言标准输入操作中,gets()函数一次只可读取一个字符。
A:对
B:错
答案:
10、C 语言程序中可以有多个函数,但只能有一个主函数。
A:对
B:错
答案:
11、C 语言标准输出操作中,putchar()函数可以输出显示一个字符串。
A:对
B:错
答案:
12、C 语言标准格式输出函数printf()的参数表是由若干个表达式组成。
A:对
B:错
答案:
13、C 语言标准输入操作中,gets()函数一次只可读取一个字符。
A:对
B:错
答案:
14、以下叙述中正确的是
A:用C程序实现的算法必须要有输入和输出操作
B:用C程序实现的算法可以没有输出但必须要有输入
C:用C程序实现的算法可以没有输入但必须要有输出
D:用C程序实现的算法可以既没有输入也没有输出
答案:
15、在C语言中,执行下面两个语句后,输出的结果为( )。
char c1=97, c2=98;printf("%d %c",c1,c2);
A:97 98
B:97 b
C:a 98
D:a b
答案:
16、下列语句中符合C语言语法的赋值语句是
A:a=7+b+c=a+7;
B:a=7+b++=a+7;
C:a=7+b,b++,a+7
D:a=7+b,c=a+7;
答案:
17、在C语言语言中,退格符是( )
A:\n
B:\t
C:\f
D:\b
答案:
18、putchar()函数可以向终端输出一个
A:整型变量表达式值
B:实型变量值
C:字符串
D:字符或字符型变量值
答案:
19、以下选项中不是C语句的是( )。
A:++t
B:;
C:k=i=j;
D:{a/=b=1;b=a%2;}
答案:
20、有定义语句:int a=5,b,不能给b赋2的赋值语句是( )。
A:b=a/2;
B:b=b+2;
C:b=2%a;
D:b=5;b=2;
答案:
21、已有定义int a=-2;和输出语句printf("%8lx",a);以下正确的叙述是( )。
A:整型变量的输出形式只有%d一种
B:%x是格式符的一种,它可以适用于任何一种类型的数据
C:%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D:%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
答案:
22、以下语句的输出结果是 ( )。
printf("%dn",strlen("t" 65xffn"));
A:5
B:14
C:8
D:输出项不合法,无法正常输出
答案:
23、若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是( )。
A:10<回车>22<回车>33<回车>
B:10.0,22.0,33.0<回车>
C:10.0<回车>22.0 33.0<回车>
D:10 22<回车>33<回车>
答案:
24、使用scanf("a=%d,b=%d",&a,&b)为变量a,b赋值。要使a,b均为50,正确的输入是( )。
A:a=50 b=50
B:50 50
C:a=50,b=50
D:50,50
答案:
25、调用getchar和putchar函数时,必须包含的头文件是( )。
A:stdio.h
B:stdlib.h
C:define
D:以上都不对
答案:
26、以下叙述中不正确的是( )。
A:调用printf函数时,必须要有输出项
B:使用putchar函数时,必须在之前包含头文件stdio.h
C:在C语言中,整数可以以十进制、八进制或十六进制的形式输出
D:使用putchar函数可以不要输出项
答案:
27、putchar()函数可以向终端输出一个( )。
A:整型变量表达式值
B:实型变量值
C:字符串
D:字符或字符型变量
答案:
28、用getchar()函数可以从键盘读入一个( )。
A:整型变量表达式值
B:实型变量值
C:字符串
D:字符或字符型变量
答案:
第四章
1、以下程序段的输出结果是
main()
{ int i=1,j=1,k=2;
if((j++||k++)&&i++) printf("%d,%d,%dn",i,j,k);
}
A:1,1,2
B: 2,2,1
C:2,2,2
D:2,2,3
答案:
2、当c的值不为0时,能正确将c的值赋给变量a,b的是
A:c=b=a
B:(a=c)&&(b=c)
C:(a=c)||(b=c)
D:a=c=b
答案:
3、以下程序的运行结果是
main()
{ int a=010, b=10;
printf("%d,%dn" , ++a, b--);
}
A:11, 10
B:9, 10
C: 011, 10
D: 011, 9
答案:
4、已知int n,i=1,j=2;执行语句n=i<j?i++:j++;则i和j的值是
A:1,2
B:1,3
C:2,3
D:2,2
答案:
5、#include <stdio.h>
void main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%dn",y);}
程序运行后的输出结果是
A:3
B:2
C:1
D:0
答案:
6、#include <stdio.h>
main()
{int x=1,y=0,a=0,b=0;
switch(x)
{case 1: switch(y)
{case 0:a++;break;
case1:b++;break;}
case 2:a++;b++;break;
case 3:a++;b++;break;
default:a++;b++;}
printf(“na=%d,b=%d”,a,b);}
A.a=1,b=0 B.a=2,b=1 C.a=1,b=1 D.a=2,b=2
以上程序的输出是
A:a=1,b=0
B:a=2,b=1
C:a=1,b=1
D:a=2,b=2
答案:
7、下面程序的输出结果是:
#include<stdio.h>
void main()
{ int a=2, b=-1, c=2;
if(a<b)
if(b<0) c=0;
else c+=1;
printf("%d", c);
}
A:2
B:1
C:3
D:4
答案:
8、下程序功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出,请填空。
#include<stdio.h>
void main()
{int x=256;
printf(“%d-%d-%d”,___,x/10%10,x/100);}
A:x/10
B:x%10
C:x/10%10
D:x/100%10
答案:
9、有以下程序
#include <stdio.h>
void main()
{ int x;
scanf("%d",&x);
if(x>15) printf("%d",x-5);
if(x>10) printf("%d",x);
if(x>5) printf("%d ",x+5);
}
若程序运行时从键盘输入12<回车>,则输出结果为_
A:12
B:17
C:12 17
D:7
答案:
10、有以下程序(说明:字符0的ASCII码值为48)
#include <stdio.h>
main()
{char c1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c ",c1,c2);
}
若程序运行时从键盘输入48<回车>,则输出结果为_
A:09
B:0
C:9
D:'0' '9'
答案:
11、在C语言中,设有如下定义: int a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式:(m=a>b)&&(n=c>d)后,n的值为( )。
A:1
B:2
C:3
D:0
答案:
12、设有如下定义: int a=2,b; 则执行b=a&&1;语句后,b的结果是( )。
A:0
B:1
C:2
D:3
答案:
13、设a=3,b=4,c=5,则表达式!(a>b)&&!c||1的结果是( )。
A:1
B:0
C:2
D:4
答案:
14、能正确表示a 和 b同时为正或同时为负的逻辑表达式是( )。
A:(a>=0||b>=0)&&(a<0||b<0)
B:(a>=0&&b>=0)&&(a<0&&b<0)
C:(a+b>0)&&(a+b<=0)
D:a*b>0
答案:
15、以下程序段的输出结果是( )。
int a=10,b=50,c=30;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%d b=%d c=%dn",a,b,c);
A:a=10 b=50 c=10
B:a=10 b=30 c=10
C:a=50 b=30 c=10
D:a=50 b=30 c=50
答案:
16、有如下程序
intmain( )
{ float x=2.0,y;
if(x<0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf(“%fn”,y);
return 0;
}
该程序的输出结果是( )。
A:0.000000
B:0.250000
C:0.500000
D:1.000000
答案:
17、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( )。
A:a<>0
B:!a
C:a=0
D:a
答案:
18、有如下程序段:
int x =1, y=1 ;
int m , n;
m=n=1;
switch (m)
{ case 0 : x=x2;
case 1:
{
switch (n)
{ case 1 : x=x2;
case 2 : y=y2;break;
case 3 : x++;
}
}
case 2 : x++;y++;
case 3 : x=2;y*=2;break;
default:x++;y++;
}
执行完成后,x和y 的值分别为( )。
A:x=6 y=6
B:x=2 y=1
C:x=2 y=2
D:x=7 y=7
答案:
19、以下程序的输出结果是( )
intmain()
{ int a=1,b=3,c=5,d=4,x;
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d) x=2;
else x=3;
else x=6;
else x=7;
printf(“x=%d”,x);
return 0;
}
A:1
B:2
C:3
D:6
答案:
20、在C语言中,设x=1, y=2, 执行表达式 (x>y)?x++:++y以后x和y的值分别为( )。
A:1和2
B:1和3
C:2和2
D:2和3
答案:
21、以下程序段,运行后的输出结果是( )。
char m='b';
if(m++>'b') printf("%cn",m);
else printf("%cn",m–);
A:a
B:b
C:c
D:d
答案:
22、以下程序段的输出结果是( )。
int a=13,b=21,m=0;
switch(a%3)
{
case 0:m++;break;
case 1:m++;
switch(b%2)
{
default:m++;
case 0:m++;break;
}
}
printf("%d",m);
A:1
B:2
C:3
D:4
答案:
第五章
1、下述for循环语句____
int i,k;
for (i=0,k=-1;k=1;i++,k++) printf(“***”);
A:判断循环语句结束的条件非法
B:是无限循环
C:只循环一次
D:一次也不循环
答案:
2、#include <stdio.h>
main( )
{ int x=0,y=5,z=3;
while(z–>0&&++x<5) y=y-1;
printf(“%d,%d,%dn”,x,y,z);
} 程序执行后的输出结果是
A:3,2,0
B:3,2,-1
C:4,3,-1
D:5,-2,-5
答案:
3、有以下程序
main( )
{ int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf(“%dn”,s);
} 程序执行后的输出结果是
A:自然数1~9的累加和
B:自然数1~10的累加和
C:自然数1~9中的奇数之和
D:自然数1~10中的偶数之和
答案:
4、以下程序执行后的输出结果是()
main( )
{ int i,n=0;
for(i=2;i<5;i++)
{ do
{ if(i%3) continue;
n++;}
while(!i);
n++;}
printf(“n=%dn”,n);}
A:n=5
B:n=2
C:n=3
D:n=4
答案:
5、程序运行后的输出结果是
#include<stdio.h>
main()
{ int i,j,m=2;
for(i=1;i<3;i++)
{for(j=3;j>0;j–)
{if(i+j>3) break;
m=ij;} }
printf(“m=%dn”,m);}
A:m=6
B:m=2
C:m=4
D:m=5
答案:
6、以下程序运行后的输出结果是
#include<stdio.h>
main()
{int a=1,b=2;
for(;a<8;a++) { b+=a;a+=2;}
printf(“%d,%dn”,a,b);}
A:9,18
B:8,11
C:7,11
D:10,14
答案:
7、以下程序运行后的输出结果是
main()
{ int c=0,k;
for(k=1;k<3;k++)
switch(k)
{ default:c+=k;
case 2:c++;break;
case 4:c+=2;break; }
printf("%dn",c);}
A:3
B:5
C:7
D:9
答案:
8、以下程序的运行结果是
#include <stdio.h>
main()
{ int x=8;
for( ; x>0; x–)
{ if(x%3) {printf(“%d,”,x–);
continue;}
printf(“%d,”,–x); } }
A:7,4,2
B:8,7,5,2
C:9,7,6,4
D:8,5,4,2
答案:
9、下述程序的输出结果
#include<stdio.h>
main()
{int y=10;
while(y–);
printf(“y=%d”,y);}
A:y=0
B:y=1
C:y=随机值
D:y=-1
答案:
10、下面的程序 的结果是:
main()
{ int x=3;
do
{printf("%dn",x-=2);}
while(!(–x));}
A:输出的是1
B:输出的是1和-2
C:输出的是3和0
D:是死循环
答案:
11、下述for语句
int i,x;
for (i=0,x=1;i<=9&&x!=876;i++)
scanf(%d”,&x);
A:最多循环10次
B:最多循环9次
C:无限循环
D:一次也不循环
答案:
12、有以下程序
#include <stdio.h>
main()
{int s;
scanf("%d",&s);
while(s>0)
{ switch(s)
{ case 1:printf("%d",s+5);
case 2:printf("%d",s+4); break;
case 3:printf("%d",s+3);
default:printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
运行时,若输入1 2 3 4 5 0<回车>,则输出结果是
A:
6566456
B:66656
C:66666
D:666656
答案:
13、下面程序段的输出结果是__.
x=3;
do { y=x–;
if (!y) {printf("");continue;}
printf("#");
} while(x=2);
A:##
B:##
C:死循环
D:输出错误信息
答案:
14、下面程序的输出结果是___.
#include<stdio.h>
void main( )
{ int n=4;
while (n–) printf("%d ",n–);
}
A:2 0
B:3 1
C:3 2 1
D:2 1 0
答案:
15、以下程序运行后的输出结果是____.
#include<stdio.h>
void main()
{ int i=10,j=0;
do
{ j=j+1; i–;
}while(i>2);
printf("%dn",j);
}
A:50
B:52
C:51
D:8
答案:
16、下面程序的输出结果是____.
main( )
{
int i,k=0, a=0, b=0;
for(i=1;i<=4;i++)
{
k++;
if (k%2==0) {a=a+k; continue;}
b=b+k;
a=a+k;
}
printf("k=%d a=%d b=%dn",k,a,b);
}
A:k=5 a=10 b=4
B:k=3 a=6 b=4
C:k=4 a=10 b=3
D:k=4 a=10 b=4
答案:
17、下面程序的输出结果是___.
#include<stdio.h>
void main( )
{int y=9;
for(;y>0;y–)
{if(y%3==0)
{printf("%d",–y);
continue;}
}
}
A:741
B:852
C:963
D:875421
答案:
18、有以下程序
#include<stdio.h>
main()
{
int i,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>0;j–)
{if(ij>3) break;
m=ij;
}
}
printf("m=%dn",m);
}程序运行后的输出结果是___.
A:m=1
B:m=2
C:m=4
D:m=5
答案:
19、有以下程序
#include <stdio.h>
main()
{ int c=0,k;
for (k=1;k<3;k++)
switch (k)
{ default: c+=k;
case 2: c++;break;
case 4: c+=2;break;
}
printf(“%dn”,c);
}
程序运行后的输出结果是___
A:3
B:5
C:7
D:9
答案:
20、for(i=1;i<9;i+=1);该循环共执行了___次。
A:7
B:8
C:9
D:10
答案:
21、int a=2;while(a=0) a–;该循环共执行了___次。
A:0
B:1
C:2
D:3
答案:
22、执行完循环 for(i=1;i<100;i++);后,i的值为___。
A:99
B:100
C:101
D:102
答案:
23、以下 for语句中,书写错误的是___。
A:for(i=1;i<5;i++)
B:i=1;for(;i<5;i++);
C:for(i=1;i<5;i++);
D:for(i=1;i<5;) i++;
答案:
24、___语句,在循环条件初次判断为假,还会执行一次循环体。
A:for
B:while
C:do-while
D:以上都不是
答案:
25、有以下程序段,其运行结果是___
int i=5;
do{
if(i%3==1)
if(i%5==2)
{printf("%d",i);
break;}
i++;
}while(i!=0);
A:26
B:7
C:5
D:3*5
答案:
26、i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是___。
for(i=5;i;i–)
for(j=0;j<4;j++){…}
A:20
B:24
C:25
D:30
答案:
27、以下不构成无限循环的语句或语句组是___。
A:n=10; while(n);{n–;}
B:n=0; while(1){n++;}
C:n=0; do{++n;}while(n<=0);
D:for(n=0,i=1;;i++)n+=i;
答案:
28、有以下程序段,其运行结果是___。
Int y=9;
for(;y>0;y–)
if(y%3==0) printf("%d",–y);
A:875421
B:963
C:852
D:741
答案:
29、有以下程序段,其运行结果是___。
int i,j;
for(i=3;i>=1;i–)
{for(j=1;j<=2;j++)
printf("%d",i+j);
printf("n");}
A:2 3 4
3 4 5
B:4 3 2
5 4 3
C:2 3
3 4
4 5
D:4 5
3 4
2 3
答案:
第六章
1、若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
则数值为4的表达式是
A:a[g-c]
B:a[4]
C:a['d'-'c']
D:a['d'-c]
答案:
2、以下程序运行后的输出结果是
#include<stdio.h>
main()
{int a[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0;
for(i=1;i<3;i++) s=s+a;
printf(“%dn”,s);}
A:6
B:10
C:11
D:5
答案:
3、#include<stdio.h>
main()
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=1;i<3;i++)
for(j=1;j<=1;j++) t+=b[b[j]];
printf(“%dn”,t);}
程序运行后的输出结果是
A:1
B:3
C:4
D:9
答案:
4、若有以下定义和语句
char s1[10]="abcd!",s2[10]="n123";
printf("%d,%d",strlen(s1),strlen(s2));
则输出结果是
A:5 5
B:10 5
C:10 7
D:5 8
答案:
5、#include <stdio.h>
main()
{ char s[]={"012xy"};
int i,n=0;
for(i=0;s!=0;i++)
if(s>'a'&&s<='z') n++;
printf("%dn",n); }
程序运行后的输出结果是
A:0
B:2
C:3
D:5
答案:
6、以下程序的运行结果是
#include <stdio.h>
main()
{ int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++) c[s]++;
for(i=1;i<5;i++) printf(“%d”,c);
printf(“n”); }
A:1 2 3 4
B:2 3 4 4
C:4 3 3 2
D:1 1 2 3
答案:
7、有以下程序
#include <stdio.h>
main()
{ char s[]="012xy 8s34f4w2";
int i,n=0;
for(i=0;s!=0;i++)
if(s>='0'&&s<='9') n++;
printf("%dn",n);
}
程序运行后的输出结果是
A:0
B:3
C:7
D:8
答案:
8、#include<stdio.h>
main()
{int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=1;i<3;i++)
for(j=1;j<3;j++) printf(“%d”,a[j]);
printf(“ ”);}
程序运行后的输出结果是
A:5689
B:5678
C:1234
D:4567
答案:
9、#include<stdio.h>
main()
{int a[3][3]=1,2,3},{4,5,6},{7,8,9;
int b[3]={0},i;
for(i=1;i<3;i++) b=a[2]+a[2];
for(i=1;i<3;i++)printf(“%d”,b);
printf(“ ”);}
程序运行后的输出结果是
A:14
B:1418
C:1428
D:18
答案:
10、以下程序用以删除字符串中所有空格,横线处需要填哪条语句
#include<stdio.h>
main()
{char[100]={“Our teacher teach c language!”};
int i,j;
for(i=j=0;s!=‘’;i++)
if(s!=‘ ’) {s[j]=s;j++;}
s[j]=__;
printf(“%s ”,s); }
A:
B:'0'
C:" "
D:48
答案:
11、C 语言中,字符串常量存放在字符数组中要有一个结束符,该结束符是0。
A:对
B:错
答案:
12、C语言允许用字符串的方式对数组作初始化赋值。
A:对
B:错
答案:
13、在对数组全部元素赋初值时,不可以省略行数,但能省略列数
A:对
B:错
答案:
14、对二维数组的正确说明是
A:int a[][]={1,2,3,4,5,6};
B:int a[2][]={1,2,3,4,5,6};
C:int a[][3]={1,2,3,4,5,6};
D:int a[2,3]={1,2,3,4,5,6};
答案:
15、以下关于数组的描述正确的是
A:数组的大小是固定的,但可以有不同的类型的数组元素;
B:数组的大小是可变的,但所有数组元素的类型必须相同;
C:数组的大小是固定的,但所有数组元素的类型必须相同;
D:数组的大小是可变的,但可以有不同的类型的数组元素;
答案:
16、在定义int a[10];之后,对a的引用正确的是
A:a[9]
B:a[6.3]
C:a(6)
D:a[10]
答案:
17、以下对一维数组a进行不正确初始化的是
A:int a[10]=(0,0,0,0);
B:int a[10]={};
C:int a[]={0};
D:int a[10]={10*2};
答案:
18、以下不能对一维数组a进行正确初始化的语句是()。
A:int a[10]={0,0,0,0,0};
B:int a[10]={};
C:int a[] = {0};
D:int a[10]={10*1} ;
答案:
19、在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A:整型常量
B:整型表达式
C:整型常量或整型表达式
D:任何类型的表达式
答案:
20、对以下说明语句,理解正确的是( )。
int a[10]={6,7,8,9,10};
A:将5个初值依次赋给a[1]到a[5]
B:将5个初值依次赋给a[0]到a[4]
C:将5个初值依次赋给a[6]到a[10]
D:因为数组长度与初值的个数不相同,所以此语句不正确
答案:
21、若有说明:int a[][4]={0,0};则下面不正确的叙述是( )。
A:数组a的每个元素都可得到初值0
B:二维数组a的第一维大小为1
C:当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
D:只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
答案:
22、若有说明int a[3][4];则a数组元素的非法引用是( )。
A:a[0][2*1]
B:a[1][3]
C:a[4-2][0]
D:a[0][4]
答案:
23、以下能对二维数组a进行正确初始化的语句是( )。
A:int a[2][]=1,0,1},{5,2,3 ;
B:int a[][3]=1,2,3},{4,5,6 ;
C:int a[2][4]=1,2,3},{4,5},{6 ;
D:int a[][3]=1,0,1},{},{1,1 ;
答案:
24、设有数组定义:char arr[]="China";则数组arr所占空间为( )。
A:4个字节
B:5个字节
C:6个字节
D:7个字节
答案:
25、若有以下语句,则正确的描述是()。
char a[]="toyou";
char b[]={'t','o','y','o','u'};
A:a数组和b数组的长度相同
B:a数组长度小于b数组长度
C:a数组长度大于b数组长度
D:a数组等价于b数组
答案:
26、下面叙述正确的是( )。
A:两个字符串所包含的字符个数相同时,才能比较字符串
B:字符个数多的字符串比字符个数少的字符串大
C:字符串”STOP ”与”STOP”相等
D:字符串”That”小于字符串”The”
答案:
27、在定义int a[5][4];之后,对数组元素的引用正确的是
A:a[2][4]
B:a[5][0]
C:a[0][0]
D:a[0,0]
答案:
28、在执行int a[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是
A:1
B:2
C:4
D:5
答案:
29、在定义int a[3][4][2];后,第10个元素是( )
A:a[2][1][2]
B:a[1][0][1]
C:a[2][0][1]
D:a[2][2][1]
答案:
30、在C语言中,引用数组元素时,其数组下标的数据类型允许是
A:整型常量
B:整型表达式或整型常量
C:实型常量
D:任何类型 的表达式
答案:
31、有字符数组a[80],b[80],则正确的输出语句是
A:puts(a,b);
B:printf(“%s,%s”,a[],b[]);
C:putchar(a,b);
D:puts(a);puts(b);
答案:
32、以下不能正确进行字符串赋初值的语句是
A:char str[5]="good!";
B:char str[]="good!";
C:char *str="good!";
D:char str[5]={''g'',''o'',''o'',''d''};
答案:
33、已有定义:char a[]="xyz",b[]={''x'',''y'',''z''};,以下叙述中正确的是 ( )。
A:数组a和b的长度相同
B:a数组长度小于b数组长度
C:a数组长度大于b数组长度
D:上述说法都不对
答案:
34、在C语言中,能实现字符串连接的函数是( )
A:strcat()
B:strcmp()
C:strcpy()
D:strlen()
答案:
35、在C语言中,有:char str[]="abcd"; printf(%dn",strlen(str));上面程序片段的输出结果是( )
A:3
B:4
C:6
D:12
答案:
36、在C语言中,不能把字符串"Hello!"赋给数组b的语句是( )。
A:char b[10]={''H'',''e'',''l'',''l'',''o'',''!''};
B:char b[10];b="Hello!";
C:char b[10];strcpy(b,"Hello!");
D:char b[10]="Hello!";
答案:
37、函数调用:strcat(strcpy(str1,str2),str3)的功能是
A:将串str1复制到串str2中后再连接到串str3之后
B:将串str1连接到串str2之后再复制到串str3之后
C:将串str2复制到串str1中后再将串str3连接到串str1之后
D:将串str2连接到串str1之后再将串str1复制到串str3中
答案:
38、不能把字符串:Hello!赋给数组b的语句是
A:char b[10]={'H','e','l','l','o','!',0};
B:char b[10];b="Hello!";
C:char b[10];strcpy(b,"Hello!");
D:char b[10]="Hello!";
答案:
第七章
1、#include<stdio.h>
int fun()
{static int x=1;
x*=2;return x;}
main()
{int i,s=1;
for(i=1;i<=2;i++) s=fun();
printf(“%dn”,s);}
程序运行后的输出结果是
A:0
B:1
C:4
D:8
答案:
2、#include <stdio.h>
int f(int t[],int n);
main()
{int a[4]={1,2,3,4},s;
s=f(a,4);
printf(“%dn”,s);
}
int f(int t[],int n)
{if (n>0) return t[n-1]+f(t,n-1);
else return 0;}
程序运行后的输出结果是
A:4
B:10
C:14
D:6
答案:
3、#include <stdio.h>
int f(int x)
{int y;
if(x==0||x==1) return (3);
y=x*x-f(x-2);
return y;
}
main()
{int z;
z=f(3); printf("%dn",z);}
程序的运行结果是
A:0
B:9
C:6
D:8
答案:
4、#include <stdio.h>
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf("%dn",s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n; }
程序运行后的输出结果是
A:7
B:8
C:9
D:10
答案:
5、#include <stdio.h>
void fun(int p)
{ int d=2;
p=d++;
printf("%d",p); }
main()
{ int a=1;
fun(a);
printf("%dn",a); }
程序运行后的输出结果是
A:32
B:12
C:21
D:22
答案:
6、#include<stdio.h>
int fun(int x,int y)
{ if(x==y) return(x);
else return((x+y)/2);
}
main()
{ int a=4,b=5,c=6;
printf("%dn",fun(2*a,fun(b,c))); }
程序运行后的输出结果是
A:3
B:6
C:8
D:12
答案:
7、#include <stdio.h>
int fun(int a,int b)
{ if(b==0) return a;
else return(fun(–a,–b));
}
main()
{ printf("%dn", fun(4,2));}
程序的运行结果是
A:1
B:2
C:3
D:4
答案:
8、#include<stdio.h>
void fun(int a, int b)
{ int t;
t=a; a=b; b=t;}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0}, i;
for(i=0; i<10; i+=2) fun(c, c[i+1]);
for(i=0; i<10; i++) printf("%d,", c);
printf("n");}
程序的运行结果是
A:l,2,3,4,5,6,7,8,9,0,
B:2,l,4,3,6,5,8,7,0,9,
C:0,9,8,7,6,5,4,3,2,1,
D:0,1,2,3,4,5,6,7,8,9,
答案:
9、#include <stdio.h>
void fun(int a[], int n)
{ int i, t;
for(i=0; i<n/2; i++)
{t=a; a=a[n-1-i]; a[n-1-i]=t;}
}
main()
{ int k[10]={1,2,3,4,5,6,7,8,9,10}, i;
fun(k,5);
for(i=2; i<8; i++) printf("%d", k);
printf("n");}
程序的运行结果是
A:345678
B:876543
C:1098765
D:321678
答案:
10、有以下程序
void swap1(int c[])
{ int t;
t=c[0];c[0]=c[1];c[1]=t; }
void swap2(int c0,int c1)
{int t;
t=c0;c0=c1;c1=t; }
main()
{int a[2]={3,5},b[2]={3,5};
swap1(a); swap2(b[0],b[1]);
printf(“%d %d %d %dn”,a[0],a[1],b[0],b[1]); }
执行后输出的结果是:
A:5 3 5 3
B:5 3 3 5
C:3 5 3 5
D:3 5 5 3
答案:
11、有以下程序
#include <stdio.h>
int fun()
{ static int x=1;
x=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s=fun();
printf("%dn",s);
}
程序运行后的输出结果是
A:0
B:10
C:30
D:64
答案:
12、有以下程序,程序运行后的输出结果是( )。
#include <stdio.h>
int new_div(double a, double b)
{ return a/b + 0.5; }
intmain( )
{ printf("%d", new_div(7.8, 3.1));
return 0;
}
A:1
B:2
C:3
D:0
答案:
13、在一个C语言程序中,下列说法正确的是( )。
A:main函数必须出现在所有函数之前
B:main函数可以出现在其它函数之外的任何位置
C:main函数必须出现在所有函数之后
D:main函数必须出在固定位置
答案:
14、以下叙述中正确的是( )。
A:函数名允许用数字开头
B:函数调用时,不必区分函数名称的大小写
C:调用函数时,函数名必须与被调用的函数名完全一致
D:在函数体中只能出现一次return语句
答案:
15、以下程序的输出结果是( )。
#include "stdio.h"
int f(int x)
{
int y;
if (x == 0 || x== 1) return (3);
y = x*x - f(x-2);
return y;
}
int main()
{
int z;
z = f(3);
printf("%dn", z);
return 0;
}
A:0
B:9
C:6
D:8
答案:
16、有以下程序
#include <stdio.h>
intmain()
{ int findmax(int,int,int),m;
┋
m=findmax(a,b,c);
┋
}
int findmax(int x,int y,int z)
{ … }
则以下叙述正确的是( )。
A:在main函数中声明了findmax函数
B:在main函数中定义了findmax函数
C:在main函数中两次调用了findmax函数
D:在main函数内、外重复定义了findmax函数
答案:
17、设有函数定义:void sub(int k,char ch){… }则以下对函数sub的调用语句中,正确的是( )。
A:sub(1,97);
B:sub(2,'97');
C:n=sub(3,'a');
D:sub(4,"a");
答案:
18、下列叙述中错误的是( )。
A:主函数中定义的变量在整个程序中都是有效的。
B:在其它函数中定义的变量在主函数中也不能使用。
C:形式参数也是局部变量。
D:复合语句中定义的变量只在该复合语句中有效。
答案:
19、凡是函数中未指定存储类别的局部变量,其隐含的存储类型是( )。
A:自动(auto)
B:静态(static)
C:外部(extern)
D:寄存器(register)
答案:
20、下面程序的输出结果是( )。
#include <stdio.h>
intmain( )
{ int x=10;
{ int x=20;
printf ("%d,", x);
}
printf("%dn", x);
return 0;
}
A:10,20
B:20,10
C:10,10
D:20,20
答案:
21、以下程序的输出结果是( )。
#include <stdio.h>
int fun(int a,int b)
{
static int m=0, i=2;
i +=m+1;
m = i + a + b;
return m;
}
int main( )
{
int k=4, m=1, p;
p = fun( k,m );
printf("%d,", p);
p = fun( k,m );
printf("%dn" ,p );
return 0;
}
A:8,17
B:8,16
C:8,8
D:8,20
答案:
22、下面程序的输出结果是( )。
intmain()
{ int a=2,i;
for(i=0;i<3;i++)
printf("%4d",f(a));
return 0;
}
f(int a)
{ int b=0;
static int c=3;
b++;
c++;
return(a+b+c);
}
A:7 7 7
B:7 10 13
C:7 9 11
D:7 8 9
答案:
23、函数返回值的类型是由( )决定的。
A:调用函数时临时
B:return语句的表达式类型
C:调用该函数的主调函数类型
D:定义函数时,所指定的函数类型
答案:
24、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。
A:函数的形参和实参分别占用不同的存储单元
B:形参只是形式上的存在,不占用具体存储单元
C:同名的实参和形参占同一存储单元
D:函数的实参和其对应的形参共占同一存储单元
答案:
25、有如下函数定义:
#include <stdio.h>
int fun( int k )
{ if (k<1) return 0;
else if (k==1) return 1;
else return fun(k-1)+1;
}
若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( )。
A:1
B:2
C:3
D:5
答案:
第八章
1、下列语句组中,正确的是
A:char s;s= " Olympic ";
B:char s[7];s="Olympic";
C:char s;s={"Olympic"};
D:char s[7];s={"Olympic"};
答案:
2、void fun(char c,int d)
{ c=c+1; d=d+1;
printf(“%c,%c,”,c,d);
}
main()
{ char b=‘a’,a=‘A’;
fun(&b,a); printf(“%c,%cn”,b,a);
}
程序运行后的输出结果是
A:b,B,b,A
B:b,B,B,A
C:a,B,B,a
D:a,B,a,B
答案:
3、设有定义double a[10],s=a;以下能够代表数组元索a[3]的是
A:(s)[3]
B:(s+3)
C:s[3]
D:*s+3
答案:
4、#include<stdio.h>
#define N 8
void fun(int x,int i)
{
x=*x+i;
}
main()
{int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=0;i<N/2;i++)
{ printf(“%d”,a);}
printf(“n”);
}
程序运行后的输山结果是
A:1313
B:2234
C:3234
D:1234
答案:
5、#include <stdio.h>
main()
{ int m=1,n=2,p=&m,q=&n,r;
r=p;p=q;q=r;
printf("%d,%d,%d,%dn",m,n,p,*q);
}
程序运行后的输出结果是
A:1,2,2,1
B:1,2,1,2
C:2,1,2,1
D:2,1,1,2
答案:
6、#include <stdio.h>
#include <string.h>
main()
{char str[][20]={"OneWorld","OneDream!"};
char p=str[1];
printf(“%d,”,strlen(p));
printf("%sn",p); }
程序运行后的输出结果是
A:9,OneWorld
B:9,OneDream!
C:10,OneWor
D:10,One*Dream!
答案:
7、下列函数的功能是
fun(char a,char b)
{ while((b=a)!=' '){a++;b++;}
}
A:使指针b指向a所指字符串
B:将a所指字符串赋给b所指空间
C:将a所指字符串和b所指字符串进行比较
D:检查a和b所指字符串中是否有' '
答案:
8、#include<stdio.h>
main()
{char s=“ABC”;
do
{printf(“%d”,s%10);s++;}
while(*s);
}
字母A的ASCII码值为65.程序的输出结果是
A:567
B:656667
C:5670
D:ABC
答案:
9、#include<stdio.h>
void fun(char s)
{ while(s)
{ if(s%2==0) printf("%c",s);s++; }
}
main()
{ char a[]={"abcd"};
fun(a);printf("n");}
字母a的ASCⅡ码值为97,程序的输出结果是
A:abcd
B:ab
C:cd
D:bd
答案:
10、#include <stdio.h>
void f(int p,intq);
main()
{ int m=1,n=2,r=&m;
f(r,&n); printf(“%d,%d”,m,n);
}
void f(int p,int q)
{p=p+1;q=*q+1;}
程序运行后输出的结果是
A:1,4
B:2,3
C:1,3
D:1,2
答案:
11、#include <stdio.h>
main()
{ char a[ ]={"abcd","ef","gh","ijk"};
int i;
for(i=0;i<4;i++)
printf("%c",a); }
程序运行后输出的结果是
A:aegi
B:dfhk
C:abcd
D:abcdefghijk
答案:
12、#include <stdio.h>
int b=2;
int fun(int k)
{
b=k+b;return(b);
}
main()
{ int a[10]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++) {b=fun(a)+b;printf("%3d",b);}
}
程序运行后输出的结果是
A:10 12
B:6 14
C:8 10
D:10 16
答案:
13、以下程序的输出结果是____
#include<stdio.h>
void swap(int a,intb)
{ int t;
{ t=a; a=b; b=t; }
}
main()
{ int i=3,j=5,p=&i,q=&j;
swap(p,q); printf(“%d %d ”,p,*q);
}
A:5 3
B:3 5 53
C:3 5
答案:
14、以下程序的输出结果是__
#include<stdio.h>
main()
{ int a[5]={2,4,6,8,10}, p;
p=a; p++;
printf(“%d”,p);
}
A:4
B:2
C:5
D:6
答案:
15、有以下程序
void f( int y,int x)
{y=y+x; x=x+y;}
main( )
{ int x=2,y=4;
f(y,&x);
printf(“%d %d ”,x,y);
} 执行后输出的结果是
A:2 4
B:8 4
C:4 8
D:4 2
答案:
16、以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。
void sstrcpy(char s,chart)
{
while(s++=__);
}
main( )
{ char str1[100],str2[]=”abcdefgh”;
sstrcpy(str1,str2);
printf(“%s ”,str1);
}
A:t++
B:t
C:s
D:*s++
答案:
17、C语言程序中,当调用函数时实参和形参各占一个独立的存储单元。
A:对
B:错
答案:
18、若有定义:int a[5],*p;,则操作p=a;是合法的操作。
A:对
B:错
答案:
19、若有定义:int a[5],*p;,则操作p=&a[2];是合法的操作。
A:对
B:错
答案:
20、若有定义:int a[5][5],*p;,则操作p=a;是合法操作。
A:对
B:错
答案:
21、若有定义:int a[5][5], (p)[5];,则操作p=a;是合法操作。
A:对
B:错
答案:
22、若有定义:int a[5][5], (*p)[5];,则操作p=a[0];是合法操作。
A:对
B:错
答案:
23、凡是整型变量可以参加的运算,指针变量都可以参加。
A:对
B:错
答案:
24、对于指向同一个数组的两个变量而言,两个指针变量相减的操作是有意义的。
A:对
B:错
答案:
25、对数组各元素的存取完全可以不用下标变量而用指针来代替。
A:对
B:错
答案:
26、下列关于指针概念的描述中,错误的是( )
A:指针中存放的是某变量或对象的地址值
B:指针的类型是它所存放的数值的类型
C:指针是变量,它也具有一个内存地址值
D:指针的值是可以改变的
答案:
27、已知:int a[5],p=a;则与++p相同的是( )。
A:++p
B:a[0]
C:p++
D:++a[0]
答案:
28、已知:int a[ ]={1,2,3,4,5},p=a;在下列数组元素地址的表示中,正确的是( )。
A:&(a+1)
B:&(p+1)
C:&p[2]
D:p++
答案:
29、若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。
A:p
B:((a+i))
C:a[p-a]
D:(&a)
答案:
30、下列语句组中,正确的是( )
A:char s;s="Olympic";
B:char s[7];s="Olympic";
C:char s;s={"Olympic"};
D:char s[7];s={"Olympic"};
答案:
31、若有定义int(pt)[3];,则下列说法正确的是( )
A:定义了基类型为int的三个指针变量
B:定义了基类型为int的具有三个元素的指针数组pt
C:定义了一个名为pt、具有三个元素的整型数组
D:定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
答案:
32、有以下程序
#include <stdio.h>
int f(int t[],int n);
main()
{ int a[4]={1,2,3,4},s;
s=f(a,4);
printf("%dn",s);
}
int f(int t[],int n)
{ if(n>0) return t[n-1]+f(t,n-1);
else return 0;
}程序运行后的输出结果是( )
A:4
B:1O
C:14
D:6
答案:
33、有以下程序
#include <stdio.h>
main()
{ int m=1,n=2,p=&m,q=&n,r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%dn”,m,n,p,*q);
}
程序运行后的输出结果是( )
A:1,2,1,2
B:1,2,2,1
C:2,1,2,1
D:2,1,1,2
答案:
34、若有定义语句:int a[4][10],p,q[4];且0≤i<4,则错误的赋值是( )
A:p=a
B:q=a
C:p=a
D:p=&a[2][1]
答案:
35、有以下程序
#include <stdio.h>
#include <string.h>
main()
{ char str[ ][20]={“OneWorld”, “OneDream!”},p=str[1];
printf(“%d,”,strlen(p));printf(“%sn”,p);
}
程序运行后的输出结果是( )
A:9,OneWorld
B:9,OneDream
C:10,OneDream
D:10,One*World
答案:
36、下列函数的功能是( )
fun(char a,char b)
{ while((b=a)!=’ ’) {a++,b++;} }
A:将a所指字符串赋给b所指空间
B:使指针b指向a所指字符串
C:将a所指字符串和b所指字符串进行比较
D:检查a和b所指字符串中是否有’ ’
答案:
37、设有定义:char c;,以下选项中能够使字符型指针c正确指向一个字符串的是( )
A:char str[ ]=”string”;c=str;
B:scanf(“%s”,c);
C:c=getchar();
D:c=”string”;
答案:
38、有以下程序
#include <stdio.h>
void fun(int a,intb)
{int c;
c=a;a=b;b=c;
}
main()
{int x=3,y=5,p=&x,q=&y;
fun(p,q);printf("%d,%d,",p,q);
fun(&x,&y);printf("%d,%dn",p,*q);
}
程序运行后的输出结果是( )
A:3,5,5,3
B:3,5,3,5
C:5,3,3,5
D:5,3,5,3
答案:
39、已知char s[10],p=s;,则在下列语句中,错误的语句是( )。
A:p=s+5;
B:s=p+s;
C:s[2]=p[4]
D:p=s[0]
答案:
40、已知char b[5],p=b;,则正确的赋值语句是( )。
A:b=””;
B:b=”abcd”;
C:p=”abcd”;
D:*p=”abcd”;
答案:
41、已知char s[20]=”programming”,ps=s;则不能引用字母o的表达式是( )。
A:ps+2
B:s[2]
C:ps[2]
D:ps+=2,ps
答案:
42、下列选项中,正确的语句组是( )。
A:char s[8];s={"Beijing"};
B:char s;s={"Beijing"};
C:char s[8];s="Beijing";
D:char s;s="Beijing";
答案:
43、已知char p,q;下面语句正确的是( )。
A:p*=3;
B:p/=q;
C:p+=3;
D:p+=q;
答案:
44、若说明int p,n;则通过语句scanf能够正确读入数据n的程序段是( )。
A:p=&n;scanf("%d",&p);
B:p=&n;scanf("%d",p);
C:scanf("%d",n);
D:p=&n;scanf("%d",p);
答案:
45、若有定义:int x,pb;则以下正确的表达式是( )
A:pb=&x
B:pb=x
C:pb=&x
D:pb=x
答案:
46、以下程序的输出结果是( )
#include<stdio.h>
void main()
{printf(“%dn”,NULL);}
A:因变量无定义输出不定值
B:0
C:-1
D:1
答案:
47、已知指针p的指向如图所示的a[1],则执行语句p++;后,p的值是( )。
image.png
A:20
B:30
C:21
D:31
答案:
48、已知指针p的指向如图所示的a[1],则表达式*++p的值是( )。
image.png
A:20
B:30
C:21
D:31
答案:
49、已知指针p的指向如图所示的a[1],则表达式++*p的值是( )。
image.png
A:20
B:30
C:21
D:31
答案:
50、若有语句int point,a=4;和 point=&a;下面均代表地址的一组选项是( )。
A:a,point,&a
B:&a,&a,point
C:&point,point,&a
D:&a,&*point,point
答案:
51、若有下面的程序段:
char s[]="china";char p; p=s;
则下列叙述正确的是( )。
A:s和p完全相同
B:数组s中的内容和指针变量p中的内容相等
C:s数组长度和p所指向的字符串长度相等
D:p与s[0]相等
答案:
52、已定义以下函数
fun(char p2, charp1)
{
while((p2=p1)!=’ ’){p1++;p2++;}
}
函数的功能是( )。
A:将p1所指字符串复制到p2所指内存空间
B:将p1所指字符串的地址赋给指针p2
C:对p1和p2两个指针所指字符串进行比较
D:检查p1和p2两个指针所指字符串中是否有’ ’
答案:
53、下面程序段中,输出的个数是( )。
char s="ta 18bc";
for(;s!=′ ′;s++)printf("");
A:9
B:5
C:6
D:7
答案:
54、阅读下列程序,则执行后的结果为( )。
#include "stdio.h"
int main()
{
int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%xn",c[2][2],((c+1)+1));
}
A:3e,6
B:62,5
C:56,5
D:3E,6
答案:
55、现有int a,b;,b=&a;,则下列运算错误的是( )。
A:&a
B:&a
C:&b
D:&*b
答案:
56、现有如下定义语句,表示数组元素s的表达式不正确的是( )。
intp,s[20],i;
p=s;
A:(s+i)
B:(p+i)
C:(s=s+i)
D:*(p=p+i)
答案:
第九章
1、#include<stdio.h>
#include<string.h>
struct A
{int a;
char b[10];
double c;};
void f(struct A t);
main()
{struct A a={1001,"ZhangDa",1098.0};
f(a);
printf("%d,%s,%6.1fn",a.a,a.b,a.c);
}
void f(struct A t)
{t.a=1002;
strcpy(t.b,"ChangRong");
t.c=1202.0;
}
结果是
A:1001,zhangDa,1098.0
B:1002,chang Rong,1202.0
C:1001,changRong,1098.0
D:1002,Zhang Da,1202.0
答案:
2、#include <stdio.h>
struct ord
{ int x,y;} dt[2]={1,2,3,4};
main( )
{ struct ord *p=dt;
printf(“%d,”,++p->x);
printf(“%dn”,++p->y);
}
程序的运行结果是
A:1,2
B:2,3
C:3,4
D:4,1
答案:
3、#include <stdio.h>
struct st
{ int x, y;} data[2]={l,10,2,20};
main()
{ struct st *p=data;
printf("%d,", p->y);
printf("%dn",(++p)->x);
}
程序的运行结果是
A:10,1
B:20,1
C:10,2
D:20,2
答案:
4、#include <stdio.h>
main()
{ struct STU
{ char name[9];
char sex;
double score[2];
};
struct STU a={"Zhao",'m',85.0,90.0),b={"Qian",'f',95.0,92.0);
b=a;
printf("%s,%c,%2.0f,%2.0fn", b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是
A:Qian,f,95,92
B:Qian,m,85,90
C:Zhao,f,95,92
D:Zhao,m,85,90
答案:
5、有以下程序
struct S
{ int a,b;} data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%dn",++(p.a));
}
程序运行后的输出结果是
A:10
B:11
C:20
D:21
答案:
6、#include <stdio.h>
typedef struct
{int num;double s;} REC;
void fun1(REC x)
{x.num=23;x.s=88.5;}
main()
{ REC a={16,90.0};
fun1(a);
printf("%d ",a.num); }
上述程序的输出结果为 ____
A:16
B:23
C:90
答案:
7、下程序运行结果____
#include <stdio.h>
#include <string.h>
struct A
{int a;
char b[10];
double c;
};
void f (struct A t);
main()
{struct A a={1001,”ZhangDa”,1098.0};
f(&a);
printf(“%d,%s,%6.1f ”,a.a,a.b,a.c);
}
void f(struct A t)
{
strcpy(t->b, ”ChangRong”);
}
A:1001,ZhangDa,1098.0
B:1001,ChangRong,1098.0
C:1001,”ZhangDa”,1098.0
D:1001,"ChangRong",1098.0
答案:
8、以下程序运行后的输出结果是 ____
struct NODE
{ int num;
struct NODE next; }
main()
{ struct NODE s[3], p, q,r;
int sum=0;
s[0].num=1; s[1].num=2; s[2].num=3;
s[0].next=s+1; s[1].next=s+2; s[2].next=s;
p=s; q=p->next; r=q->next;
sum+=q->next->num;
sum+=r->next->next->num;
printf("%d ", sum);
}
A:1
B:2
C:4
D:5
答案:
9、函数fun的功能是统计person所指结构体数组中所有性别(sex)为M的记录的个数存入n中,请填空:
#define N 3
typedef struct
{int num;
char nam[10];
char sex;} SS;
int fun(SS person[])
{int i,n=0;
for(i=0;i<N;i++) if(__==’M’ ) n++;
return n;
}
main()
{SS W[N]=1,”AA”,’F’},{2,”BB”,’M’}, {3,”CC”,’M’;
int n;
n=fun(W);
printf(“n=%d ”,n); }
A:person
B:person.name
C:person.sex
答案:
10、以下程序运行后的输出结果是____
#include <stdio.h>
main()
{ char p; int i;
p=(char )malloc(sizeof(char)20);
strcpy(p,"welcome");
for(i=6;i>=0;i–) putchar((p+i));
printf(" -"); free(p);
}
A:welcome
B:emocle
C:emoclew
D:elcome
答案:
11、若已经定义
typedef struct stu { int a, b; } student ;
则下列叙述中正确的是( )
A:stu 是结构体变量
B:student 是结构体变量
C:student 是结构体类型
D:a和 b是结构体变量
答案:
12、C语言中结构体类型变量在程序执行期间( )
A:所有成员一直驻留在内存中
B:只有一个成员驻留在内存中
C:部分成员驻留在内存中
D:没有成员驻留在内存中
答案:
13、以下叙述中正确的是( )
A:结构体中的成员不能是结构体类型
B:结构体的类型不能是指针类型
C:结构体中成员的名字可以和结构体外其他变量的名称相同
D:在定义结构体类型时就给结构体分配存储空间
答案:
14、以下程序的运行结果是( )
#include<stdio.h>
int main()
{
struct date
{ int year,month,day; }today;
printf("%d",sizeof(struct date));
return 0;
}
A:6
B:8
C:10
D:12
答案:
15、已知:
struct sk
{ int a; float b;}data,p;
若有p=&data,则对data中的成员a的正确引用是( )
A:(p).data.a
B:(*p).a
C:p->data.a
D:p.data.a
答案:
16、若有以下定义语句:
struct student
{ int num,age;};
struct student stu[3]=101,20},{102,19},{103,18,p=stu;
则以下错误的引用是( )
A:(p++)->num
B:p++
C:(p).num
D:p=&stu.age
答案:
17、设有一结构体类型变量定义如下:
struct date
{ int year;
int month;
int day;
};
struct worker
{ char name[20];
char sex;
struct date birthday;
}w1;
若对结构体变量w1的出生年份进行赋值,下面正确的赋值语句是( )
A:year=1976
B:birthday.year=1976
C:w1.birthday.year=1976
D:w1.year=1976
答案:
18、已知:
struct person
{
char name[10];
int age;
}class[10]={"LiMing",29,"ZhangHong",21,"WangFang",22};
下述表达式中,值为72的一个是( )
A:class[0]->age + class[1]->age+ class[2]->age
B:class[1].name[5]
C:person[1].name[5]
D:clase->name[5]
答案:
19、若已经定义:
struct stu { int a, b; } student ;
则下列输入语句中正确的是( )
A:scanf("%d",&a);
B:scanf("%d",&student);
C:scanf("%d",&stu.a);
D:scanf("%d",&student.a);
答案:
20、已知:
struct st
{ int n;
struct st next;
};
static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},p;
如果下述语句的显示是2,则对p的赋值是( )
printf("%d",++(p->next->n));
A:p=&a[0];
B:p=&a[1];
C:p=&a[2];
D:p=&a[3];
答案:
21、有如下定义:
struct person { char name[9];int age;};
struct person class[10]={"John",17, "Paul",19, "Mary",18, "Jack",19};
根据上述定义,能输出字母M的语句是( )
A:printf("%cn",class[3].name);
B:printf("%cn",class[3].name[1]);
C:printf("%cn",class[2].name[1]);
D:printf("%cn",class[2].name[0]);
答案:
22、链表不具有的特点是( )
A:插入、删除不需要移动元素
B:可随机访问任一元素
C:不必事先估计存储空间
D:所需空间与线性长度成正比
答案:
23、设有以下链表,则不能将q所指的结点插入到链表末尾的是( )
A:q->next=NULL;p=p->next;p->next=q;
B:p=p->next;q->next=p->next;p->next=q;
C:p=p->next;q->next=p;p->next=q;
D:p=(p).next;(q).next=(p).next;(p).next=q;
答案:
24、在单链表指针为p的结点之后插入指针为 s的结点, 正确的操作是 ( )
A:p->next=s;s->next=p->next;
B:s->next=p->next;p->next=s;
C:p->next=s;p->next=s->next;
D:p->next=s->next;p->next=s;
答案:
25、对于一个头指针为 head 的带头结点的单链表,判定该表为空表的条件
是( )
A:head==NULL
B:head->next==NULL
C:head->next==head
D:head!=NULL
答案:
第十章
1、若定义如下结构,则能打印出字母M的语句是( )。
struct person{ char name[9]; int age;};
struct person class[10]={"Wujun",20, "Liudan",23, "Maling",21, "zhangming",22};
A:printf("%c",class[3].name);
B:printf("%c",class[2].name[0]);
C:printf("%c",class[2].name[1]);
D:printf("%c",class[3].name[1]);
答案:
2、一个结构体变量占用的内存大小是( )。
A:占内存容量最大的成员所需容量
B:各成员所需内存容量之和
C:第一个成员所需内存容量
D:最后一个成员所需内存容量
答案:
3、若有定义:
struct student{int num; char sex; int age;}stu1;
下列叙述不正确的是( )。
A:student是结构体变量名
B:可以用struct student定义结构体变量
C:stu1是用户定义的结构体类型变量名
D:num,sex,age都是结构体变量stu1的成员
答案:
4、有如下定义:
struct student
{ int no; char name; }stu,p=&stu;
则引用方式不正确的是( ) 。
A:stu.no
B:(﹡p).no
C:p->no
D:stu->no
答案:
5、若有下面定义,对结构体变量成员不正确引用的语句是( )。
struct pup
{ char name[20];
int age;
int sex;
}p[3],q;
q=p;
A:scanf("%s",p[0].name);
B:scanf("%d",q->age);
C:scanf("%d",(q).age);
D:scanf("%d",q.age);
答案:
6、当顺利执行了文件关闭操作时,fclose函数的返回值是( )
A:-1
B:TRUE
C:0
D:1
答案:
7、如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是( )
A:fp=fopen("Demo","r");
B:fp=fopen("Demo","ab+");
C:fp=fopen("Demo","w+");
D:fp=fopen("Demo","r+");
答案:
8、函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是( )
A:文件开始
B:文件末尾
C:文件当前位置
D:以上都不对
答案:
第十二章
1、文件操作的一般步骤是( )。
A:打开文件,定义文件指针,修改文件,关闭文件
B:打开文件,定义文件指针,读写文件,关闭文件
C:定义文件指针,定位指针,读写文件,关闭文件
D:定义文件指针,打开文件,读写文件,关闭文件
答案:
2、下列中错误叙述的是( )。
A:C语言中的文件是一个字节流或二进制流
B:可以以只读方式、只写方式或读写方式打开一个文本文件
C:在程序中对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D:当对文件操作完毕之后,必须将它关闭,否则可能导致数据丢失
答案:
3、将一个短型整数10002存到磁盘上,以ASCII码形式存储和以二进制形式存储,占用的字节数分别是( ) 。
A:2和2
B:2和5
C:5和2
D:5和5
答案:
4、若要用fopen函数打开一个新的二进制文件,该文件既要能读也能写,则文件打开方式字符串应是( ) 。
A:"ab+"
B:"wb+"
C:"rb+"
D:"ab"
答案:
5、若当前工作目录下有一文本文件test.txt,其内容为“cprogram”(不包含引号),则以下程序段的运行结果是( )。
FILE fp;
char str;
if((fp=fopen("test.txt","r"))!=NULL)
str=fgets(str,5,fp);
printf("%s",str);
fclose(fp);
A:cpro
B:cprog
C:gram
D:ogram
答案:
第十一章
1、若有以下定义:
struct node
{ int data;
struct node next;
};
struct node p;
已建立如下图所示的链表:
┌──┬──┐ ┌──┬──┐ ┌──┬──┐
p →│data│next┼ →│data│next┼ →… →│data│NULL│
└──┴──┘ └──┴──┘ └──┴──┘
指针p指向第一个结点,能输出链表所有结点的数据成员data的循环语句是( )。
A:while(p!=NULL) { printf("%d,",p->data); p++; }
B:while(p) { printf("%d,", p.data); p=p->next; }
C:for( ; p!=NULL; p++) printf("%d,", p->data);
D:for( ; p; p=p->next) printf("%d,", (*p).data);
答案:
2、若有以下定义:
struct node
{ int data;
struct node next;
};
struct node head,*p;
已建立如下图所示的链表: p
↓
┌──┬──┐ ┌──┬──┐ ┌──┬──┐
head→ │data│next┼→│data│next┼→… →│data│NULL│
└──┴──┘ └──┴──┘ └──┴──┘
能删除指针p所指向结点的程序段是( )。
A:p = p->next; head->next=p->next; free(p);
B:free(p); p = p->next; head->next=p->next;
C:head->next = p->next; free(p);
D:free(p); head->next = p->next;
答案:
3、若有以下定义:
struct node
{ int data;
struct node next;
}
struct node m,n,k, head, p;
已建立如下图所示的链表:
m n k
┌──┬──┐ ┌──┬──┐ ┌──┬──┐
head →│data│next┼ →│data│NULL│ p →│data│next│
└──┴──┘ └──┴──┘ └──┴──┘
指针head指向结点m, m.next指向结点n,p指向结点k,不能把结点k插到m和n之间形成新链表的程序段是( )。
A:m.next = p; p->next = head->next;
B:(head).next = p; (*p).next = &n;
C:head->next = &k; p->next = head->next;
D:m.next = &k; k.next = &n;
答案:
4、若有以下定义:
struct node
{ int data;
struct node next;
} p,*q;
已建立如下图所示的链表:
┌──┬──┐ ┌──┬──┐
… p →│data│next┼→│data│NULL│
└──┴──┘ └──┴──┘
┌──┬──┐
q →│data│next│
└──┴──┘
不能将指针q所指结点连到上图所示链表末尾的语句是( )。
A:q->next=NULL; p=p->next; p->next=q;
B:p=p->next; p->next=q; q->next=NULL;
C:p=p->next; q->next=p->next; p->next=q;
D:q->next=p->next; p=p->next; p->next=q;
答案:
5、若有以下定义:
struct node
{ int data;
struct node next;
} p,q,t;
指针p、t和q分别指向图中所示结点:
p t q
↓ ↓ ↓
┌──┬──┐ ┌──┬──┐ ┌──┬──┐
│data│next┼→│data│next┼→│data│next┼→…
└──┴──┘ └──┴──┘ └──┴──┘
现要将t和q所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是( )。
A:t->next=q->next;p->next=q;q->next=t;
B:p->next=q;t->next=q->next;q->next=t;
C:q->next=t;t->next=q->next;p->next=q;
D:t->next=q->next;q->next=t;p->next=q;
答案:
老友网www.andlaou.com免费为你分享

老友网