1、C语言程序设计试题 说明:本试题共15页,请把答案写在答题卡上。 一、单选题(共60小题,每题1分,共60分) 1. 执行下列程序中的输出语句后,x的值是 main () {int x ; printf( "%d\n”,(x=5*6,x*2,x+20)); } A) 30 B)60 C)50 D)80 2. 下列程序的输出结果是 main () {int x=1,y=0,z; z=( x<=0)&&(y>=0); printf( "%d %d% d%\n”,z,x,y); } A) 0 1 B)0 -1 0 C)0 1 0 D)0 1 -1 3. 在C语言中,下列选
2、项属于合法的长整型常数的是 A)0L B)1234567 C)0.0234567 D)3.14159e3 4. 下列选项中属于不正确的赋值语句的是 A)t++; B)n1=( n2=( n3=0)); C)k=i= =j; D)a=b,c=1; 5. 若有定义:int a,b; char x,y;并有以下输入数据:14 22 XxYy (回车) 则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是 A) scanf( "%d %d”,&a,&b); x=getchar(); y=getchar(); B) scanf ("%d%d %c %c”, &a,
3、 &b, &x, &x,&y,&y); C) scanf ( “%d %d %c%c%c %c”, &a, &b, &x,&x,&y,&y); D) scanf ("%d%d %c %c”, &a, &b, &x, &y); 6. 下列转义字符不正确的是 A)'\\' B)'\' C)'\053' D)'\0' 7. 下列选项可作为C语言赋值语句的是 A)x=3,y=5 B)a=b=6 C)i; D)y=int( x); 8. 当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是 A ) c=b=a; B ) ( a=c )H( b=c )
4、 C ) ( a=c ) && ( b=c ); D ) a=c=b; 9. 有以下程序: main() { unsigned int a ; int b=-1; a=b; printf (圳u”,a); } 该程序运行后的输出结果是 (知识点4.5) A) -1 B)65535 C)32767 D)-32768 10. 若x、b、m、n均为int型变量,执行下面语句后b的值为 m=20;n=6; x=(m= =n++)?m: ++n; b=m++; A)11 B)6 C)19 D)18 11. 有以下程序: main() { int a=111,b=222; pr
5、intf("%d\n”,a, b); } 该程序运行后的输出结果是 A)错误信息 B)111 C)222 D)111,222 12. 以下程序的输出结果是 main() { int a=2,c=5; printf("a=%%%d,b=%%%d\n”,a, c); } A) a=%2, b=%5 B) a=2, b=5 C) a=%%%d, b=%%%d D) a=%%d, b=%%d 13. 对于浮点型变量f,能实现对f中的值在小数点后第三位进行四舍五入的表达式 是 A)f=(f*1+0.5)/1.0 B)f=(f*1+0.5)/1 C)f=(int)(f*1+0.5)/1.0
6、 D)f=(f/1+0.5)*1 14. 设 a=5, b=6, c=7, d=8,m=2, n=2, 执行(m=a>b)&&(n=c>d)后 m, n的值为 A) 2,2 B) 2,0 C) 0,2 D) 0,0 15. 语句 printf("%d\n”,strlen( "asd\n\x12\1\\”));的输出结果是 A) 9 B) 11 C) 7 D) 8 16. 有以下程序: main( ) { int y=1234; printf( "y=%6d”,y); printf ("y=%+06d\n”, y); } 该程序的运行结果是 A) y= 1234y=1234 B)
7、 y= 1234y=+01234
C) y=1234y=+01234 D) y= 1234y=1234
17. 语句:printf “%d”, ! 9);的输出结果是
A) 0 B)1 C)有语法错误,不能执行 D)-9
18. 已有定义语句:int x=6,y=4,z=5;执行以下语句后,能正确表示x、y、z值
的选项是
if( x 8、e 1.0 : printf( "A\n”); case 2.0 : printf ( "B\n”); } C)switch( (int)( 1.0+2.5))
{ case 1 : printf( "A\n”); case 1+2 : printf ( "B\n”); }
B) swicth(1)
{ case 1 : printf( "A\n”);
case 2 : printf ( "B\n”); }
D ) switch ( "a” );
{ case "a” : printf ( "A\n”);
case "b” : printf ( "B\n”); }
20. 9、若k为int型变量,以下语句段执行后的输出结果是k=-3; if (k<=0) printf "####”) else printf ( "****” );
A) #### B) **** C) ####**** D)有语法错误,不能执行
21. 当a=2, b=3, c=4, d=5时,执行下面一段程序后x的值为
if ( a>b )
if(c 10、 { y; } while (y );
printf ( "%d\n”,y- -); } A)-1B)1C)8 D)0
23. 下列程序的运行结果是
# include 11、<8; x++)
printf((x%2)? “**%d”): “##%d\n”),x);
该程序片段的输出结果是
A) **5##6 B) ##5 C) ##5**6##7 D) **5##6**7 **7 **6##7
25. 有以下程序:
main()
{int a=1, b=0;
switch(a)
{ case 1:switch(b)
{ case 0: printf “****”); break ;
case 1: printf “####”); break ; }
case 2: printf “$$$$”); break ; }
该程序的输出结果是
A 12、)**** B)****$$$$ C)****####$$$$ D) ####$$$$
26. 下列程序段的输出结果是
int x=3;
do {printf “%3d”,x-=2); }
while(! (x));
A)1 B)3 0 C)1 -2 D)死循环
27. 有以下程序,其中x、y为整型变量;
for(x=0,y=0; ( x<=1)&&( y= 1); x++,y);
printf( "x=%d,y=%d”,x, y);
该程序的输出结果是
A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=0
28. 有以下程序段:
int 13、 n=0,p;
do { scanf “%d”,&p); n++; } while (p! =12345&&n<3);
此处do-while循环的结束条件是
A) p的值不等于12345并且n的值大于3
B) p的值等于12345并且n的值大于等于3
C) p的值不等于12345或者n的值小于3
D) p的值等于12345或n的值大于等于3
29. 在下述程序中,if (i>j)语句共执行的次数是
main()
{ int i=0, j=10, k=2, s=0;
for(;;)
( i+= k ;
if(i>j)
{ printf “%d”,s);
break ; 14、
}
s+=i ;
}
}
A)4 B)7 C)5 D)6
30. 以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生 的平均分进行输出,但运行结果不正确。
main()
{ int n, k; float score, ave;
ave=0.0;
for( n=1; n<=10; n++)
{ for(k=1; k<=4; k++)
{ scanf “%f”,&score);
ave+=score/4 ; }
printf( "NO%d: %f\n”,n, ave); }
}造成程序计算结果错误的语句行是
A)ave=0.0; B)for( 15、n=1;n<=10;n++)
C) ave+=score/4 ; D)printf( "NO%d: %f\n”,n, ave);
31. 若有以下定义:char s[10] = {'a','b','c','0','\0','2','\x32','\0'};
执行语句printf “%d”,strlen(s));的结果是
A)3 B)4 C)8 D)10
32. 设有数组定义:char array[ ]= "abcdef”;则数组array所占的空间为
A)4个字节B)5个字节C)6个字节D)7个字节
33. 有以下程序:
main ()
{ char str[ ][10]={ 16、 "China”, “Beijing” }, *p=str; printf ( "%s\n”,p+10); } 该程序运行后的输出结果是
A) China B) Beijing C) ng D) ing
34. 阅读下面程序,该程序段的功能是
#include 17、 }
for ( i=0; i<7; i++) printf ( "%d ”,c[i]); putchar ('\n');
}
A)对数组元素的升序排列B)对数组元素的降序排列 C)对数组元素的倒序排列D)对数组元素的随机排列
35. 下列程序的输出结果是
main()
( int n[3][3],
i,j;
i++)
for
(i=0;
i<3;
for
(j=0;
j<3;
j++)
n[i][j]=i+j;
for
(i=0;
i<2;
i++)
for
(j=0;
j<2;
j++)
n[i+1][j+1]+= n[i][j];
18、
printf ( "%d \n”,n[i][j]);
}
A) 14 B) 0 C) 6 D)值不确定
36. 下列函数调用语句中含有个参数。
func ((f1, f2), (f2, f3, f4 ), f5)
A)3 B)4 C)5 D)6
37. 下列程序的运行结果是
#include 19、ch); }
A) Abc4EFabcde B) Abc4EF C) AbcdEF D) Abc4
38. 下列程序的运行结果是
# include 20、
{ if( n= =1|| n= =2)return 2;
return s=n-fun( n-2); }
main ()
{printf “%d\n”,fun(7)); }
该程序运行后的输出结果是
A) 1 B)2 C)3 D)4
40. 下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序: void sort ( int a[ ], int n)
{ int i,j,t;
for ( i=0; i 21、
main ()
{ int aa[10] = {1,2,3,4,5,6,7,8,9,10 },i;
sort( &aa[3], 5);
for( i=0; i<10; i++)printf “%d,",aa[i]);
printf( "\n”);
}
该程序运行后的输出结果是
A)1, 2,3, 4, 5, 6, 7, 8,9,10,B) 10, 9, 8,7, 6, 5, 4, 3, 2, 1,
C) 1, 2,3, 8, 7, 6, 5, 4,9,10,D) 1, 2, 10,9, 8, 7, 6, 5, 4, 3,
41. 下列程序的运行结果是
main ()
22、{ int a=3, y; y=fn( a, a++); printf(圳d”,y); } int fn( x, c) { int b; if( x 23、
int f ()
{ static int i=0; int s=1; s+=i;i++; return s;} main () { int i , a=0; for( i=0; i<5; i++)a+=f(); printf("%d\n”,a); } A)20 B)24 C)25 D)15
44. 程序中对fun函数有如下说明: void *fun();
此说明的含义是
A)fun函数无返回值
B)fun函数的返回值可以是任意的数据类型
C)fun函数的返回值是无值型的指针类型
D )指针fun指向一个函数,该函数无返回值
45. 设有下列定义:static int x, 24、 *p=&x, *q; scanf ( "%d, %d”,p, q);
若输入3, 4,则x的值为
A) 3 B) 4 C) 0 D)无法确定
46. 设有以下程序: int fun ( char *s ) { int n=0;
while ( *s ) { n++; s++ ; }
return n ; }
main ()
(char y[ ]= "this_is_an_example.”;
printf ("%d\n”,fun (&y[6]));
}
该程序的输出结果是
A) 12 B) 13 C) 14 D) 16
47. 下列程序的功能是
int fun(ch 25、ar *a)
( char *b=a;
while ( *b ) b++;
(return b-a ; }
}
A)比较两个字符串的大小B)字符串的复制
C)计算字符串的长度D)字符串的连接
48. 下列程序的输出结果是
main()
(
int k=3, m=5, n=7;
int *pk=&k, *pm=&m, *p;
* ( p=&n ) =*pk* ( *pm);
printf ("%d\n”,n);
}
A)5 B)7 C)15 D)21
49. 下列程序的执行结果是
main()
( char a[10] = (9, 8, 7, 6, 5, 4, 26、 3, 2, 1, 0} , *p=a+5; printf ( "%d”, *p ); }
入)非法B) a[4]的地址C) 5 D) 4
50. 以下函数返回a所指的数组中最小值所在的下标值: fun ( int *a, int n)
{ int i , j=0 , p ;
P=j ;
for( i=j; i 27、k;
k=a; a=b; b=k; }
main ()
{ int a=3, b=6, *x=&a, *y=&b;
fun (x, y );
printf ( “%d %d”,a, b);
}
A) 6 3 B) 3 6 C)编译出错 D) 0 0
52. 有如下程序:
#define f(x) x*x
main ()
{ int i ;
i=f (4+4)/ ( 2+2 );
printf ( "%d\n”,i ); }
该程序执行后的输出结果是
A) 28 B) 21 C) 16 D) 4
53. 下列程序的输出结果是
struct tt;
{ int 28、 n1; char n2; float n3;
union uu(int u1[2] ; char u2[2] ; }su;
);
main()
(printf ("%d\n”,sizeof ( struct tt) ); }
A) 11 B) 12 C) 7 D) 9
54. 下列程序的输出结果是
struct LH
( int n; struct LH *m; }p[4];
main ()
{ int i;
for ( i=0; i<3; i++)
{p[i].n=i; p[i].m=&p[i+1]; } p[i].m=p;
printf ( "%d, %d\n” 29、p[1].m)->n, p[3].m->n);
} A)1,2 B)1,3 C)2,0 D)程序出错
55. 下列程序的输出结果是
struct st
{ int x; int *y; }*p;
int dt[4] = {10,20,30,40};
struct st aa[4] = {50,&dt[0], 60, &dt[1], 70, &dt[2],80, &dt[3]};
main()
{ p=aa;
printf( "%d ”,++p->x);
printf “%d ”,(++p)->x);
printf( "%d ”,++( *p->y)); }
A) 1 30、0 20 20 B)50 60 21 C)51 60 21 D)60 70 31
56. 字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序
的执行结果是
#include 31、0x;
c1=c2|c1>>2; c2=c1A0236;
printf ( "%x,%x\n”,c1, c2 );
}
A) 0x3f,0XA1 B) 3f,A1 C) ffff,61 D) 3f,a1
58. 若有运算符<<,sizeof,气&=,则它们按优先级由高至低的排列次序正确的是
A)sizeof, &= , <<, A B) sizeof, <<, A, &=
C) a, <<, sizeof, &= D) <<, a, &=,sizeof
59. 有以下程序:
#include 32、t )
{ FILE *myf; int i;
myf=fopen ( fname, “w”);
for ( i=0; i 33、main()
{ FILE *fp; int i=20, j=30, k, n;
fp=fopen ( "d1.dat”,“w”);
fprintf (fp, “%d\n”,i ); fprintf (fp, “%d\n”,j );
fclose(fp);
fp=fopen ( "d1.dat”,“r”);
fscanf (fp, “%d%d”,&k, &n); printf ( "%d %d\n”,k, n);
fclose (fp); }
该程序运行后的输出结果是
A) 20 30 B)20 50 C)30 50 D)30 20
二、多选题(共20小题,每题2分,共40 34、分)
1. 下列符号串中,不属于C语言合法标识符的有
A) _1_2_3 B) a-b-c C) int D) 9cd
2. 当把下列四个表达式用作if语句的控制表达式时,含义相同的选项有
(假设k>0)
A) k%2 B) k%2= =1 C) (k%2)! =0 D)! k%2= =0
3. 已有定义int a=-2;和输出语句printf ("%8lx”,a );下列叙述不正确的有
A) 整型变量的输出形式只有%d 一种
B) %乂是格式符的一种,它可以适用于任何一种类型的数据
C) %乂是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D) %8lx不是 35、错误的格式符,其中数字81规定了输出字段的宽度
4. 下列选项中,没有构成死循环的程序段有
A)int i=1; B)for(;;)
while( 1)
{ i=i%1+1;
if(i>=1)break; }
C)int k=0; D)int s=36;
do { ++k; } while( k>=0); while( s);s;
5. t为int类型,进入下面的循环之前,t的值为0:
while( t=1)
{ 。}
则下列叙述不正确的有
A)循环控制表达式的值为0 B)循环控制表达式的值为1
C)循环控制表达式不合法D)循环有可能是个无限循环
6. 下列判断正确 36、的是
A) char *a= "china”;等价于 char *a; *a= "china”;
B) char str[6] = { "china” };等价于 char str[ ]= { "china” };
C) char *s= "china”;等价于 char *s; s= "china”;
D) char c[4]= "abc”,d[4]= "abc”;等价于 char c[4]=d[4]= "abc”;
7. 若变量已正确定义,以下能正确计算1+2+3+4+5的程序段有
A)i=1;s=1; B)i=0;s=0; do do
{ s=s+i;i++;{ i++; 37、s=s+i;
while ( i<5 ); while ( i<5 );
C) i=1; s=0; D) i=0; s=0; do do
{ s=s+i;i++;{ s=s+i; i++;
while(i<6); while(i<=5);
8. 下面程序把数组元素中的最小值放入a[0]中,则在if语句中条件表达式可以是
main ()
{ int a[10] = {5,2,9,6,7,1,12,8,23,0},*p=a,i;
for ( i=0; i<10; i++, p++)
if () *a=*p ;
printf ( "%d”, *a );
}
A ) p>a B
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818