一、选择题
1、以下选项中属于C 语言的数据类型是( )。
A. 复合型
B. 双精度型
C. 逻辑型
D. 集合型
2、以下说法中正确的是( )。
A. C语言程序总是从第一个的函数开始执行
B. 在C 语言程序中, 要调用的函数必须在main()函数中定义
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
3、选出下列标识符中不是合法的标识符的是( )。
A. hot_do
B. cat1
C. _pri
D. 2ab
4、下列描述中不正确的是( )。
A 、字符型数组中可能存放字符串。
B 、可以对字符型数组进行整体输入、输出。
C 、可以对整型数组进行整体输入、输出。
D 、 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
5、若已定义:int a[9], *p=a;并在以后的语句中未改变p 的值,不能表示a[1]地址的表达式为( )。
A. p+1
B. a+1
C. a++
D. ++p
6、设有如下定义: int x=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是( )。
A. 1
B. 0
C. 4
D. 3
7、定义如下变量和数组: int i, x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
8、读出以下语句的输出结果是( )。
int x=10,y=10;
printf(“%d %d\n”,x--,--y);
A. 10 10
B. 9 9
C. 9 10
9、两次运行下面的程序, 如果从键盘上分别输入6和3,则输出结果是( )。
if(x++>5) printf("%d",x);
else printf("%d\n",x - -);
A. 7和5
B. 6和3
C. 7和4
D. 6和4
10、设有如下定义:char *aa[2]={"abcd","ABCD"};则以下说法中正确的是( )。
A)aa 数组成元素的值分别是"abcd" 和ABCD"
B)aa 是指针变量, 它指向含有两个数组元素的字符型一维数组
C)aa 数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa 数组的两个元素中各自存放了字符‟a‟和‟A‟的地址
参考答案:1、B 2、C 3、D 4、C 5、C 6、D 7、C 8、D 9、C 10、D
11、以下语句的输出结果是( )。
int a=-1,b=4,k;
k=(+ +a
printf("%d,%d,%d\n",k,a,b);
A. 1,0,4
B. 1,0,3
C. 0,0,3
D. 0,0,4
12、下列程序的输出结果是( )。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A. xyabcAB
B. abcABz
C. ABabcz
D. xycdBCD
13、执行下面的程序后,a 的值是( )。
#define SQR(X) X*X
main ( )
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a); }
A. 10
B. 1
C. 9
D. 0
14、设A 为存放(短) 整型的一维数组,如果A 的首地址为P ,那么A 中第i 个元素的地址为(
A.P+i*2
B. P+(i-1)*2 来源:考试大
C. P+(i-1) 。 )
15、下列程序执行后输出的结果是( )。
int d=1;
fun (int p)
{ int d=5;
d + =p + +;
printf("%d,",d); }
main ( )
{ int a=3;
fun(a);
d + = a + +;
printf("%d\n",d); }
A. 8, 4
B. 9, 6
C. 9, 4
D. 8, 5
16、表达式:10!=9的值是( )。
A. true
B. 非零值
C. 0
D. 1
17、若有说明: int i,j=7, *p=&i;, 则与i=j; 等价的语句是( )。
A. i= *p;
B. *p=*&j;
C. i=&j;
D. i=* *p;
18、不能把字符串: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!";
19、在C 程序中有如下语句:char *func(int x,int y); 它是( )。
A. 对函数func 的定义。
B. 对函数func 的调用。
C. 对函数func 的原型说明。
D. 不合法的。
20、以下程序的输出结果是( )。
char str[15]=”hello!”;
printf(“%d\n”,strlen(str));
A. 15
B. 14
C. 7
D. 6
参考答案:11、D 12、D 13、B 14、B 15、A 16、D 17、B 18、B 19、C 20、D
1、设整型变量a 为5,使b 不为2的表达式是( )。
A. b=a/2
B. b=6-(--a)
C. b=a%2
D. b=a>3?2:1
2、为了避免嵌套的条件分支语句if-else 的二义性,C 语言规定:C 程序中的else 总是与( )组成配对关系。
A. 缩排位置相同的if
B. 在其之前未配对的if
C. 在其之前未配对的最近的if
D. 同一行上的if
3、以下程序的输出结果是( )。
int x=10,y=10;
printf(“%d %d\n”,x--,--y);
A. 10 10
B. 9 9 来源:考试大
C. 9 10
D. 10 9
4、设A 为存放(短) 整型的一维数组,如果A 的首地址为P ,那么A 中第i 个元素的地址为(
A.P+i*2
B. P+(i-1)*2
C. P+(i-1)
D. P+i
5、选出下列标识符中不是合法的标识符的是( )。
A. hot_do
B. cat1
C. _pri
D. 2ab
6、以下程序的输出结果是( )。
int a=5;
float x=3.14;
a*=x*(„E‟ - „A‟);
printf(“%f\n”,(float)a);
A. 62.000000
B. 62.800000
C. 63.000000
D. 62
7、设有说明double(*p1)[N];其中标识符p1是( )。
A. N个指向double 型变量的指针。
B. 指向N 个double 型变量的函数指针。
C. 一个指向由N 个double 型元素组成的一维数组的指针。
D. 具有N 个指针元素的一维指针数组,每个元素都只能指向double 型量。
8、在C 程序中有如下语句:char *func(int x,int y); 它是( )。
A. 对函数func 的定义。 。 )
B. 对函数func 的调用。
C. 对函数func 的原型说明。
D. 不合法的。
9、以下程序的输出结果是( )。
char str[15]=”hello!”;
printf(“%d\n”,strlen(str));
A. 15
B. 14
C. 7
D. 6
10、分析以下程序的输出结果是( )。
main()
{int a=5,b=-1,c;
c=adds(a,b);
printf(“%d”,c);
c=adds(a,b);
printf(“%d\n”,c); }
int adds(int x,int y)
{static int m=0,n=3;
n*=++m;
m=n%x+y++;
return(m); }
A. 2,3
B. 2,2
C. 3,2
D. 2,4
参考答案:1、C 2、C 3、D 4、B 5、D 、6、A 7、C 8、C 9、D 10、A
11、下列描述中不正确的是( )。
A. 字符型数组中可能存放字符串。
B. 可以对字符型数组进行整体输入、输出。
C. 可以对整型数组进行整体输入、输出。
D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
12、以下程序的输出结果是( )。
#define f(x) x*x
main()
{int a=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A. 9
B. 6
C. 36
D. 18
13、设有如下定义: int x=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是( )。
A. 1
B. 0
C. 4
D. 3
14、定义如下变量和数组:int i; int x[3][3]={1,2,3,4,5,6,7,8,9};
则语句for(i=0;i
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
15、以下对二维数组a 进行正确初始化的是( )
A. int a[2][3]={{1,2},{3,4},{5,6}};
B. int a[ ][3]={1,2,3,4,5,6};
C. int a[2][ ]={1,2,3,4,5,6};
D. int a[2][ ]={{1,2},{3,4}};
16、两次运行下面的程序, 如果从键盘上分别输入6和3, 则输出结果是( )。
int x;
scanf("%d",&x);
if(x++>5) printf("%d",x);
else printf("%d\n",x - -);
A. 7和5
B. 6和3
C. 7和4
D. 6和4
17、设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下说法中正确的是(
A)aa 数组成元素的值分别是"abcd" 和ABCD"
B)aa 是指针变量, 它指向含有两个数组元素的字符型一维数组
C)aa 数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa 数组的两个元素中各自存放了字符‟a‟和‟A‟的地址
18、下列程序的输出结果是( )。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A. xyabcAB
B. abcABz
C. ABabcz
D. xycdBCD
19、下列程序的输出结果是( )。
int a[5]={2,4,6,8,10},*P,* *k;
p=a; k=&p;
printf("%d",*(p++));
printf("%d\n",* *k);
A. 4 4 。 )
C. 2 4
D. 4 6
20、不能把字符串: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!";
参考答案:11、C 12、C 13、D 14、C 15、B 16、C 17、D 18、D 19、C 20、B
1. 一个C 语言程序是由( ) 构成。
A. 语句
B. 行号
C. 数据
D. 函数
2. 下面标识符中正确的是( ) 。
A.d&ef
B.6a
C.z4x5c
D.a3/b4
3. 在C 语言中,存储一个字符型、整型、单精度实型变量所需的空间是()。型、单精度实型变量所需的空间是()。
A.1、2、4
B.1、1、4
C.1、2、8
D.2、2、8
4. 为了避免嵌套的条件分支语句 if--else 中的else 总是与( ) 组成成对关系。
A. 缩排位置相同的
B. 在其之前未配对的
C. 在其之前未配对的最近的if
D. 在同一行上的if
5. 下列表达式的结果正确的是( ) 。
int aa,bb ,cc ,dd;
aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;
(aa+1==2)?bb=aa+2:aa+3
A.2
B.3
C. 1
D.5
6. 设有int x=11 ;则表达式(x+1/3)的值是( ) 。
A.3
B. 4
C. 11
D.12
7. 设有字符串A=“He has 钱!”,则该字符串的长度为( ) 。
B. 10
C. 11
D. 8
8. 有如下程序段, 则正确的执行结果是( )
int m=3;
while(m
{ printf(“%d ”,m-3); m++;}
A. 0 0 0
B.0 1 2
C.1 2 3
D. 无结果
9. 执行语句:printf("%d",(a=2)&&(b= -2);后,输出结果是( ) 。
A. 无输出
B. 结果不确定 http://ks.exam8.com
C.-1
D. 1
10. 有如下定义类型语句,若从键盘输入数据,正确的输入语句是( ) 。
int x; char y; char z[20];
A. scanf("%d%c%c",&x,&y,&z);
B. scanf("%d%c%s",&x,&y,&z);
C. scanf("%d%c%c",&x,&y,z);
D. scanf("%d%c%s",&x,&y,z);
11. struct ex
{ int x ; float y; char z ;} example;
则下面的叙述中不正确的是( ) 。
A. struct结构体类型的关键字
B. example是结构体类型名
C. x,y,z都是结构体成员名
D. struct ex是结构体类型
12. 在C 语言中对于实型数组, 其每个数组元素的类型是( ) 。
A. 实型
B. 整型
C. 可以为任何类型
D. 不确定
13. 若已定义:int a[9],*p=a;不能表示a[1] 地址的表达式是( ) 。
A. p+1
B. a+1
C. a++
D. ++p
14. 在TC2.0环境中,对文件进行保存使用的命令是( ) 。
A. OPEN
B. SAVE 来源:考试大网
C. LOAD
D. WRITE TO
15. 在C++的类中,用于表示公共类型的关键字是( ) 。
A. class
B. private
C. protect
D. public
1.D 2. C 3. A 4. C 5. B 6.C 7. B 8. B 9. D 10. D
11.B 12. A 13. C 14. B 15. D
1. 下列描述中不正确的是( C )。
A) 字符型数组中可以存放字符串
B) 可以对字符型数组进行整体输入、输出
C) 可以对整型数组进行整体输入、输出
D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
2. 执行下面的程序段后,变量k 中的值为( A )。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A) 不定值
B) 33
C) 30
D) 10
3. 设有数组定义:char array[ ]="China"; 则数组array 所占的空间为( C )。
A) 4个字节
B) 5个字节
C) 6个字节
D) 7个字节
4. 下列程序执行后的输出结果是( D )。
#include
main( )
{ char arr[2][4];
strcpy(arr,"you");strcpy(arr[1],"me");
arr[0][3]=‟&‟;
printf("%s \n",arr);
}
A) you&me
B) you
C) me
D) err
5. 执行下列程序时输入:123456789,输出结果是( D )。
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
6. 假定int 类型变量占用两个字节,若有定义:intx[10]={0,2,4}; 则数组x 在内存中所占字节数是( D )。
A) 3
B) 6
C) 10
D) 20
7. 以下程序的输出结果是( C )。
main( )
{int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A) 258
B) 741
C) 852
D) 369
8. 以下数组定义中不正确的是( D )。
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) intc[100][100]={0};
D) intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
9. 以下程序的输出结果是( A )。
main( )
{int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A) 0650
B) 1470
C)5430
D) 输出值不定
10. 以下程序的输出结果是( B )。
#include
main( )
{char st[20]="hello\0\t\\\";
printf(%d %d\n",strlen(st),sizeof(st));
}
A) 9 9
B) 5 20
C) 9 20
11. 以下程序的输出结果是( B )。
main( )
{int i,k,a[10],p[3];
k=5;
for(i=0;i
for(i=0;i
for(i=0;i
printf("%d\n",k);
}
A) 20
B) 21
C)22
D) 23
12. 以下程序的输出结果是( C )。
main( )
{int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i
}
A) 159
B) 147
C) 357
D) 369
13. 以下程序的输出结果是( A )。
main( )
{int a[3][3]={{1,2},{3,4},{5,6}}, i, j, s=0;
for(i=1;i
for(j=0;j
printf("%d\n", s);
}
A) 18
B) 19
C) 20
D) 21
14. 以下程序的输出结果是( D )。
main( )
{char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k
}
A) ABCD
B) ABCD
C) EFG www. Examda.CoM
D) EFGH
FGH EFG JK IJKL
M
15. 当执行下面的程序时,如果输入ABC ,则输出结果是( A )。
#include
#include
main( )
{char ss[10]="12345";
gets(ss);strcat(ss,"6789");printf("%s\n",ss);
}
A) ABC6789
B) ABC67
C) 12345ABC6
D) ABC456789
16. 若要定义c 为2×3×4的三维数组,正确的定义语句是( A )。
A)float c[2][3][4]
B) float c[2,3,4]
C) floatc(2,3,4)D) float c(2)(3)(4)
17. 若定义inta[2][2]={1,2,3,4},则a 数组的各数组元素值分别为( A )。
A) a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4
B)a[0][0]=1,a[0][1]=3,a[1][0]=2,a[1][1]=4
C)a[0][0]=4,a[0][1]=3,a[1][0]=2,a[1][1]=1
D) a[0][0]=4,a[0][1]=2,a[1][0]=3,a[1][1]=1
18. 在下列叙述中,正确的一条是( A )。
A) 以下语句是正确的:c har c[]=”ab”;
B) 一维数组的定义可采用下列格式:int a(10);
C) 下面的语句定义了一个二维数组:float a[3,4];
D) 以下两个语句中的a[3][4]的含义相同:int a[3][4]; a[3][4]=1;
19. 当输入的数据为2、5时,以下程序的输出结果是( C )。
#include
main( )
{intf[100],i,j,k,m;
scanf(“%d%d”,&k,&m);
for(i=0;i
f[k-1]=1;
for(i=k;i
for(j=i-k;j
printf(“%d%10d%10d\n”,k,m,f[m]);
}
A) 3 5 5
B) 3 5 7
C) 2 5 5
D) 3 6 9
20. 在下列语句中,正确的是( A )。
A)char str[]=”China”;
B) char str[];str=”China”;
C) char str1[5],str2[]={”China”};str1=str2;
D) char str1[],str2[];str2={”China”};strcpy(str1,str2);
21. 下面语句中不正确的是( D )。
A) inta[5]={1,2,3,4,5};
B) int a[5]={1,2,3};
C) inta[]={0,0,0,0,0};
D) int a[5]={0*5};
22. 若先后输入4、1、5、3、7,以下程序的输出结果为( D )。
#defineMAX 100
main( )
{
int i,j,n,flag,t,a[MAX];
printf(“输入数据个数:”);
scanf(“%d\n”,&n);
for(i=1;i
for(i=1;i
{flag=1;
for(j=1;j
if(a[j]>a[j+1])
{flag=0;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
if(flag) break;
}
for(i=1;i
printf(“\n”);
}
A) 2 4 6 7
B) 1 2 3 4
C) 1 5 4 7
D) 1 3 5 7
23. 以下程序的输出结果是( B )。
main( )
{int n,a[10];
for(n=0;n
a[n]=n;
for(n=9;n>=0;n--)
printf(“%d”,a[n]);
}
A) 1 2 3 4 5 6 7 8 9 10
B) 9 8 7 6 5 43 2 1 0
C) 10 9 8 7 6 5 4 3 2 1
D) 0 1 2 3 4 5 6 7 8 9
24. 若输入aefjhi 、c 、adfjhijk ,以下程序的输出结果为(B )。
#include
#include
main( )
{int i;
char string[20],str[3][20];
for(i=0;i
if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);
else strcpy(string,str[1]);
if(strcmp(str[2],string)>0)strcpy(string,str[2]);
printf(“Thelargest string is\n%s\n”,string);
}
A) adfjhi
B) c
C) aefjhijk
D) aefjhi
25. 以下程序的输出结果是( A )。
#include
#include
main( )
{char str[12]={‟s‟,‟t‟,‟r‟,‟i‟,‟n‟,‟g‟};
printf(“%d\n”,strlen(str));
}
A) 6
B) 7
C) 11
D) 12
26. 有以下程序:
#include
#define N 6
main( )
{char c[N];
int i=0;
for(;i
for(i=0;i
}
输入以下三行,每行输入都是在第一列上开始,代表一个回车符:
a
b
cdef
程序的输出结果是( C )。c[i]={'a','\0','b','\0','c','d'}
A) abcdef
C) a
D) a
b b b
c cd d
d cdef
e
f
27. 设有:char str[ ]=“Beijing”; 则执行:printf(“%d\n”,strlen(strcpy(str, “China”)));后输出的结果为( A )。"china"copyto str with '\0',it will stop when the strlen meets with '\0'.
A) 5
B) 7
C) 12
D) 14
28. 请选出以下程序的输出结果(A )。
#include
main( )
{chars1[10],s2[10],s3[10],s4[10];
scanf(“%s%s”,s1,s2);gets(s3);gets(s4);
puts(s1);puts(s2);puts(s3);puts(s4);
}
输入数据如下:(此处代表回车符)
aaaa bbbb
cccc dddd
A) aaaa
B) aaaa
C) aaaa
D) aaaa bbbb
bbbb bbbb bbbb cccc
cccc cccc dddd dddd
cccc dddd dddd eeee
29. 请读程序:
main( )
{int n[2],i,j,k;
for(i=0;i
k=2;
for(i=0;i
for(j=0;j
printf(“%d\n”,n[k]);
}
上面程序的输出结果是( A )。
A) 不确定的值
B) 3
C) 2
30. 请读程序片段(字符串内没有空格字符) :printf(“%d\n”,strlen(“ATS \n012\1\\”));其输出结果应为( C )。
A) 11
B) 10
C) 9
D) 12
31. 下述对C 语言字符数组的描述中错误的是( C )。
A) 字符数组可以存放字符串
B) 字符数组中的字符串可以整体输入、输出
C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D) 不可以用关系运算符对字符数组中的字符串进行比较
32. 阅读下列程序:
main( )
{int n[3],i,j,k;
for(i=0;i
n[i]=0;
k=2; 考试大论坛
for(i=0;i
for(j=0;j
n[j]=n[i]+1;
printf(“%d\n”,n[1]);
}
上述程序运行后,输出的结果是( D )。
A) 2B) 1C) 0
D) 3
33. 以下程序的输出结果是( C )。
main( )
{int n[3][3], i, j;
for(i=0;i
for(j=0;j
for(i=0;i
for(j=0;j
printf(“%d\n”, n[i][j]);
}
A) 14
B) 0
C) 6
D) 值不确定
34. 以下语句的输出结果为( A )。
printf(“%d\n”, strlen(“\t\”\065\xff\n”));
A) 5
B) 14
C) 8
D) 输出项不合法,无正常输出
35. 合法的数组定义是( D )。
A) int a[]=”string”;
B) int a[5]={0,1,2,3,4,5};
C) char a=”string”;
D) char a[]={0,1,2,3,4,5};
1. 下面程序段的运行结果是( C )。
int n=0;
while(n++
printf(“%d”,n);
A) 2
B) 3
C) 4
D) 有语法错
2. 设有程序段:
t=0;
while(printf(“*”))
{t++;
if(t
}
下面描述正确的是( D )。
A) 其中循环控制表达式与0等价
B) 其中循环控制表达式与'0' 等价
C) 其中循环控制表达式是不合法的
D) 以上说法都不对
3. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空( B )。
#include
main()
{int a,b,t;
scanf(“%d%d”,&a,&B);
while( ___________ )
{if(a>B)
{t=a;a=b;b=t;}
printf(“%d,%d\n”,a,B);
scanf("%d%d",&a,&B);
}
}
A) !a=b
B) a!=b
C) a==b
D) a=b
4.C 语言中,while 和do-while 循环的主要区别是( A )。
A) do-while的循环体至少无条件执行一次
B) while的循环控制条件比do-while 的循环控制条件更严格
C) do-while允许从外部转到循环体内
D) do-while的循环体不能是复合语句
5. 对以下程序段描述正确的是( C )。
x=-1;
do
{x=x*x;}
while(!x);
A) 是死循环
B) 循环执行二次
C) 循环执行一次
D) 有语法错误
6. 以下描述中正确的是( C )。
A) do-while循环中循环体内不能使用复合语句
B) do-while循环由do 开始,用while 结束,在while(表达式) 后面不能写分号
C) 在do-while 循环体中,一定要有能使while 后面表达式的值变为零(“假”)的操作
D) do-while循环中,根据情况可以省略while
7. 若有如下语句
int x=3;
do{ printf(“=”,x-=2);} while(!(--x));
则上面程序段( B )。
A) 输出的是1
B) 输出的是1和-2
C) 输出的是3和0
D) 是死循环
8. 下面有关for 循环的正确描述是( D )。
A) for循环只能用于循环次数已经确定的情况
B) for循环是先执行循环的循环体语句,后判断表达式
C) 在for 循环中,不能用break 语句跳出循环体
D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
9. 对for(表达式1; ;表达式3) 可理解为( B )。
A) for(表达式1;0; 表达式3)
B) for(表达式1;1; 表达式3)
C) for(表达式1; 表达式1; 表达式3)
D) for(表达式1; 表达式3; 表达式3)
10. 若i 为整型变量,则以下循环执行次数是( B )。
for(i=2;i==0;) printf(“%d”,i--);
A) 无限次
B) 0次
C) 1次
D) 2次
11. 以下不是无限循环的语句为( A )。
A) for(y=0,x=1;x>++y;x=i++) i=x;
B) for(;;x++=i);
C) while(1){x++;}
D) for(i=10;;i--) sum+=i;
12. 下面程序段的运行结果是( C )。
for(y=1;y
printf(“x=%d,y=%d”,x,y);
A) x=27,y=27
B) x=12,y=13
C) x=15,y=14
D) x=y=27
13. 执行语句for(i=1;i++
A) 3
B) 4
C) 5
D) 不定
14. 有一堆零件(100到200之间) ,如果分成4个零件一组的若干组,则多2个零件; 若分成7个零件一组,则多3个零件; 若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空( D )。 #include
main()
{int i;
for(i=100;i
if((i-2)%4==0)
if(!((i-3)%7))
if( ______ )
printf(“%d”,i);
}
A) i%9=5
B) i%9!=5
C) (i-5)%9!=0
D) i%9==5
15. 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空( B )。 #include
main()
{ int i=0,j,k;
do{i++;k=316-13*i;}while( _k______ );
j=k/11;
printf(“316=13*%d+11*%d”,i,j);
}
A) k/11
B) k
C) k/11==0
D) k==0
16. 下面程序的运行结果是( D )。
#include
main()
{int y=10;
do{y--;}while(--y);
printf(“%d\n”,y--);
}
A) -1
B) 1
C) 8
D) 0
17. 若运行以下程序时,从键盘输入ADescriptor(表示回车) ,则下面程序的运行结果是( D )。 #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
C) v0=11,v1=4,v2=11
D) v0=12,v1=4,v2=12
18. 下面程序的运行结果是( B )。
#include
main()
{int a=1,b=10;
do
{b-=a;a++;}
while(b--
printf(“a=%d,b=%d\n”,a,B);
}
A) a=3,b=11
B) a=2,b=8
C) a=1,b=-1
D) a=4,b=9
19. 以下程序的输出结果是( B )。
main()
{ int num=0;
while(num
{ num++; printf(“%d\n”,num);}
}
A) 1
B) 1
C) 1
D) 1
2 2 2
3 3
4
20. 设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是( C )。
A) while循环执行10次
B) 循环是无限循环
C) 循环体语句一次也不执行
D) 循环体语句执行一次
21. 设有以下程序段
int x=0,s=0;
while(!x!=0) s+=++x;
printf("%d",s);
则( B )。
A) 运行程序段后输出0
B) 运行程序段后输出1
C) 程序段中的控制表达式是非法的
D) 程序段执行无限次
22. 语句while(!E);中的表达式!E 等价于( A )。
A) E==0
B) E!=1 来源:www.examda.com
C) E!=0
D) E==1
23. 下面程序段的运行结果是( A )。
a=1;b=2;c=2;
while(a printf("%d, %d, %d", a, b, C);
A) 1,2,0
B) 2,1,0
C) 1,2,1
D) 2,1,1
24. 下面程序段的运行结果是( D )。
x=y=0;
while(x
printf("%d, %d", y, x);
A) 20,7
C) 20,8
D) 8,20
25. 以下程序段的执行结果是( B )。
int a, y;
a=10; y=0;
do
{ a+=2; y+=a;
printf("a=%d y=%d\n", a, y);
if(y>20) break;
} while(a=14);
A) a=12 y=12
B) a=12 y=12
a=14 y=16 a=16 y=28
a=16 y=20
a=18 y=24
C) a=12 y=12
D) a=12 y=12
a=14 y=26
a=14 y=44
26.t 为int 类型,进人下面的循环之前,t 的值为0,则以下叙述中正确的是( B )。 while( t=l )
{……}
A) 循环控制表达式的值为0
B) 循环控制表达式的值为1
C) 循环控制表达式不合法
D) 以上说法都不对
27. 有以下程序段
int k=0;
while(k=1) k++;
while 循环执行的次数是( A )。
A) 无限次
B) 有语法错,不能执行
C) 一次也不执行
D) 执行1次
28. 以下程序执行后sum 的值是( C )。
main()
{ int i , sum;
for(i=1;i
printf("%d\n",sum);
}
A) 15
B) 14
C) 不确定
29. 有以下程序段
int x=3;
do
{ printf("%d",x-=2); }
while (!(--x));
其输出结果是( C )。
A) 1
B) 3 0
C) 1 -2
D) 死循环
30. 若输入12、8,以下程序的输出结果是( A )。
main()
{int a,b,num1,num2,temp;
scanf(“%d,%d”,&num1,&num2);
if(num1>num2)
{temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{temp=a%b;
a=b;
b=temp;
}
printf(“%d, %d”,a,num1*num2/a);
}
A) 4,24
B) 3,24
C) 5,25
D) 4,25
31. 以下程序的输出结果是( A )。
#include
#include
main()
{int s=1;
float n=1,pi=0;
double t=1;
while(fabs(t)>=2e-6)
{pi+=t;
n+=2;
s=-s;
t=s/n;
pi*=4;
printf(“pi=%.6f\n”,pi);
}
A) 3.141592
B) 1
C) 2e-6
D) 0
32. 以下程序的输出结果是( B )。
main()
{int i,f1,f2;
f1=f2=1;
for(i=0;i
{printf(“%d %d ”,f1,f2);
f1+=f2;
f2+=f1;
}
}
A) 1 2 3 4 5 6 7 8
B) 1 1 2 3 5 8 13 21
C) 1 1 3 5 7 9 11 13
D) 1 3 5 7 9 11 13 15
33. 下列叙述中,正确的一条是( B )。
A) 语句“goto 12;”是合法的
B) for(;;)语句相当于while(1)语句
C) if(表达式) 语句中,表达式的类型只限于逻辑表达式
D) break语句可用于程序的任何地方,以终止程序的执行
34. 以下程序的输出结果是( B )。
main()
{int a,b;
for(a=1,b=1;a
{if(b>=20) break;
if(b%3==1)
{b+=3;
continue;
}
b-=5;
}
printf(“%d\n”,a);
}
A) 7
B) 8
C) 9
D) 10
35. 以下的for 循环( C )
for(x=0,y=0;(y!=123)&&(x
A) 是无限循环
B) 循环次数不定
C) 执行4次
D) 执行3次
36.C 语言中( D )
A) 不能使用do-while 语句构成的循环
B) do-while语句构成的循环必须用break 语句才能退出
C) do-while语句构成的循环,当while 语句中的表达式值为非零时结束循环
D) do-while语句构成的循环,当while 语句中的表达式值为零时结束循环
37. 以下程序的输出结果是( A )。
main()
{int i;
for(i=1;i
{if(i%2)
printf(“*”);
else
continue;
printf(“#”);
}
printf(“$\n”);
}
A) *#*#*#$
B) #*#*#*$
C) *#*#$
D) #*#*$
38. 有以下程序,从第一列开始输入数据2473(代表一个回车符) ,则程序的输出结果为( A )。 #include
main()
{int c;
while((c=getchar())!=‟\n‟)
{switch(c-„2‟)
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}
}
printf(“\n”);
}
A) 668977
B) 668966
C) 6677877
D) 6688766
39. 执行以下程序片段的结果是( B )。
int x=23;
do
{printf(“%d”, x--);}
while(!x);
A) 打印出321
B) 打印出23
C) 不打印任何内容
D) 陷入死循环
40. 若x 是int 型变量,则执行以下程序片段的结果是( D )。
for(x=3;x
A) **3##4**5
B) ##3**4##5
C) ##3
D) **3##4
**4##5 **5
41. 有以下程序,若运行时从键盘输入3.6 2.4(代表一个回车符) ,则程序的输出结果为( B )。 #include
#include
main()
{float x,y,z;
scanf(“%f%f”,&x,&y);
z=x/y;
while(1)
{if(fabs(z)>1.0)
{x=y;y=z;z=x/y;}
else break;
}
printf(“%f\n”, y);
}
A) 1.500000
B) 1.600000
C) 2.000000
D) 2.400000
42. 以下程序的输出结果是( D )。
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf(“%d %d ”,x--,y);
}
A) 10 1 9 2
B) 9 8 7 6
C) 10 9 9 0
D) 10 10 9 1
43. 以下程序的输出结果是( A )。
main()
{int n=4;
while(n--)
printf(“%d ”,--n);
}
A) 2 0
B) 3 1
C) 3 2 1
D) 2 1 0
44. 以下程序的输出结果是( B )。
main()
{int i;
for(i=‟A‟;i
printf(“%c”,i+32);
}
A) 编译通不过,无输出
B) aceg
C) acegi
D) abcdefghi
45. 若i 、j 已定义为int 型,则以下程序段中内循环体的总的执行次数是( A )。 for(i=5;i;i--)
for(j=0;j
A) 20
B) 24
C) 25
D) 30
46. 若j 为int 型变量,则以下for 循环语句的执行结果是( B )。
for(j=10;j>3;j--)
{if(j%3) j--;--j;--j;printf(“%d ”,j);}
A) 6 3
B) 7 4
C) 6 2
D) 7 3
47. 以下程序的执行结果是( D )。
main()
{int i,x;
for(i=1;i
{x=i;
if(++x%2==0)
if(x%3==0)
if(x%7==0)
printf(“%d”,i);
}
}
A) 28
B) 27 来源:考试大
C) 42
D) 41
48. 以下程序的执行结果是( B )。
main()
{int i,j;
for(j=10;j
{ for(i=9;i if(!(j%i)) break;
if(i>=j-1) printf(“%d”,j);
}
}
A) 11
B) 10
C) 9
D) 10 11
49. 在下列选项中,没有构成死循环的程序段是( C )。
A) int i=100;
B) for(;;);
while(1)
{i=i0+1;
if(i>100) break;
}
C) int k=1000;
D) int s=36;
do{++k;} while(s);--s;
while(k>=10000);
50. 以下程序的输出结果是( B )。
main()
{int i,j,x=0;
for(i=0;i
{ x++;
for(j=0;j
{ if(j%2) continue;
x++;
}
x++;
}
printf(“x=%d\n”,x);
}
A) x=4
C) x=6
D) x=12
51. 运行以下程序后,如果从键盘上输入65 14,则输出结果是( C )。 main()
{int m,n;
scanf(“%d%d”,&m,&n);
while(m!=n)
{while(m>n) m-=n;
while(n>m) n-=m;
}
printf(“m=%d\n”, m);
}
A) m=3
B) m=2
C) m=1
D) m=0
52. 以下程序的输出结果是( C )。
main()
{int i,j,m=0,n=0;
for(i=0;i
for(j=0;j
if(j>=i) m=1;n++;
printf(“%d\n”, n);
}
A) 4
B) 2
C) 1
D) 0
53. 以下程序执行后sum 的值是( C )。
main()
{ int i , sum=0;
for(i=1;i
printf("%d\n",sum);
}
A) 6
B) 3
C) 死循环
D) 0
1. 运算符________的优先级最高。
A.[ ]
B. +=
C. ?:
D.++
{ int n; ( n=6*4,n+6),n*2; printf(“n=%d\n”,n); }
此程序的输出结果是______________.
A.30
B. 24
C. 60
D. 48
3. 若有如下定义,则__________是对数组元素的正确的引用。. int a[10] , *p ; p=a ;
A. *&a[10]
B. a[11]
C. *(p+11)
D. *p *p *p
4. 设整型变量n 的值为2,执行语句“n+=n-=n*n;”后,n 的值是__________
A. 0
B. 4
C. - 4
D. 2
5. 各种基本数据类型的存贮空间正确的长度排列为__________。
A.Char
C.Char
6. 下面的变量说明中__________是正确的。
A.char :a, b, c;
B.char a; b; c;
C.char a, b, c;
D.char a, b, c
7. 表达式y=(13>12?15:6>7?8:9)的值为____________ 。
A 9
B 8
C 15
D. 1
8. 若x=5,y=3 则y*=x+5; y的值为___________.
A. 10
B. 20
C. 15
D. 30
9. 能正确表示a 和b 同时为正或同时为负的逻辑表达式是_________。
A.a>=0||b>=0)&&(a
B.(a>=0 && b>=0)&&(a
C.(a+b>0) &&(a+b
D. a*b>0
10.C 语言中,合法的字符型常数是_________。
A.„A‟
B.“A”
C. 65
D. A
参考答案:1 A 2B 3D 4C 5C 6C 7C 8D 9D 10A
11. 已有定义 int x=3, y=4, z=5;则表达式“!(x+y)+z-1&&y+z/2”的值是________。
A.6
B.0
C.2
D.1
12. 若变量c 为char 类型,能正确判断出c 为小写字母的表达式是_______。
A.‟a‟
B. (c>=‟a‟) || (c
C.(„a‟=c)
D. (c>=‟a‟) && (c
13. 设有定义:long x=-123456L; 则以下能够正确输出变量x 值的语句是_______。
A.printf(“x=%d\n”,x)
B.printf(“x=%ld\n”,x)
C.printf(“x=•l\n”,x)
C.printf(“x=%D\n”,x);
14. 从循环体内某一层跳出,继续执行循环外的语句是:___________。
A. break语句
B.return 语句
C.continue 语句
D. 空语句。
15.C 语言用_______表示逻辑“真”值。
A.true
B.t 或y
C. 非零整型值
D. 整型值0
16. 为了避免嵌套的条件分支语句if —else 的二义性,C 语言规定:C 程序中的else 总是与_____组成配对关系。
A. 缩排位置相同的if
B. 在其之前未配对的if
C. 在其之前未配对的最近的if
D. 同一行上的if
17. 在函数中默认存储类型说明符的变量应该是________存储类型。
A. 内部静态
B. 外部
C. 自动
D. 寄存器
18.C 语言中以只读方式打开一个文件应选择_______________参数。
A.“r”
B.“w”
C.“rb”
D.“a”
19. 设有数组定义:char array[]=”student”;则数组所占的存贮空间为__________。
A.6个字节
B. 7个字节
C. 8个字节
D. 9个字节
20. 根据C 语言的语法规则,下列________个是不合法标识符。
A.do
B. Name
C. R5
D. _exam
参考答案:11D 12D 13B 14A 15C 16C 17A 18A 19C 20A
1.若要“向文本文件尾增加数据”,在fopen 函数中应使用的文件方式是( B )。
A) “ab+”
B) “a”
C) “ab”
D) “a+”
2.在C 语言中,用于实现打开文件的库函数是( B )。
A) fclose()
B) fopen()
C) fseek()
D) rewind()
3.若要“为读/写建立一个新的二进制文件”,在fopen 函数中应使用的文件方式是( D )。
A) “w+”
B) “rb+” 来源:考试大网
C) “ab+”
D) “wb+”
4.若在fopen 函数中使用文件的方式是“ab”,该方式的含义是( B )。
A) 为读/写打开一个文件
B) 向二进制文件尾增加数据
C) 为输出打开一个文本文件
D) 为读/写建立一个新的二进制文件
5.若在fopen 函数中使用文件的方式是“r”,该方式的含义是( A )。
A) 为输入(读)打开一个文本文件
B) 为输出(写)打开一个文本文件
C) 为读/写打开一个文本文件
D) 为读/写建立一个新的二进制文件
6.在C 程序中,可把整型数以二进制形式存放到文件中的函数是( C )。
A) fprintf函数
B) fread函数
C) fwrite函数
D) fputc函数
7.若fp 是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是( C )。
A) EOF
B) 0
C) 非零值
D) NULL
8.下面的程序执行后,文件test.t 中的内容是( A )。 #include
void fun(char *fname., char *st)
{FILE *myf; int i;
myf=fopen(fname, "w");
for(i=0;i
fclose (myf);
}
main()
{fun("test.t", "new world"); fun("test.t", "hello,";)
A) hello,
B) new worldhello,
C) new world
D) hello, rld
一、选择题
1、以下选项中属于C 语言的数据类型是( )。
A. 复合型
B. 双精度型
C. 逻辑型
D. 集合型
2、以下说法中正确的是( )。
A. C语言程序总是从第一个的函数开始执行
B. 在C 语言程序中, 要调用的函数必须在main()函数中定义
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
3、选出下列标识符中不是合法的标识符的是( )。
A. hot_do
B. cat1
C. _pri
D. 2ab
4、下列描述中不正确的是( )。
A 、字符型数组中可能存放字符串。
B 、可以对字符型数组进行整体输入、输出。
C 、可以对整型数组进行整体输入、输出。
D 、 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
5、若已定义:int a[9], *p=a;并在以后的语句中未改变p 的值,不能表示a[1]地址的表达式为( )。
A. p+1
B. a+1
C. a++
D. ++p
6、设有如下定义: int x=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是( )。
A. 1
B. 0
C. 4
D. 3
7、定义如下变量和数组: int i, x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
8、读出以下语句的输出结果是( )。
int x=10,y=10;
printf(“%d %d\n”,x--,--y);
A. 10 10
B. 9 9
C. 9 10
9、两次运行下面的程序, 如果从键盘上分别输入6和3,则输出结果是( )。
if(x++>5) printf("%d",x);
else printf("%d\n",x - -);
A. 7和5
B. 6和3
C. 7和4
D. 6和4
10、设有如下定义:char *aa[2]={"abcd","ABCD"};则以下说法中正确的是( )。
A)aa 数组成元素的值分别是"abcd" 和ABCD"
B)aa 是指针变量, 它指向含有两个数组元素的字符型一维数组
C)aa 数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa 数组的两个元素中各自存放了字符‟a‟和‟A‟的地址
参考答案:1、B 2、C 3、D 4、C 5、C 6、D 7、C 8、D 9、C 10、D
11、以下语句的输出结果是( )。
int a=-1,b=4,k;
k=(+ +a
printf("%d,%d,%d\n",k,a,b);
A. 1,0,4
B. 1,0,3
C. 0,0,3
D. 0,0,4
12、下列程序的输出结果是( )。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A. xyabcAB
B. abcABz
C. ABabcz
D. xycdBCD
13、执行下面的程序后,a 的值是( )。
#define SQR(X) X*X
main ( )
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a); }
A. 10
B. 1
C. 9
D. 0
14、设A 为存放(短) 整型的一维数组,如果A 的首地址为P ,那么A 中第i 个元素的地址为(
A.P+i*2
B. P+(i-1)*2 来源:考试大
C. P+(i-1) 。 )
15、下列程序执行后输出的结果是( )。
int d=1;
fun (int p)
{ int d=5;
d + =p + +;
printf("%d,",d); }
main ( )
{ int a=3;
fun(a);
d + = a + +;
printf("%d\n",d); }
A. 8, 4
B. 9, 6
C. 9, 4
D. 8, 5
16、表达式:10!=9的值是( )。
A. true
B. 非零值
C. 0
D. 1
17、若有说明: int i,j=7, *p=&i;, 则与i=j; 等价的语句是( )。
A. i= *p;
B. *p=*&j;
C. i=&j;
D. i=* *p;
18、不能把字符串: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!";
19、在C 程序中有如下语句:char *func(int x,int y); 它是( )。
A. 对函数func 的定义。
B. 对函数func 的调用。
C. 对函数func 的原型说明。
D. 不合法的。
20、以下程序的输出结果是( )。
char str[15]=”hello!”;
printf(“%d\n”,strlen(str));
A. 15
B. 14
C. 7
D. 6
参考答案:11、D 12、D 13、B 14、B 15、A 16、D 17、B 18、B 19、C 20、D
1、设整型变量a 为5,使b 不为2的表达式是( )。
A. b=a/2
B. b=6-(--a)
C. b=a%2
D. b=a>3?2:1
2、为了避免嵌套的条件分支语句if-else 的二义性,C 语言规定:C 程序中的else 总是与( )组成配对关系。
A. 缩排位置相同的if
B. 在其之前未配对的if
C. 在其之前未配对的最近的if
D. 同一行上的if
3、以下程序的输出结果是( )。
int x=10,y=10;
printf(“%d %d\n”,x--,--y);
A. 10 10
B. 9 9 来源:考试大
C. 9 10
D. 10 9
4、设A 为存放(短) 整型的一维数组,如果A 的首地址为P ,那么A 中第i 个元素的地址为(
A.P+i*2
B. P+(i-1)*2
C. P+(i-1)
D. P+i
5、选出下列标识符中不是合法的标识符的是( )。
A. hot_do
B. cat1
C. _pri
D. 2ab
6、以下程序的输出结果是( )。
int a=5;
float x=3.14;
a*=x*(„E‟ - „A‟);
printf(“%f\n”,(float)a);
A. 62.000000
B. 62.800000
C. 63.000000
D. 62
7、设有说明double(*p1)[N];其中标识符p1是( )。
A. N个指向double 型变量的指针。
B. 指向N 个double 型变量的函数指针。
C. 一个指向由N 个double 型元素组成的一维数组的指针。
D. 具有N 个指针元素的一维指针数组,每个元素都只能指向double 型量。
8、在C 程序中有如下语句:char *func(int x,int y); 它是( )。
A. 对函数func 的定义。 。 )
B. 对函数func 的调用。
C. 对函数func 的原型说明。
D. 不合法的。
9、以下程序的输出结果是( )。
char str[15]=”hello!”;
printf(“%d\n”,strlen(str));
A. 15
B. 14
C. 7
D. 6
10、分析以下程序的输出结果是( )。
main()
{int a=5,b=-1,c;
c=adds(a,b);
printf(“%d”,c);
c=adds(a,b);
printf(“%d\n”,c); }
int adds(int x,int y)
{static int m=0,n=3;
n*=++m;
m=n%x+y++;
return(m); }
A. 2,3
B. 2,2
C. 3,2
D. 2,4
参考答案:1、C 2、C 3、D 4、B 5、D 、6、A 7、C 8、C 9、D 10、A
11、下列描述中不正确的是( )。
A. 字符型数组中可能存放字符串。
B. 可以对字符型数组进行整体输入、输出。
C. 可以对整型数组进行整体输入、输出。
D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
12、以下程序的输出结果是( )。
#define f(x) x*x
main()
{int a=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A. 9
B. 6
C. 36
D. 18
13、设有如下定义: int x=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是( )。
A. 1
B. 0
C. 4
D. 3
14、定义如下变量和数组:int i; int x[3][3]={1,2,3,4,5,6,7,8,9};
则语句for(i=0;i
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
15、以下对二维数组a 进行正确初始化的是( )
A. int a[2][3]={{1,2},{3,4},{5,6}};
B. int a[ ][3]={1,2,3,4,5,6};
C. int a[2][ ]={1,2,3,4,5,6};
D. int a[2][ ]={{1,2},{3,4}};
16、两次运行下面的程序, 如果从键盘上分别输入6和3, 则输出结果是( )。
int x;
scanf("%d",&x);
if(x++>5) printf("%d",x);
else printf("%d\n",x - -);
A. 7和5
B. 6和3
C. 7和4
D. 6和4
17、设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下说法中正确的是(
A)aa 数组成元素的值分别是"abcd" 和ABCD"
B)aa 是指针变量, 它指向含有两个数组元素的字符型一维数组
C)aa 数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa 数组的两个元素中各自存放了字符‟a‟和‟A‟的地址
18、下列程序的输出结果是( )。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A. xyabcAB
B. abcABz
C. ABabcz
D. xycdBCD
19、下列程序的输出结果是( )。
int a[5]={2,4,6,8,10},*P,* *k;
p=a; k=&p;
printf("%d",*(p++));
printf("%d\n",* *k);
A. 4 4 。 )
C. 2 4
D. 4 6
20、不能把字符串: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!";
参考答案:11、C 12、C 13、D 14、C 15、B 16、C 17、D 18、D 19、C 20、B
1. 一个C 语言程序是由( ) 构成。
A. 语句
B. 行号
C. 数据
D. 函数
2. 下面标识符中正确的是( ) 。
A.d&ef
B.6a
C.z4x5c
D.a3/b4
3. 在C 语言中,存储一个字符型、整型、单精度实型变量所需的空间是()。型、单精度实型变量所需的空间是()。
A.1、2、4
B.1、1、4
C.1、2、8
D.2、2、8
4. 为了避免嵌套的条件分支语句 if--else 中的else 总是与( ) 组成成对关系。
A. 缩排位置相同的
B. 在其之前未配对的
C. 在其之前未配对的最近的if
D. 在同一行上的if
5. 下列表达式的结果正确的是( ) 。
int aa,bb ,cc ,dd;
aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;
(aa+1==2)?bb=aa+2:aa+3
A.2
B.3
C. 1
D.5
6. 设有int x=11 ;则表达式(x+1/3)的值是( ) 。
A.3
B. 4
C. 11
D.12
7. 设有字符串A=“He has 钱!”,则该字符串的长度为( ) 。
B. 10
C. 11
D. 8
8. 有如下程序段, 则正确的执行结果是( )
int m=3;
while(m
{ printf(“%d ”,m-3); m++;}
A. 0 0 0
B.0 1 2
C.1 2 3
D. 无结果
9. 执行语句:printf("%d",(a=2)&&(b= -2);后,输出结果是( ) 。
A. 无输出
B. 结果不确定 http://ks.exam8.com
C.-1
D. 1
10. 有如下定义类型语句,若从键盘输入数据,正确的输入语句是( ) 。
int x; char y; char z[20];
A. scanf("%d%c%c",&x,&y,&z);
B. scanf("%d%c%s",&x,&y,&z);
C. scanf("%d%c%c",&x,&y,z);
D. scanf("%d%c%s",&x,&y,z);
11. struct ex
{ int x ; float y; char z ;} example;
则下面的叙述中不正确的是( ) 。
A. struct结构体类型的关键字
B. example是结构体类型名
C. x,y,z都是结构体成员名
D. struct ex是结构体类型
12. 在C 语言中对于实型数组, 其每个数组元素的类型是( ) 。
A. 实型
B. 整型
C. 可以为任何类型
D. 不确定
13. 若已定义:int a[9],*p=a;不能表示a[1] 地址的表达式是( ) 。
A. p+1
B. a+1
C. a++
D. ++p
14. 在TC2.0环境中,对文件进行保存使用的命令是( ) 。
A. OPEN
B. SAVE 来源:考试大网
C. LOAD
D. WRITE TO
15. 在C++的类中,用于表示公共类型的关键字是( ) 。
A. class
B. private
C. protect
D. public
1.D 2. C 3. A 4. C 5. B 6.C 7. B 8. B 9. D 10. D
11.B 12. A 13. C 14. B 15. D
1. 下列描述中不正确的是( C )。
A) 字符型数组中可以存放字符串
B) 可以对字符型数组进行整体输入、输出
C) 可以对整型数组进行整体输入、输出
D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
2. 执行下面的程序段后,变量k 中的值为( A )。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A) 不定值
B) 33
C) 30
D) 10
3. 设有数组定义:char array[ ]="China"; 则数组array 所占的空间为( C )。
A) 4个字节
B) 5个字节
C) 6个字节
D) 7个字节
4. 下列程序执行后的输出结果是( D )。
#include
main( )
{ char arr[2][4];
strcpy(arr,"you");strcpy(arr[1],"me");
arr[0][3]=‟&‟;
printf("%s \n",arr);
}
A) you&me
B) you
C) me
D) err
5. 执行下列程序时输入:123456789,输出结果是( D )。
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
6. 假定int 类型变量占用两个字节,若有定义:intx[10]={0,2,4}; 则数组x 在内存中所占字节数是( D )。
A) 3
B) 6
C) 10
D) 20
7. 以下程序的输出结果是( C )。
main( )
{int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A) 258
B) 741
C) 852
D) 369
8. 以下数组定义中不正确的是( D )。
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) intc[100][100]={0};
D) intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
9. 以下程序的输出结果是( A )。
main( )
{int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A) 0650
B) 1470
C)5430
D) 输出值不定
10. 以下程序的输出结果是( B )。
#include
main( )
{char st[20]="hello\0\t\\\";
printf(%d %d\n",strlen(st),sizeof(st));
}
A) 9 9
B) 5 20
C) 9 20
11. 以下程序的输出结果是( B )。
main( )
{int i,k,a[10],p[3];
k=5;
for(i=0;i
for(i=0;i
for(i=0;i
printf("%d\n",k);
}
A) 20
B) 21
C)22
D) 23
12. 以下程序的输出结果是( C )。
main( )
{int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i
}
A) 159
B) 147
C) 357
D) 369
13. 以下程序的输出结果是( A )。
main( )
{int a[3][3]={{1,2},{3,4},{5,6}}, i, j, s=0;
for(i=1;i
for(j=0;j
printf("%d\n", s);
}
A) 18
B) 19
C) 20
D) 21
14. 以下程序的输出结果是( D )。
main( )
{char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k
}
A) ABCD
B) ABCD
C) EFG www. Examda.CoM
D) EFGH
FGH EFG JK IJKL
M
15. 当执行下面的程序时,如果输入ABC ,则输出结果是( A )。
#include
#include
main( )
{char ss[10]="12345";
gets(ss);strcat(ss,"6789");printf("%s\n",ss);
}
A) ABC6789
B) ABC67
C) 12345ABC6
D) ABC456789
16. 若要定义c 为2×3×4的三维数组,正确的定义语句是( A )。
A)float c[2][3][4]
B) float c[2,3,4]
C) floatc(2,3,4)D) float c(2)(3)(4)
17. 若定义inta[2][2]={1,2,3,4},则a 数组的各数组元素值分别为( A )。
A) a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4
B)a[0][0]=1,a[0][1]=3,a[1][0]=2,a[1][1]=4
C)a[0][0]=4,a[0][1]=3,a[1][0]=2,a[1][1]=1
D) a[0][0]=4,a[0][1]=2,a[1][0]=3,a[1][1]=1
18. 在下列叙述中,正确的一条是( A )。
A) 以下语句是正确的:c har c[]=”ab”;
B) 一维数组的定义可采用下列格式:int a(10);
C) 下面的语句定义了一个二维数组:float a[3,4];
D) 以下两个语句中的a[3][4]的含义相同:int a[3][4]; a[3][4]=1;
19. 当输入的数据为2、5时,以下程序的输出结果是( C )。
#include
main( )
{intf[100],i,j,k,m;
scanf(“%d%d”,&k,&m);
for(i=0;i
f[k-1]=1;
for(i=k;i
for(j=i-k;j
printf(“%d%10d%10d\n”,k,m,f[m]);
}
A) 3 5 5
B) 3 5 7
C) 2 5 5
D) 3 6 9
20. 在下列语句中,正确的是( A )。
A)char str[]=”China”;
B) char str[];str=”China”;
C) char str1[5],str2[]={”China”};str1=str2;
D) char str1[],str2[];str2={”China”};strcpy(str1,str2);
21. 下面语句中不正确的是( D )。
A) inta[5]={1,2,3,4,5};
B) int a[5]={1,2,3};
C) inta[]={0,0,0,0,0};
D) int a[5]={0*5};
22. 若先后输入4、1、5、3、7,以下程序的输出结果为( D )。
#defineMAX 100
main( )
{
int i,j,n,flag,t,a[MAX];
printf(“输入数据个数:”);
scanf(“%d\n”,&n);
for(i=1;i
for(i=1;i
{flag=1;
for(j=1;j
if(a[j]>a[j+1])
{flag=0;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
if(flag) break;
}
for(i=1;i
printf(“\n”);
}
A) 2 4 6 7
B) 1 2 3 4
C) 1 5 4 7
D) 1 3 5 7
23. 以下程序的输出结果是( B )。
main( )
{int n,a[10];
for(n=0;n
a[n]=n;
for(n=9;n>=0;n--)
printf(“%d”,a[n]);
}
A) 1 2 3 4 5 6 7 8 9 10
B) 9 8 7 6 5 43 2 1 0
C) 10 9 8 7 6 5 4 3 2 1
D) 0 1 2 3 4 5 6 7 8 9
24. 若输入aefjhi 、c 、adfjhijk ,以下程序的输出结果为(B )。
#include
#include
main( )
{int i;
char string[20],str[3][20];
for(i=0;i
if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);
else strcpy(string,str[1]);
if(strcmp(str[2],string)>0)strcpy(string,str[2]);
printf(“Thelargest string is\n%s\n”,string);
}
A) adfjhi
B) c
C) aefjhijk
D) aefjhi
25. 以下程序的输出结果是( A )。
#include
#include
main( )
{char str[12]={‟s‟,‟t‟,‟r‟,‟i‟,‟n‟,‟g‟};
printf(“%d\n”,strlen(str));
}
A) 6
B) 7
C) 11
D) 12
26. 有以下程序:
#include
#define N 6
main( )
{char c[N];
int i=0;
for(;i
for(i=0;i
}
输入以下三行,每行输入都是在第一列上开始,代表一个回车符:
a
b
cdef
程序的输出结果是( C )。c[i]={'a','\0','b','\0','c','d'}
A) abcdef
C) a
D) a
b b b
c cd d
d cdef
e
f
27. 设有:char str[ ]=“Beijing”; 则执行:printf(“%d\n”,strlen(strcpy(str, “China”)));后输出的结果为( A )。"china"copyto str with '\0',it will stop when the strlen meets with '\0'.
A) 5
B) 7
C) 12
D) 14
28. 请选出以下程序的输出结果(A )。
#include
main( )
{chars1[10],s2[10],s3[10],s4[10];
scanf(“%s%s”,s1,s2);gets(s3);gets(s4);
puts(s1);puts(s2);puts(s3);puts(s4);
}
输入数据如下:(此处代表回车符)
aaaa bbbb
cccc dddd
A) aaaa
B) aaaa
C) aaaa
D) aaaa bbbb
bbbb bbbb bbbb cccc
cccc cccc dddd dddd
cccc dddd dddd eeee
29. 请读程序:
main( )
{int n[2],i,j,k;
for(i=0;i
k=2;
for(i=0;i
for(j=0;j
printf(“%d\n”,n[k]);
}
上面程序的输出结果是( A )。
A) 不确定的值
B) 3
C) 2
30. 请读程序片段(字符串内没有空格字符) :printf(“%d\n”,strlen(“ATS \n012\1\\”));其输出结果应为( C )。
A) 11
B) 10
C) 9
D) 12
31. 下述对C 语言字符数组的描述中错误的是( C )。
A) 字符数组可以存放字符串
B) 字符数组中的字符串可以整体输入、输出
C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D) 不可以用关系运算符对字符数组中的字符串进行比较
32. 阅读下列程序:
main( )
{int n[3],i,j,k;
for(i=0;i
n[i]=0;
k=2; 考试大论坛
for(i=0;i
for(j=0;j
n[j]=n[i]+1;
printf(“%d\n”,n[1]);
}
上述程序运行后,输出的结果是( D )。
A) 2B) 1C) 0
D) 3
33. 以下程序的输出结果是( C )。
main( )
{int n[3][3], i, j;
for(i=0;i
for(j=0;j
for(i=0;i
for(j=0;j
printf(“%d\n”, n[i][j]);
}
A) 14
B) 0
C) 6
D) 值不确定
34. 以下语句的输出结果为( A )。
printf(“%d\n”, strlen(“\t\”\065\xff\n”));
A) 5
B) 14
C) 8
D) 输出项不合法,无正常输出
35. 合法的数组定义是( D )。
A) int a[]=”string”;
B) int a[5]={0,1,2,3,4,5};
C) char a=”string”;
D) char a[]={0,1,2,3,4,5};
1. 下面程序段的运行结果是( C )。
int n=0;
while(n++
printf(“%d”,n);
A) 2
B) 3
C) 4
D) 有语法错
2. 设有程序段:
t=0;
while(printf(“*”))
{t++;
if(t
}
下面描述正确的是( D )。
A) 其中循环控制表达式与0等价
B) 其中循环控制表达式与'0' 等价
C) 其中循环控制表达式是不合法的
D) 以上说法都不对
3. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空( B )。
#include
main()
{int a,b,t;
scanf(“%d%d”,&a,&B);
while( ___________ )
{if(a>B)
{t=a;a=b;b=t;}
printf(“%d,%d\n”,a,B);
scanf("%d%d",&a,&B);
}
}
A) !a=b
B) a!=b
C) a==b
D) a=b
4.C 语言中,while 和do-while 循环的主要区别是( A )。
A) do-while的循环体至少无条件执行一次
B) while的循环控制条件比do-while 的循环控制条件更严格
C) do-while允许从外部转到循环体内
D) do-while的循环体不能是复合语句
5. 对以下程序段描述正确的是( C )。
x=-1;
do
{x=x*x;}
while(!x);
A) 是死循环
B) 循环执行二次
C) 循环执行一次
D) 有语法错误
6. 以下描述中正确的是( C )。
A) do-while循环中循环体内不能使用复合语句
B) do-while循环由do 开始,用while 结束,在while(表达式) 后面不能写分号
C) 在do-while 循环体中,一定要有能使while 后面表达式的值变为零(“假”)的操作
D) do-while循环中,根据情况可以省略while
7. 若有如下语句
int x=3;
do{ printf(“=”,x-=2);} while(!(--x));
则上面程序段( B )。
A) 输出的是1
B) 输出的是1和-2
C) 输出的是3和0
D) 是死循环
8. 下面有关for 循环的正确描述是( D )。
A) for循环只能用于循环次数已经确定的情况
B) for循环是先执行循环的循环体语句,后判断表达式
C) 在for 循环中,不能用break 语句跳出循环体
D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
9. 对for(表达式1; ;表达式3) 可理解为( B )。
A) for(表达式1;0; 表达式3)
B) for(表达式1;1; 表达式3)
C) for(表达式1; 表达式1; 表达式3)
D) for(表达式1; 表达式3; 表达式3)
10. 若i 为整型变量,则以下循环执行次数是( B )。
for(i=2;i==0;) printf(“%d”,i--);
A) 无限次
B) 0次
C) 1次
D) 2次
11. 以下不是无限循环的语句为( A )。
A) for(y=0,x=1;x>++y;x=i++) i=x;
B) for(;;x++=i);
C) while(1){x++;}
D) for(i=10;;i--) sum+=i;
12. 下面程序段的运行结果是( C )。
for(y=1;y
printf(“x=%d,y=%d”,x,y);
A) x=27,y=27
B) x=12,y=13
C) x=15,y=14
D) x=y=27
13. 执行语句for(i=1;i++
A) 3
B) 4
C) 5
D) 不定
14. 有一堆零件(100到200之间) ,如果分成4个零件一组的若干组,则多2个零件; 若分成7个零件一组,则多3个零件; 若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空( D )。 #include
main()
{int i;
for(i=100;i
if((i-2)%4==0)
if(!((i-3)%7))
if( ______ )
printf(“%d”,i);
}
A) i%9=5
B) i%9!=5
C) (i-5)%9!=0
D) i%9==5
15. 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空( B )。 #include
main()
{ int i=0,j,k;
do{i++;k=316-13*i;}while( _k______ );
j=k/11;
printf(“316=13*%d+11*%d”,i,j);
}
A) k/11
B) k
C) k/11==0
D) k==0
16. 下面程序的运行结果是( D )。
#include
main()
{int y=10;
do{y--;}while(--y);
printf(“%d\n”,y--);
}
A) -1
B) 1
C) 8
D) 0
17. 若运行以下程序时,从键盘输入ADescriptor(表示回车) ,则下面程序的运行结果是( D )。 #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
C) v0=11,v1=4,v2=11
D) v0=12,v1=4,v2=12
18. 下面程序的运行结果是( B )。
#include
main()
{int a=1,b=10;
do
{b-=a;a++;}
while(b--
printf(“a=%d,b=%d\n”,a,B);
}
A) a=3,b=11
B) a=2,b=8
C) a=1,b=-1
D) a=4,b=9
19. 以下程序的输出结果是( B )。
main()
{ int num=0;
while(num
{ num++; printf(“%d\n”,num);}
}
A) 1
B) 1
C) 1
D) 1
2 2 2
3 3
4
20. 设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是( C )。
A) while循环执行10次
B) 循环是无限循环
C) 循环体语句一次也不执行
D) 循环体语句执行一次
21. 设有以下程序段
int x=0,s=0;
while(!x!=0) s+=++x;
printf("%d",s);
则( B )。
A) 运行程序段后输出0
B) 运行程序段后输出1
C) 程序段中的控制表达式是非法的
D) 程序段执行无限次
22. 语句while(!E);中的表达式!E 等价于( A )。
A) E==0
B) E!=1 来源:www.examda.com
C) E!=0
D) E==1
23. 下面程序段的运行结果是( A )。
a=1;b=2;c=2;
while(a printf("%d, %d, %d", a, b, C);
A) 1,2,0
B) 2,1,0
C) 1,2,1
D) 2,1,1
24. 下面程序段的运行结果是( D )。
x=y=0;
while(x
printf("%d, %d", y, x);
A) 20,7
C) 20,8
D) 8,20
25. 以下程序段的执行结果是( B )。
int a, y;
a=10; y=0;
do
{ a+=2; y+=a;
printf("a=%d y=%d\n", a, y);
if(y>20) break;
} while(a=14);
A) a=12 y=12
B) a=12 y=12
a=14 y=16 a=16 y=28
a=16 y=20
a=18 y=24
C) a=12 y=12
D) a=12 y=12
a=14 y=26
a=14 y=44
26.t 为int 类型,进人下面的循环之前,t 的值为0,则以下叙述中正确的是( B )。 while( t=l )
{……}
A) 循环控制表达式的值为0
B) 循环控制表达式的值为1
C) 循环控制表达式不合法
D) 以上说法都不对
27. 有以下程序段
int k=0;
while(k=1) k++;
while 循环执行的次数是( A )。
A) 无限次
B) 有语法错,不能执行
C) 一次也不执行
D) 执行1次
28. 以下程序执行后sum 的值是( C )。
main()
{ int i , sum;
for(i=1;i
printf("%d\n",sum);
}
A) 15
B) 14
C) 不确定
29. 有以下程序段
int x=3;
do
{ printf("%d",x-=2); }
while (!(--x));
其输出结果是( C )。
A) 1
B) 3 0
C) 1 -2
D) 死循环
30. 若输入12、8,以下程序的输出结果是( A )。
main()
{int a,b,num1,num2,temp;
scanf(“%d,%d”,&num1,&num2);
if(num1>num2)
{temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{temp=a%b;
a=b;
b=temp;
}
printf(“%d, %d”,a,num1*num2/a);
}
A) 4,24
B) 3,24
C) 5,25
D) 4,25
31. 以下程序的输出结果是( A )。
#include
#include
main()
{int s=1;
float n=1,pi=0;
double t=1;
while(fabs(t)>=2e-6)
{pi+=t;
n+=2;
s=-s;
t=s/n;
pi*=4;
printf(“pi=%.6f\n”,pi);
}
A) 3.141592
B) 1
C) 2e-6
D) 0
32. 以下程序的输出结果是( B )。
main()
{int i,f1,f2;
f1=f2=1;
for(i=0;i
{printf(“%d %d ”,f1,f2);
f1+=f2;
f2+=f1;
}
}
A) 1 2 3 4 5 6 7 8
B) 1 1 2 3 5 8 13 21
C) 1 1 3 5 7 9 11 13
D) 1 3 5 7 9 11 13 15
33. 下列叙述中,正确的一条是( B )。
A) 语句“goto 12;”是合法的
B) for(;;)语句相当于while(1)语句
C) if(表达式) 语句中,表达式的类型只限于逻辑表达式
D) break语句可用于程序的任何地方,以终止程序的执行
34. 以下程序的输出结果是( B )。
main()
{int a,b;
for(a=1,b=1;a
{if(b>=20) break;
if(b%3==1)
{b+=3;
continue;
}
b-=5;
}
printf(“%d\n”,a);
}
A) 7
B) 8
C) 9
D) 10
35. 以下的for 循环( C )
for(x=0,y=0;(y!=123)&&(x
A) 是无限循环
B) 循环次数不定
C) 执行4次
D) 执行3次
36.C 语言中( D )
A) 不能使用do-while 语句构成的循环
B) do-while语句构成的循环必须用break 语句才能退出
C) do-while语句构成的循环,当while 语句中的表达式值为非零时结束循环
D) do-while语句构成的循环,当while 语句中的表达式值为零时结束循环
37. 以下程序的输出结果是( A )。
main()
{int i;
for(i=1;i
{if(i%2)
printf(“*”);
else
continue;
printf(“#”);
}
printf(“$\n”);
}
A) *#*#*#$
B) #*#*#*$
C) *#*#$
D) #*#*$
38. 有以下程序,从第一列开始输入数据2473(代表一个回车符) ,则程序的输出结果为( A )。 #include
main()
{int c;
while((c=getchar())!=‟\n‟)
{switch(c-„2‟)
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}
}
printf(“\n”);
}
A) 668977
B) 668966
C) 6677877
D) 6688766
39. 执行以下程序片段的结果是( B )。
int x=23;
do
{printf(“%d”, x--);}
while(!x);
A) 打印出321
B) 打印出23
C) 不打印任何内容
D) 陷入死循环
40. 若x 是int 型变量,则执行以下程序片段的结果是( D )。
for(x=3;x
A) **3##4**5
B) ##3**4##5
C) ##3
D) **3##4
**4##5 **5
41. 有以下程序,若运行时从键盘输入3.6 2.4(代表一个回车符) ,则程序的输出结果为( B )。 #include
#include
main()
{float x,y,z;
scanf(“%f%f”,&x,&y);
z=x/y;
while(1)
{if(fabs(z)>1.0)
{x=y;y=z;z=x/y;}
else break;
}
printf(“%f\n”, y);
}
A) 1.500000
B) 1.600000
C) 2.000000
D) 2.400000
42. 以下程序的输出结果是( D )。
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf(“%d %d ”,x--,y);
}
A) 10 1 9 2
B) 9 8 7 6
C) 10 9 9 0
D) 10 10 9 1
43. 以下程序的输出结果是( A )。
main()
{int n=4;
while(n--)
printf(“%d ”,--n);
}
A) 2 0
B) 3 1
C) 3 2 1
D) 2 1 0
44. 以下程序的输出结果是( B )。
main()
{int i;
for(i=‟A‟;i
printf(“%c”,i+32);
}
A) 编译通不过,无输出
B) aceg
C) acegi
D) abcdefghi
45. 若i 、j 已定义为int 型,则以下程序段中内循环体的总的执行次数是( A )。 for(i=5;i;i--)
for(j=0;j
A) 20
B) 24
C) 25
D) 30
46. 若j 为int 型变量,则以下for 循环语句的执行结果是( B )。
for(j=10;j>3;j--)
{if(j%3) j--;--j;--j;printf(“%d ”,j);}
A) 6 3
B) 7 4
C) 6 2
D) 7 3
47. 以下程序的执行结果是( D )。
main()
{int i,x;
for(i=1;i
{x=i;
if(++x%2==0)
if(x%3==0)
if(x%7==0)
printf(“%d”,i);
}
}
A) 28
B) 27 来源:考试大
C) 42
D) 41
48. 以下程序的执行结果是( B )。
main()
{int i,j;
for(j=10;j
{ for(i=9;i if(!(j%i)) break;
if(i>=j-1) printf(“%d”,j);
}
}
A) 11
B) 10
C) 9
D) 10 11
49. 在下列选项中,没有构成死循环的程序段是( C )。
A) int i=100;
B) for(;;);
while(1)
{i=i0+1;
if(i>100) break;
}
C) int k=1000;
D) int s=36;
do{++k;} while(s);--s;
while(k>=10000);
50. 以下程序的输出结果是( B )。
main()
{int i,j,x=0;
for(i=0;i
{ x++;
for(j=0;j
{ if(j%2) continue;
x++;
}
x++;
}
printf(“x=%d\n”,x);
}
A) x=4
C) x=6
D) x=12
51. 运行以下程序后,如果从键盘上输入65 14,则输出结果是( C )。 main()
{int m,n;
scanf(“%d%d”,&m,&n);
while(m!=n)
{while(m>n) m-=n;
while(n>m) n-=m;
}
printf(“m=%d\n”, m);
}
A) m=3
B) m=2
C) m=1
D) m=0
52. 以下程序的输出结果是( C )。
main()
{int i,j,m=0,n=0;
for(i=0;i
for(j=0;j
if(j>=i) m=1;n++;
printf(“%d\n”, n);
}
A) 4
B) 2
C) 1
D) 0
53. 以下程序执行后sum 的值是( C )。
main()
{ int i , sum=0;
for(i=1;i
printf("%d\n",sum);
}
A) 6
B) 3
C) 死循环
D) 0
1. 运算符________的优先级最高。
A.[ ]
B. +=
C. ?:
D.++
{ int n; ( n=6*4,n+6),n*2; printf(“n=%d\n”,n); }
此程序的输出结果是______________.
A.30
B. 24
C. 60
D. 48
3. 若有如下定义,则__________是对数组元素的正确的引用。. int a[10] , *p ; p=a ;
A. *&a[10]
B. a[11]
C. *(p+11)
D. *p *p *p
4. 设整型变量n 的值为2,执行语句“n+=n-=n*n;”后,n 的值是__________
A. 0
B. 4
C. - 4
D. 2
5. 各种基本数据类型的存贮空间正确的长度排列为__________。
A.Char
C.Char
6. 下面的变量说明中__________是正确的。
A.char :a, b, c;
B.char a; b; c;
C.char a, b, c;
D.char a, b, c
7. 表达式y=(13>12?15:6>7?8:9)的值为____________ 。
A 9
B 8
C 15
D. 1
8. 若x=5,y=3 则y*=x+5; y的值为___________.
A. 10
B. 20
C. 15
D. 30
9. 能正确表示a 和b 同时为正或同时为负的逻辑表达式是_________。
A.a>=0||b>=0)&&(a
B.(a>=0 && b>=0)&&(a
C.(a+b>0) &&(a+b
D. a*b>0
10.C 语言中,合法的字符型常数是_________。
A.„A‟
B.“A”
C. 65
D. A
参考答案:1 A 2B 3D 4C 5C 6C 7C 8D 9D 10A
11. 已有定义 int x=3, y=4, z=5;则表达式“!(x+y)+z-1&&y+z/2”的值是________。
A.6
B.0
C.2
D.1
12. 若变量c 为char 类型,能正确判断出c 为小写字母的表达式是_______。
A.‟a‟
B. (c>=‟a‟) || (c
C.(„a‟=c)
D. (c>=‟a‟) && (c
13. 设有定义:long x=-123456L; 则以下能够正确输出变量x 值的语句是_______。
A.printf(“x=%d\n”,x)
B.printf(“x=%ld\n”,x)
C.printf(“x=•l\n”,x)
C.printf(“x=%D\n”,x);
14. 从循环体内某一层跳出,继续执行循环外的语句是:___________。
A. break语句
B.return 语句
C.continue 语句
D. 空语句。
15.C 语言用_______表示逻辑“真”值。
A.true
B.t 或y
C. 非零整型值
D. 整型值0
16. 为了避免嵌套的条件分支语句if —else 的二义性,C 语言规定:C 程序中的else 总是与_____组成配对关系。
A. 缩排位置相同的if
B. 在其之前未配对的if
C. 在其之前未配对的最近的if
D. 同一行上的if
17. 在函数中默认存储类型说明符的变量应该是________存储类型。
A. 内部静态
B. 外部
C. 自动
D. 寄存器
18.C 语言中以只读方式打开一个文件应选择_______________参数。
A.“r”
B.“w”
C.“rb”
D.“a”
19. 设有数组定义:char array[]=”student”;则数组所占的存贮空间为__________。
A.6个字节
B. 7个字节
C. 8个字节
D. 9个字节
20. 根据C 语言的语法规则,下列________个是不合法标识符。
A.do
B. Name
C. R5
D. _exam
参考答案:11D 12D 13B 14A 15C 16C 17A 18A 19C 20A
1.若要“向文本文件尾增加数据”,在fopen 函数中应使用的文件方式是( B )。
A) “ab+”
B) “a”
C) “ab”
D) “a+”
2.在C 语言中,用于实现打开文件的库函数是( B )。
A) fclose()
B) fopen()
C) fseek()
D) rewind()
3.若要“为读/写建立一个新的二进制文件”,在fopen 函数中应使用的文件方式是( D )。
A) “w+”
B) “rb+” 来源:考试大网
C) “ab+”
D) “wb+”
4.若在fopen 函数中使用文件的方式是“ab”,该方式的含义是( B )。
A) 为读/写打开一个文件
B) 向二进制文件尾增加数据
C) 为输出打开一个文本文件
D) 为读/写建立一个新的二进制文件
5.若在fopen 函数中使用文件的方式是“r”,该方式的含义是( A )。
A) 为输入(读)打开一个文本文件
B) 为输出(写)打开一个文本文件
C) 为读/写打开一个文本文件
D) 为读/写建立一个新的二进制文件
6.在C 程序中,可把整型数以二进制形式存放到文件中的函数是( C )。
A) fprintf函数
B) fread函数
C) fwrite函数
D) fputc函数
7.若fp 是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是( C )。
A) EOF
B) 0
C) 非零值
D) NULL
8.下面的程序执行后,文件test.t 中的内容是( A )。 #include
void fun(char *fname., char *st)
{FILE *myf; int i;
myf=fopen(fname, "w");
for(i=0;i
fclose (myf);
}
main()
{fun("test.t", "new world"); fun("test.t", "hello,";)
A) hello,
B) new worldhello,
C) new world
D) hello, rld