C语言考试题2003A

更新时间:2023-08-27 07:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言考试题

课程: C语言程序设计

班号:学号: 姓名:

注:①考试时间为120分钟,必须在30分钟后方可交卷。

②答题开始前,班长需向监考人员报告应到人数、是否有缺考、缺考人姓名、缺考原因等。

③答题完毕后,将答题纸(第8页)裁下交卷,试卷可自行带走。

一、单项选择题 (每题2分,共30分)

1.假定 int a=3, b=2, c=1, 表达式: (c==a>c)+(a/b/2.0) 的值是 (1) 。

A) 1.75 B) 0.75 C) 1.5 D) 0.5

2.假定 int a=2, b=5, 表达式: a+’1’+(float)(b/a) 的值是 (2) 。

A) 5.0 B) 5.5 C) 53.0 D) 53.5

3.设有int a=1,b=2,c=3,d=4,m=2,n=2;

执行 (m=a>b) && (n=c>d) 后n 的值是 (3) 。

A) 1 B) 2 C) 3 D) 4

4. 在以下表达式中,与 a==0 && b!=0不等价的是 (4) 。

A)!a && b B)!(a!=0 || b==0)

C)!(a==0 || b!=0) D)!(a*b) && b

5.在以下表达式中,能正确表达算式0.5sin(x+y)2的是 (5) 。

A) 0.5*sin(x+y)*(x+y) B) 1/2*sin((x+y)*(x+y))

C) sin((x+y)*(x+y))/2 D) (float)(1/2)*sin((x+y)*(x+y))

6.表达三个非零变量a、b、c之和为0的正确表达式是 (6) 。

A) a+b+c= =0 B) !(a+b+c) || (a*b*c)

C) !(a+b+c)&&(a*b*c) D) !(a*b*c)&&(a+b+c)

7.在以下各循环语句中,不能正确计算自然数1-100中所有数之和的是 (7) 。

A) for(s=0, i=0; ; ) { s+=++i; if (i>100) break; }

B) for(s=100, n=100; --n; ) s+=n;

C) for(s=0,i=1, j=100; i<=j; i++, j-- ) s+=i+j;

D) for(s=0, i=1; ; ) { s+=i++; if (i>100) break; }

8.以下各循环语句中,不是无限循环的是 (8) 。

A)for ( i=-10; i>=-10<10; i++) s+=i;

B)for( i=0; ; i++ ); if( i>10 ) break;

C)for ( i=0,j=10; i<j, i-j; i++,j--);

D)for ( i=1; i=10; i++) s+=i;

9.以下程序中有一个语法错误,这个错误的类型是 (9) 。

#define n 2

main()

{ int a[n]={2,3},b=3;

if ( a[0]+a[1]>b )

{ int b=1,x;

x=a[0]+a[1] -b;

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

} else x=0; printf("\n x= %d",x);

}

A) 数组说明错 B) if结构错 C) 变量重定义 D) 使用了未定义的变量

10.对以下求数组a中所有偶数之和的各程序段中,不正确的是 (10) 。

A) int a[5]={1,3,6,7,8}, s=0, *p=a;

for ( p=a; p<a+5; p++ ) if ( *p%2==0) s+=*p;

B) int j, a[5]={1,3,6,7,8}, s=0, *p=a;

for ( j=0; j<5; j++ ) if ( *p%2==0) s+=*p++;

C语言考试题

C) int j, a[5]={1,3,6,7,8}, s=0, *p=a;

for ( j=0; j<5; j++ ) if ( *(p+j)/2*2==*(p+j)) s+=*(p+j);

D) int j, a[5]={1,3,6,7,8}, s=0, *p=a;

for ( j=0; j<5; j++ ) if ( *p%2==0) s+=*p++;

else p++;

11.以下论述中正确的是 (11) 。

A) 用printf输出一个无符号变量的内容时,输出结果一定是正数。

B) 字符型数据与整型数据是通用的,因此,整型数据完全可以用字符型变量存放。

C) 在一般情况下,指向结构体数据类型的指针变量所占的字节数比指向其它数据类型的指针变量所占的字节数要多。

D) 在程序中,八进制、十进制和十六进制整数的表示形式各不相同,但其在内存中的表示是一致的。

12.假设a为3行4列的矩阵,则以下求矩阵边沿元素之和的各程序段中,不正确的是

(12) 。

A) for ( i=0, s=0; i<3; i++ ) s+=a[i][0]+a[i][3];

for ( j=1; j<3; j++ ) s+=a[0][j]+a[2][j];

B) for ( i=0, s=0; i<4; i++ ) s+=a[0][i]+a[2][i];

for ( j=1; j<2; j++ ) s+=a[j][0]+a[j][3];

C) for ( i=1, s=0; i<3; i++ ) s+=a[0][i]+a[2][i];

for ( j=0; j<3; j++ ) s+=a[j][0]+a[j][3];

D) for ( i=1, s=0; i<3; i++ ) s+=a[i][0]+a[i][3];

for ( j=0; j<3; j++ ) s+=a[0][j]+a[2][j];

13.假定有:int *p1,*p2,m=5,n=3; 以下均是正确赋值语句的选项是 (13) 。

A) p1=&m; p2=&p1;

B) p1=&m; p2=&n; *p1=*p2;

C) p1=&m; *p2=5;

D) p1=&m; *p2=*p1;

}

14.以下函数是计算多项式 (14) 的值。

float f (int n)

{ float i,t=1,s=t;

for ( i=2; i<=n; i++) { t=t*(2*i-2)*(2*i-1); s+=t; }

return s;

}

A) 1+3+5┈┈ B) 1!+3!+5! ┈┈ C) 2!+4!+6! ┈┈ D) 2+4+6 ┈┈

15.假定有函数关系:

y=x 当x=0

y=2x+1 当x<0

y=3x+2 当x>0

则以下各程序段中,不能正确实现以上关系的是 (15) 。

A) y=x; B) y=x;

if ( x<0) y=2*x+1; if (x<0 ) y=2*x+1;

if ( x>0) y=3*x+2; else y=3*x+2;

C) if ( x ) D) y=x;

if ( x<0) y=2*x+1; if ( x)

else y=3*x+2; if( x<0) y=2*x+1;

else y=x; else y=3*x+2;

二、程序阅读题(每题3分,最后一题4分,共40分)

16.以下程序的运行结果是 (16) 。

main( )

C语言考试题

{ int k,j,m;

for ( k=5; k >= 1; k- - )

{ m=0; for ( j=k; j<=5; j++ ) m=m+k*j; }

printf ( “%d”,m );

}

A) 123 B) 25 C) 36 D) 15

17.以下程序的运行结果是 (17) 。

main()

{ int a=2,n=5,s=a; for(; - -n; ) s=s*10+a; printf(“\n %d”,s); } A) 100 B) 82 C) 22222 D) 10

18.以下程序的运行结果是 (18) 。

main()

{ int a=10, y=0;

do { a+=2; y+=a; if(y>50) break; }while(a=14);

printf(“\n %d,%d”,a,y);

}

A) 16,60 B) 18,60 C) 死循环 D)都不是

19.以下程序的运行结果是 (19) 。

main() f (int *x, int b)

{ int a=3,b=5; {

f (&a, b); *x+=2;

printf(“\n %d,%d”,a,b); b++;

} }

A) 3,5 B) 5,6 C) 3,6 D) 5,5

20.以下程序的运行结果是 (20) 。

main()

{ int a[10]={3,2,5,4,6,7,9,12,8,10},i,p,q;

p=0; q=0;

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

{ if(a[i]>p) p=a[i];

if(a[i]<q) q=a[i];

}

printf(“\n %d,%d”,p,q);

}

A) 0,0 B) 12, 0 C) 12, 2 D) 2, 12

21.以下程序的运行结果是 (21) 。

main()

{ int n=2345;

while(n){ n/=10; printf("%d",n%10);}

}

A) 5432 B) 432 C) 4320 D) 543

22.以下程序的运行结果是 (22) 。

main() int f(int a[][3])

{ int s,a[6]={1,2,3,4,5,6}; { int i,j,k=0;

s=f(a); for(i=0;i<2;i++)

printf("\n %d",s); for(j=i;j<3;j++) k+=a[i][j];

} return k;

}

A) 7 B) 10 C) 17 D) 19

23.以下程序的运行结果是 (23) 。

main()

C语言考试题

{ int a[5]={1,2,3,4,5},i,j,t;

for(j=1;j<=2;j++)

{ t=a[4];

for(i=0;i<4;i++) a[i+1]=a[i];

a[0]=t;

}

for(i=0;i<5;i++) printf("%d",a[i]);

}

A) 45123 B) 34512 C) 51111 D) 15555

24.以下程序的运行结果是 (24) 。

main()

{ char a[20]="xyz",*p=a,*p1;

for( ; *p; p++);

for(p1=p-1; p1>=a; p++,p1--) *p=*p1;

*p=0;

printf("\n %s",a);

}

A) xyz B) zyx C) xyzxyz D) xyzzyx

25.以下程序的运行结果是 (25) 。

main()

{ int a[10]={3,5,2,9,1,8,0,2,4,6},i,p=0,q=0;

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

{ if(a[i]>a[p]) p=i;

if(a[i]<a[q]) q=i;

}

printf("\n %d,%d",p,q);

}

A) 9,0 B) 0,9 C) 3,6 D) 6,3

26.以下程序的运行结果是 (26) 。

main()

{ int a=1,b=10;

do { b-=a; a++; } while ( b--<0 ) ;

printf (“\n a=%d,b=%d”,a,b );

}

A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9 27.以下程序的运行结果是 (27) 。

void f(char *s) main()

{ char *p=s; { char *a="abCD12";

for (; *s; s++) f(a);

if (*s<'A' || *s>'Z' ) *p++=*s; printf ("\n%s",a);

*p=0; }

}

A) abCD12 B) CD C) ab12 D) CD12

28.以下程序的运行结果是 (28) 。

#include “stdio.h”

struct student { char name[10]; int sex; int score; }; main()

{ struct student st, m,w; FILE *fp;

fp=fopen( “file1.dat”,”r”);

m.score=0; w.score=100;

while( !feof ( fp ) )

C语言考试题

{ fscanf( fp,”%s%d%d”,http://www.77cn.com.cn,&st.sex,&st.score);

if( st.sex) /* file1.dat */

if( st.score<w.score) w=st; /* Qi 0 65 */

if( !st.sex) /* He 1 90 */

if( st.score>m.score) m=st; /* Wu 1 95 */

} /* Li 0 75 */

fclose( fp); /* Zu 1 80 */ printf(“\n %d , %d”, m.score, w.score);

}

A) 95 ,65 B) 65,95 C) 75,80 D) 80,75

三、程序填充题(每空3分)

选择适当的内容填在以下各程序的下划线处,以使程序完整。

●判断一个数是否为素数的函数,是素数时返回1,否则返回0。

int prime ( int m)

{ int i;

if (m<2 ) return 0;

if (m==2) return 1;

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

if (m%i==0) (29) ;

(30) ;

}

(29) A) break B) return 0 C) return 1 D) continue

(30) A) else return 1 B) return 1 C) return 0 D) else return 0

●判断一个数是否为降序数的函数,是降序数时返回1,否则返回0。

所谓降序数就是:个位≤十位≤百位┈的数,只有一位的数也属于降序数。

int f ( int n)

{ int k=0;

while ( n )

{ if ( (31) ) return 0;

(32)

}

return 1;

}

(31) A) k>=n%10 B) k<=n%10 C) k>n%10 D) k<n%10

(32) A) else return 1; B) n/=10; k=n%10; C) n/=10; D) k=n%10; n/=10;

●将两个有序的数组合并到另一个数组中,要求合并后仍有序。

main()

{ int i=0,m=5,a[5]={1,3,7,9,13};

int j=0,n=6,b[6]={2,4,8,16,20,24};

int k=0,c[11];

while( i+j<m+n )

{ if( (33) ) c[k++]=a[i++];

else if( (34) ) c[k++]=b[j++];

else if( (35) ) c[k++]=a[i++];

else c[k++]=b[j++];

}

for(i=0;i<k;i++) printf(" %d",c[i]);

}

(33) A) i>=m B) i>m C) j>=n D) j>n

(34) A) i>=m B) i>m C) j>=n D) j>n

C语言考试题

(35) A) i==m B) j==n C) a[i]<b[j] D) b[j]<a[i]

●求100至1000之间有多少个数其各位数字之和是5。

main()

{ int i,s,k,count=0;

for(i=100; i <=1000; i++)

{ s=0; k= i;

while ( (36) ) { s=s+k%10; k= (37) ;}

if(s= =5) (38) ;

}

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

}

(36) A)1 B)k C)k>1 D)k>10

(37) A)k/10 B)k%10 C)k–k%10 D)k–k/10

(38) A)continue B)break C)count++ D)printf (“%d”,count)

C程序设计试题(A卷)答案

一、单项选择题(每题2分,共30分)

CCBCC

CACDB

DDBBB

二、程序阅读题 (每题3分,最后一题4分,共40分)

DCADB

CCDDC

BCC

三、程序填充题(每空3分,共30分)

BBCDC

ACBAC

C语言考试题

本文来源:https://www.bwwdw.com/article/o8mi.html

Top