C语言程序设计 样题
单选题
1:下面程序段的输出结果是( )。
int i=40000;
printf("%d\n",i);( 2 分)
A:40000
B:32767
C:程序出错
D:不确定的数
答案:D
2:以下程序是把文本文件myfile.txt中内容读出,并且显示在屏幕上,则程序中画线的部分应该为( )。
#include "stdio.h"
main()
{
FILE *fp;
char ch;
fp=fopen("d:\\myfile.txt","r")
while (______________)
putchar(ch);
fclose(fp);
}
A. B. C. D.( 2 分)
A:(ch=fgetc(fp))!=EOF
B:(ch=fgetc(fp))==EOF
C:(ch=putc(fp))!=EOF
D:(ch=putc(fp))==EOF
答案:A
3:下列各组字符常量中,两个都合法的一组的字符常量是 ( )。( 2 分)
A:"a" , '\\'
B:'\111', '\xfe'
C:'\t' , '\018'
D:'\0xaa' , '\x1g'
答案:B
4:执行下列程序后,变量i的正确结果是( )。
int i=20;
switch(i)
{
case 19:i+=1;
case 20:i+=1;
case 21:i+=1;
case 22:i+=1;
}( 2 分)
A:20
B:21
C:22
D:23
答案:D
5:下列程序运行结束后,sum与count值有三个均相同,只有程序( )与其他程序不同。( 2 分)
A:sum=0;
count=0;
while(count〈=100)
sum+=count++;
B:sum=0;
count=0;
while(count++〈100)
sum+=count;
C:sum=0;
count=0;
while(count〈100)
sum+=++count;
D:sum=0;
count=0;
while(++count〈=100)
sum+=count;
答案:C
6:下面程序运行的结果是( )。
main( )
{int a[6][6],i,j;
for (i=1;i〈6;i++)
for (j=1;j〈6;j++)
a[i][j]=(i/j)*(j/i);
for (i=1;i〈6;i++)
{ for (j=1;j〈6;j++)
printf(“%2d”,a[i][j]);
printf(“\n”);}}( 2 分)
A:1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
B:0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
C:1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
D:1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1
答案:C
7:若有以下定义,则*(p+5)表示 ( ) 。
int a[10],*p = a;( 2 分)
A:元素a[5]的地址
B:元素a[6]的地址
C:元素a[5]的值
D:元素a[6]的值
答案:C
8:以下程序输出的结果为( )。
main( )
{ int i,f1,f2;
f1=f2=1;
for(i=0;i〈4;i++)
{ printf(“%d %d ”,f1,f2);
f1+=f2;
f2+=f1;
}
}( 2 分)
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
答案:B
9:请读程序:
main()
{ int num = 0;
while(num 〈 =2)
{num + +; printf(“%d \ n”,num);}
}
上面程序的输出结果是( )。( 2 分)
A:1
B:1
2
C:1
2
3
D:1
2
3
4
答案:C
10:已知x = 3、y = 2,则表达式 x*=y + 8的值为( )。( 2 分)
A:3
B:2
C:30
D:10
答案:C
11:下列程序把数组元素最大的放入a[0]中,则在if语句中的条件表达式应该是( )。
main( )
{int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
for(i=0;i〈10;i++,p++)
if( ) *a=*p;
printf(“%d”,*a);
}( 2 分)
A:p〉a
B:*p〉a[0]
C:*p〉*a[0]
D:*p[0]〉*a[0]
答案:B
12:若x 为int型变量,则执行以下语句后,x的值是( ) 。
x = 6;
x += x- = x * x;( 2 分)
A:36
B:-60
C:60
D:-24
答案:B
13:若执行下面的程序时从键盘上输入5,则输出是( )。
main()
{ int x;
scanf("%d",&x);
if(x++〉5) printf("%d\n",x);
else printf("%d\n",x--);
}( 2 分)
A:7
B:6
C:5
D:4
答案:B
14:以下程序在输入5,2之后的执行结果是 ( )。
main()
{int s,t,a,b;
scanf(“%d,%d”,&a,&b);
s = 1; t = 1;
if(a〉0) s = s + 1;
if(a〉b) t = s + t;
else if(a = =b) t = 5;
else t= 2*s;
printf(“s = %d,t = %d\n”,s,t);
}( 2 分)
A:s =2,t =5
B:s = 1,t =3
C:s = 2,t =3
D:不能确定
答案:C
15:若已定义x为int类型变量,说明指针变量p的正确语句是( ) 。( 2 分)
A:int p = &x;
B:int *p = x;
C:int *p ; p= &x ;
D:*p = *x ;
答案:C
16:设a,b,c为整型数,且a = 2,b= 3,c = 4,则执行完以下语句后,a的值是 ( ) 。
a*=16+(b++)—(++c)( 2 分)
A:28
B:14
C:32
D:30
答案:A
17:下面程序的输出结果是 ( )。
main()
{ int **k,*j,i = 100;
j = &i;k = &j;
printf(“%d \ n”,**k);( 2 分)
A:运行错误
B:100
C:i的地址
D:j的地址
答案:B
18:若运行时给变量x 输入12,则以下程序的运行结果是( ) 。
main()
{ int x,y;
scanf(“%d”,&x);
y = x 〉 12?x + 10:x -12;
printf(“%d”,y);
}( 2 分)
A:0
B:2
C:12
D:10
答案:A
19:以下程序的输出结果是( )。
main( )
{int num=0;
while(num〈=2)
{ num++;printf(“%d\n”,num);}
}( 2 分)
A:1
2
3
4
B:1
2
3
C:1
2
D:1
答案:B
20:以下程序的运行结果是 ( )。
# define PI 3.141593
main()
{
printf("PI = %f \ n",PI);
}( 2 分)
A:3.141593 = 3.141953
B:PI = 3.141953
C:3.141953 = PI
D:程序出错,无结果
答案:B
21:下列 ( )表达式不满足:当x的值为偶数时值为“真”,为奇数时值为“假”。( 2 分)
A:x%2==0
B:!x%2!=0
C:(x/2*2–x)==0
D:!(x%2)
答案:B
22:下面程序的运行结果是 ( ) 。
main()
{ int i;
for(i= 1;i〈=5;i++)
{ if(i%2) printf(“*”);
else continue;
printf(“#”);
}
printf(“¥\n”);
}( 2 分)
A:* # * # * # ¥
B:# * # * # * ¥
C:* # * # ¥
D:# * # * ¥
答案:A
23:执行下面的程序后,b的值为( )。
main()
{ int a,b;
for (a=1,b=1;a〈100;a++)
{ if (b〉=20) break;
if (b%3==1)
{ b+=3; continue; }
b-=5;
}
}( 2 分)
A:8
B:22
C:9
D:24
答案:B
24:若i是int型变量,且有下面的程序片段:
i= 322;
if(i%2= =0) printf(“# # # # ”);
else printf(“* * * *”);
上面程序片段的输出结果是( )。( 2 分)
A:# # # #
B:* * * *
C:# # # # * * * *
D:不确定值
答案:A
25:假定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的值为( ) 。( 2 分)
A:4
B:3
C:2
D:1
答案:D
26:对以下说明语句的正确理解是 ( )。
int a[10] = {6,7,8,9,10};( 2 分)
A:将5个初值依次赋给 a[1] 至 a[5]
B:将5个初值依次赋给 a[0] 至 a[4]
C:将5个初值依次赋给 a[6] 至 a[10]
D:因为数组长度与初值的个数不相同,所以此语句不正确;
答案:B
27:下列程序的执行结果是( ) 。
main()
{int a,b,c;
a = 2; b = 3; c = 1;
if(a〉b)
if(a〉c)
printf(“%d\n”,a);
else
printf(“%d \n”,b);
printf(“end\n”);
}( 2 分)
A:2
B:3
C:1
D:end
答案:D
28:有如下程序段
FILE *fp;
if ((fp=fopen(_____________))==NULL)
{
printf("Can't open file.\n");
exit(0);
}
该程序用来为读而打开E盘根目录下一个名为myfile.dat的二进制文件,则程序中划线部分应该为 ( )。( 2 分)
A:"e:\\myfile.dat","r"
B:"e:\\myfile.dat","rb"
C:"e:\myfile.dat"," r "
D:"e:\myfile.det","rb"
答案:B
29:设有
static char str[]="Nan Jing";
则执行
printf ("%d\n",strlen(strcpy(str,"China")));
后的输出结果为( )。( 2 分)
A:5
B:7
C:8
D:9
答案:A
30:假定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的值为( )。( 2 分)
A:4
B:3
C:2
D:1
答案:D
31:在以下程序的运行结果为( ) 。
#define PRICE 30
main()
{ int num,total;
num = 10;
total = num*PRICE;
printf(“total = %d \ n”,total);
}( 2 分)
A:total = 100
B:total = 200
C:total = 300
D:total = 400
答案:C
32:执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是( )。
int a;
float b;
scanf("a=%d,b=%f",&a,&b);( 2 分)
A:25 2.5
B:25,2.5
C:a=25,b=2.5
D:a=25 b=2.5
答案:C
33:有程序段:
char s[]=”Wang”;
int s1,s2;
s1=strlen(s);
s2=sizeof(s);
printf(“s1=%d,s2=%d\n”,s1,s2);
以上程序段输出的结果是( )。( 2 分)
A:s1=4,s2=4
B:s1=4,s2=5
C:s1=5,s2=4
D:s1=5,s2=5
答案:B
34:现已定义整型变量int i=0;执行循环语句“while(i〈10) i++;”后,i的值为( )。( 2 分)
A:0
B:10
C:11
D:以上三个答案均不正确
答案:B
35:请阅读程序片段:
int a [ ]={1,2,3,4},*p;
int i;
p = a;
*(p + 3)+=2;
printf(“%d”,*(p+3));
上面程序片段的输出结果是( )。( 3 分)
A:0
B:6
C:a [3]的地址
D:不确定值
答案:B
36:现已定义整型变量int i=0;执行循环语句“while(i++〈10);”后,i的值为( )。( 3 分)
A:0
B:10
C:11
D:以上三个答案均不正确
答案:C
37:下面程序的运行结果是( )。
#include 〈stdio.h〉
main( )
{int i;
for(i=1;i〈=5;i++)
switch(i%5)
{ case 0:printf(“*”);break;
case 1:printf(“#”);break;
default:printf(“\n”);
case 2:printf(“&”);
}
}( 3 分)
A:#&&&*
B:#&
&
&*
C:#
&
&
&
*
D:#&
*
答案:B
38:以下程序段的运行结果是 ( ) 。
int a = 3,b = 3;
a = - -b+1;
printf(“%d %d”,a,b);( 3 分)
A:3 3
B:4 2
C:3 2
D:2 3
答案:C
39:在下列字符序列中,不可能作为C语言标识符的是( )。( 3 分)
A:student_num
B:class
C:#88
D:month_12
答案:C
40:现已定义整型变量int i=0;执行循环语句“while(i〈10) ++i;”后,i的值为( )。( 3 分)
A:0
B:10
C:11
D:以上三个答案均不正确
答案:B
41:下面程序的输出是 ( )。
main()
{int a [10] = {1,2,3,4,5,6,7,8,9,10};
int *p = a;
printf(“%d \ n”,*(p+2));
}( 3 分)
A:3
B:4
C:1
D:2
答案:A
42:设有定义:
int k=2;
int *ptr1,*ptr2;
且ptr1和ptr2均已指向k,下列不正确的是( )。( 3 分)
A:k=*ptr1+*ptr2;
B:ptr2=k;
C:ptr1=ptr2
D:k=*ptr1*(*ptr2);
答案:B
43:若有说明语句:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a,b,c的语句是( )。( 3 分)
A:scanf(“%d%d%d”,&a,&b,d);
B:scanf(“%d%d%d”,&a,&b,&d);
C:scanf(“%d%d%d”,a,b,d);
D:scanf(“%d%d%d”,a,b,*d);
答案:A
44:C语言规定,程序中各函数之间( )。( 3 分)
A:既允许直接递归调用也允许间接递归调用
B:不允许直接递归调用也不允许间接递归调用
C:允许直接递归调用不允许间接递归调用
D:不允许直接递归调用允许间接递归调用
答案:A
45:有以下的for循环语句: for (x=0, y=3, i=0;(y〉3)&&(x〈4);x++,y++) i++;则执行上述语句后,i的值为( )。( 3 分)
A:0
B:1
C:2
D:7
答案:A