搜档网
当前位置:搜档网 › C语言程序设计试卷(含答案)

C语言程序设计试卷(含答案)

C语言程序设计试卷(含答案)
C语言程序设计试卷(含答案)

说明:请将单项选择题(1~50 空)的正确答案涂写考试答题卡,将填空(51~

75 空)等文字题按【】中的序号写入下面文字答题卡,否则不得分。

、阅读程序题文字答题卡:(每空2 分,共24 分)

三、完善程序填空题文字答题卡:(每空2分,共26 分)

1题【63】

2题

【64】

【65】

【66】3题

【67】

【68】

【69】

4题

【70】

【71】

【72】

5题

【73】

【74】

【75】

、单项选择题(每空1 分,共50分)

请将正确答案按【】中的序号写入答题卡,否则不得分

1.在 C 语言中,一条语句以】字符作为结束符。

A) , B ) ; C) . 2.以 4 组标识符中,能作为变量名使用【】 。 A) age , struct , s1 B) 2A , b_3, main C) ELSE ,a[2],m123 D) _abc , INT ,abcd 3.判char 型变量 ch 是否为数字字符的正确表达式为 【】 。 A) 0<=ch<=9 B) '0'<=ch<='9' C) ( 0<=ch )&& D) ('0'<=ch )&& 大写字母 A 的 ASCII 码值是 65, 97, D) 无符号 4.已知小写字母 a 的 ASCII 码值是 输出大写字母 B 的是 【】 。 A ) putchar( 'A'+1 ); C) putchar( 98-32); 5.空字符串的长度是 【】 A ) 0 B) 1 6.整型变量 a 定义后赋初值的结果是 int a=2.8*6 ; A ) 12 B ) 若有以下说明语句,则该语句 char a='\077' ; A) 使 a 的值包含 C) 使 a 的值包含 下面的程序结果为: main() {

int x=023 ; printf ( "%d\n" , --x); }

A ) 17

B ) 18 源程序执行后,屏幕上显示 【】 。 main () { int a ; float b ; a=4; b=9.5; printf ( "a=%d , b=%4.2f\n" , a , } A) a=%d , b=%f\n C)a=4,b=9.50 10.设 int x=10 ; x+=x%= (-6) +4; A) 0 B) 16

16 7. 8. 9. 列语句中不能 B ) putchar D ) putchar C)2 】。 】。 C) 'b'-32); B);

D) 17 D ) 18 1 个字符 3 个字符 【】 。 B) D) 使a 的值包含 4个字符 说明不合法 C )23 D )24

b)

B) D) 则 x=

a=%d ,b=%f a=4,b=9.5

【】 。 C ) 18

D ) 10

11.C 语言的下列运算符中,运算对象必须是整型数据

A ) %

B ) /

C) && D ) *

12..若有代数式

bc),则下面不正确C 语 言表达式是 【】 。

A ) a/b/c*e*3

B ) 3*a*e/b/c C) 3*a*e/b*c

D ) a*e/c/b*3 13.下面程序的输出结【】 。

main ()

{

int x=0 , y=1 , z=0; if ( x=z=y ) x=3; printf

n ”,x ,z);

}

A ) 3,0 B) 0,0 C ) 0, 1 D) 3,1

17.下面的程序 main() {

int x=100 ,a=10,b=20, ok1=5 ,

ok2=0 ; if ( a

if (b!=15 )

if ( !ok1 ) x=1;

int a=-1, b=4, k ;

k= ( a++<=0 )&& (!(b--<=0 ));

}

printf ( "%d , %d , %d\n" , k , a ,b);

}

A)1,1,2 B) 1,0,3 C) 0,1,2 D)

0,0,

3

14 .下面哪个表达式的值为 4 【】 。

A ) 11/3 B) 11.0/3

C )(float )11/3

D )( int )(11.0/3+0.5)

1.下面程序的输出结果是 【】 。

main ()

int x=2 ,

y=-1 ,

z=2;

if (x

if (y<0) z=0;

else z+=1 ;

printf ( “ %dn ”, z);}

A ) 3 B) 1

C) 2

D) 0

1.下列程序的运行结果是 【】 。

main ()

if (ok2) x=10;

int k=0 ;

while ( k=0) k=k-1 ;

else

x=-1;

printf ( "%d\n" ,x );

}

的输出是 【】 。 A ) -1 B ) 0 18.执行下面程序后的输出结果是 【】 int x=1 , y=1, z=1; x+=y+=z ; printf ( “ %dn ”,x

A ) 3

B ) 2 19.有如下程序段,则输出结果是 【】 int a=10 ; switch (a )

{ case 9: a+=1 ; case 10: a+=1; case 11: a+=1; case 12: a+=1;

}

printf (“ a=%dn ”, a );

A ) 11

B ) 12 20.下面的程序

main ()

{

int i ;

for ( i=0 ; i<10 ;i++); printf ( "%d\n" ,i );

}

的输出结果是 【】 。 A ) 0 B ) 123456789 21.do 语句的循环次数为 【】 。

int a=10 ;

do { a-- ;} while ( a!=0)

C ) 1

D ) 不确定的值

A ) 10

B ) 9 22.设有类型说明为: int i=1 ; 则执行语句: A ) 7 B ) 6 23.对以下程序段的叙述正【】

C) 1 D) 4

C ) 13

D ) 10

C ) 0123456789

D ) 10

C ) 11

D ) 12 while( i++<5 );”后,变量 i 的值是 【】

A ) while 循环之行 10 次

B ) 无限循环

C) 循环体一次也不执行 D ) 循环体被执行一次

24.以下语句段中,【】不是死循环。

A ) int i=100 ; while ( 1)

{i=i%100 ;

i++; if ( i>100 ) break; }

B )for (;;);

C )int k=32764 ;

do

{k++ ;

k++ ; }while (k>0 )

D)int s=32764 ; while (( s++%2 ) ||( s%2))

s++;

25.使用如下语句定义一个 char 型二维数组 str,用来存放字符串 "Pascal" 、"Basic" 、"C++" , char str[M][N];

则M 和N最合理取值应该是【】。

A)3 和 7 B) 2 和 7 C) 2 和 6 D) 3 和 6 26.设己定义 int

a[5 ]={0,1,2} ;

则 a[4] 数组元素的值为【】。

A)不确定值 B) 定义错误 C) 4 D) 0 27.运行下面程序段的输出结果是【】。

static int a[7]={1,3,5} ; printf("%d\n",a[3] );

A) 0 B) 5 C) 3 D) 不确定数

28.设有说明 char a[ ]= "No smoking!"; 则以下不能正确输出的语句是【】。

A) printf("%c", &a ); B) printf("%s", a );

C) puts( a ); D) puts ("No smoking!");

29.当执行下面的程序时,如果输入ABC ,则输出结果是【】。

#include "stdio.h" #include "string.h" main()

{ char ss[10]="1,2,3,4,5"; gets(ss); strcat(ss, "6789"); printf("%s\n",ss); }

A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789

30.以下程序的输出结果是【】。

main()

{ int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]);

}

A) 1,5,9, B) 1,4,7, C) 3,5,7, D) 3,6,9,

31.若定义 int i,*p;

使 p 指向 i 的赋值语句是

【】

A) p=&i; B) *p=&i; C) *p=i; D) p=*&i; 32.变量的指针,其含义是指该变量【】。

A) 值B) 地址C) 名D) 一个标

33.下列程序的运行结果是

main()

{ int a=3, b=6, *y=&b, *k;

k=x; x=y; y=k;

printf("%d %d\n", *x, *y);

}

A) 6 3 B) 3 6 C) 编译出错 D) 0 0

34.若有以下定义 :

char a[2][5]={9,8,7,6,5,4,3,2,1,0},*p=a[0],**q=&p;

则对 a 数组元素的正确引用形式【】。

A) *(q+1) B) q[1][1] C) *(* q+1) D) *q[1] 35.以下叙述中不正确的是

【】。

A) 在不同的函数中可以使用相同名字的变量

B)函数中的形式参数是局部变量

C)在一个函数内定义的变量只在本函数范围内有效

D)在一个函数内的复合语句中定义的变量在本函数范围内有效 36.在调用函数时,如果实参是数组名,它传递给形参的是【】。

A) 数组的首地址B) 数组第一个元素的值

C) 数组中全部元素的值D) 数组元素的个数

37.下面程序的输出是【】。

int m=13 ;

int fun2(int x , int y)

{int m=3 ;

return(x*y-m) ;

}

main()

{int a=7 , b=5;

printf( “n%”,d fun2(a, b)/m) ;

}

A)1 B)2 C)7 D)10 38.在一个 C 源程序文件中,若要定义一个只允许在该源程序文件中所有函数使用的变量,则该变量需要的存储类别是【】。

A) static B) extern C) register D) auto

39.不合法的 main 函数命令行参数表示形式是 【】 。

A) main(int a , char *c[]) B) main(int arc , char **arv) C) main(int argv , char *argc[]) D) main(int argv , char *argc) 40.

若定义 enum color {red , green , blue , purple , yellow , black , orange} cl ;, c1=green+blue ;后,以下选项中 cl 的结果正

确的是 【】 。

A) greenblue B) purple C)yellow D)编译出错 41.设有以下说明和定义:

typedef union{long i ; int k[5] ; char c ; }DATE ; struct date

{int cat ;DATE cow ; double dog ; }too ; DATE max ;

则执行语句 printf ( “,%sd ”izeof (struct

date )+sizeof(max)) ;后的结果是 【 A) 26 B)30 C)18 D)8 42.C 语言可以处理的文件类型是 【】 。

A )文本文件和数据文件 B)文本文件和二进制文件

C)数据文件和二进制文件 D)以上答案都是错误的

43.若 fp 是指向某文件的指针, 文件操作结束之后, 关闭文件指针应使用下列 句

A ) fp=fclose() ; B) fp=fclose ; C) fclose ; D) fclose(fp) ; 44.若调用 fputc 函数输出字符成功,则其返回值是 【】 。

A)输出的字符 B)0 C) 1 D )EOF

45.已知函数的调用形式: fread(buffer ,size ,count ,fp) ; 其中 buffer 代表的是

A)一个整型变量,代表要读入的数据项总数 B) 一个文件指针,指向要读入的文件 C) 一个指针,指向要存放读入数据的地址

D)一个存储区,存放要读入的数据项 46.函数 rewind 的作用是 【】 。 A) 使位置指针重新返回文件的开头

B) 将位置指针指向文件中所要求的特定位置 C) 使位置指针指向文件的末尾 D) 使位置指针自动移至下一个字符的位置 47.编译预处理命令以 【】 结尾。 A) ; B) . C) \ D) 回车键 48.下列程序的运行结果是 【】 。

#define N 2 #define M N+1

执行语句 】语

#define NUM (M+1)*M/2

main()

{ int i, n=0 ;

for (i=0; i

printf( “%d\n ”,n); }

A) 5 B) 6 C) 8 D) 9 49.下列程序的运行结果是【】。

#define M 3

#define N M+1

#define NN N*N/2

main()

{ printf("%d\n",5*NN); }

A) 17 B) 18 C) 30 D) 40

50.以下程序段的输出结果是【】。

main()

{ char s[]="\\141\141abc\t";

printf ("%d\n",strlen(s));

}

A) 9 B) 12 C) 13 D) 14

二、阅读程序题(每空2 分,共24 分) 请将正确答案按【】中的序号写入文字答题卡,否则不得分。1.执行下面程序段后, x 的值是【51】;i 的值是【52】

int i , x;

for (i=1 ,x=1 ; i<=50 ; i++)

{ if ( x>=10 ) break ;

if ( x%2==1 )

{ x+=5 ;

continue ;}

x-=3;

}

2.以下程序的输出结果是【 53】。

main( )

{ int arr[10], i, k=0;

for( i=0; i<10; i++) arr[i]=i ;

for( i=0; i< 4; i++) k+=arr[i]+i;

printf("%d\n", k);

}

3.下列程序的输出结果是【 54】。

#include

main()

{ int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

printf("%d,%d\n",*(*a+8),*a[2]);

} 4.下列程序的输出结果是【 55】。

#include main()

{ char *p1,*p2,str[20]= ” xyz ”; p1=” abc”; p2=” ABC”;

strcpy(str,strcat(p1,p2)); printf( “ %s” ,str);

} 5.下列程序的输出结果是【 56】。

main()

{ int a[5]={12,21,13,6,18};

int *p,*s; for(p=a,s=a; p-a<5; p++) if (*p>*s ) s=p; printf("%d\n",*s);

}

6.下列程序的输出结果是【 57】。

#include

#include

int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; main()

{ int i,(*b)[4];

for (i=0; i<2; i++)

{ b=a+i; printf("%d ",*(b[i]+1));

} printf ("\n");

} 7.以下程序的输出结果是【 58】。

void fun2(int *a , int b)

{ *a=*a+10 ;b=b+100 ;

return;

}

main()

{ int x=5 , y=8 ;

fun2(&x , y) ;

printf("x=%d y=%d\n" , x,y);

}

8.下列程序的输出结果是【 59】。

int b=2 ;

int func(int *a)

{ b += *a ; return(b) ; }

main()

{ int a=2 , res=2;

res += func(&a) ;

printf("%d \n" , res);

}

9.以下程序的输出结果是

int a=0 ;

fun3(int x)

{ static int a=3 ;

a=a+x;

return a;

}

main()

{ int k=2 , m=1 ;

a+=fun3(k) ; printf("%d\n " ,a);【 60】 a+=fun3(m) ;

printf("%d\n" , a);【61】

}

10.以下程序的运行结果是【 62】。

struct s

{int a ;

float b ;

char *c ;

}

main()

{ static struct s x={19 ,83.5,”zhang”} ;

struct s *px=&x ;

printf( “%d ,%.1f , %s\n”, x .a, (*px).b , &px->c[1]) ;

}

三、完善程序填空题(每空2 分,共26分) 请将正确答案按【】中的序

号写入答题卡,否则不得分。

1.输入一个百分制成绩,要求输出成绩等级‘ A'、‘B'、‘C'、‘D'、‘E'。90至100分为

‘A ',80至 89分为‘B',70至 79分为‘ C',60至 69分为‘D',60分以下至 0分为‘E'。 #include main() {

int x;

scanf("%d",&x);

switch ( 【 63】 )

{ case 10:

case 9:

printf("A\n");

break;

case 8: printf("B\n"); break;

case 7: printf("C\n"); break;

case 6: printf("D\n"); break;

case 5: case 4: case 3: case 2: case 1: case 0: printf("E\n");

break;

} }

2.用秦九绍算法求多项式的值,公式如下 a n x n+a n-1x n-1+? +a1x+a0=(((a n x+a n-1)x+a n-

2)x+ ? +a1)x+a0 请完善如下程序。

#define N 20

main()

{ float a[N+1];

int n,i; float x,sum;

printf("\n Input N and x:"); scanf("%d%f",&n,&x); for(i=n;i>=0;i--)

{ printf("Please input number %d:",i); scanf("%f",&a[i]);

} sum= 【 64】 ;

for(i=n-1;i>=0;i--)

sum= 【 65】 ;

printf("\n%.2f", 【 66】 );

}

3.下面函数的功能为:使用二分法查找key 的值。数组中元素已递增排序,若找到key 则

返回对应的下标,否则返回 -1。

int binary (int a[],int n,int key)

{ int low,high,mid;

low=0; high=n-1;

while ( 【 67】 )

{ mid=(low+high)/2;

if (key

else if (key>a[mid]) 【 69】;

else return (mid) ;

}

return (-1);

}

4.已知级数 12+2 2+3 2+??,试求前若干项之和刚好大于 5000 时的项数 n及级数和。 main()

{

int n= 【 70】 , sum=0;

do

{ n++;

sum+= 【 71】 ;

}while( 【72】 );

printf("n=%d sum=%d\n",n,sum);

5.下面程序的功能是:主函数通过调用average 函数计算数组中各元素的平均值。请填空。

float average (int *pa, int n)

{ int i;

float avg=0.0;

for (i=0;i

avg=avg+ 【 73】 ;

return ( 【 74】 /n);

}

main()

{ int i,a[5]={2,4,6,8,10};

float mean;

mean=average ( 【 75】 ,5);

printf (" 平均值 =%f\n", mean);

相关主题