2013最新c语言复习试题(附答案)

更新时间:2023-11-01 04:01:01 阅读量: 综合文库 文档下载

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

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

1. 以下不合法的程序结构是__( )_ 。

A)只有一个主函数 B) 只有一个普通函数

C)一个主函数和一个普通函数 D)一个主函数和多个普通函数 2.以下选项中,均符合C常量形式的是__( )_ 。

A) e5, 0123 B) 0xffce, ?\\n? C) 02468, 0.1e-5 D) 0xfhc, 123 3.假定 int a=0, b=1; 表达式: !(a=?0?) && b--, a+b 的值是 ( ) 。

A) 0 B) 1 C) 48 D) 49

4.假定 int a=2, b=3, c=0; 表达式: (a==b>1)+(a&&!c)+b/a*2.0 的值是 ( ) 。 A) 2.0 B) 3.0 C) 4.0 D) 5.0

5.设有定义:float a=2,b=4,h=3;以下C语言表达式与代数式计算结果不相符的是 ( ) 。 A)(a+b)*h/2 B)(1/2)*(a+b)*h C)(a+b)*h*1/2 D)h/2*(a+b) 6.字符串“ab\\\\0\\128”的长度是 ( ) 。

A) 4 B) 5 C) 6 D) 7 7.以下不能正确表达三个非零变量a,b,c的和为零的表达式是__( )_ 。 A)!(a+b+c)&&a&&b&&c B)(a+b+c==0)&&a&&b

C)!(a+b+c)*a*b*c D)(a+b+c==0)&&!(a||b||c) 8. 以下各循环语句中,不是无限循环的是__( )_ 。

A) for(k=-1; -10

{ int i,s=0;

for(i=1;i<10;i+=2) s+=i+1; printf(\ }

A)求自然数1~9的累加和 B)求自然数1~10的累加和

C)求自然数1~9中的奇数之和 D)求自然数1~10中的偶数之和 10. 对于函数f的功能,以下各项描述中,正确的是__( )_ 。 int f ( int n ) { int s=0;

while(n) {s+=n; n/=10;} return (s==10); }

A) 求整数n的各位数字之和

B) 判断n的各位数字之和是否等于10,等于10时返回1,否则返回0 C) 判断n的各位数字之和是否等于10,等于10时返回0,否则返回1 D) 无论n是多少,函数的返回值都是10

11. 有关for语句中的第二个表达式,以下各项描述中正确的是 __( )_ 。 A) 只能用逻辑表达式 B) 只能用关系表达式 C) 只能用逻辑表达式或关系表达式 D) 可用任意表达式 12. 以下选项中正确的语句组是 ( ) 。

第 1 页 共 1 页

A) char s[ ]; s=\ \ B) char *s; s={\ \C) char s[10]; s=\ \ D) char *s; s=\ \

13. 设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其他三个不同的是__( )_ 。 A) if(a>b) c=a,a=b,b=c; B) if(a>b){c=a,a=b,b=c;} C) if(a>b) c=a;a=b;b=c; D) if(a>b){c=a;a=b;b=c;}

14.以下程序的功能是__( )_ 。 main()

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

for( i=2; i<5; i++) { t= -t/i; s+=t; } printf (\}

A) 求 1/1-1/2+1/3-1/4 的值 B) 求 1/1!-1/2!+1/3!-1/4! 的值 C) 求 -1/1+1/2-1/3+1/4 的值 D) 求 -1/1!+1/2!-1/3!+1/4! 的值 15.以下程序的功能是__( )_ 。

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]>p) p=a[i]; if(a[i]

printf(\}

A) 求最大值和最小值 B) 求最大值的位置和最小值的位置 C) 求最大值的位置和最小值 D) 求最大值和最小值的位置

二、程序阅读题 (每题4分,共40分)

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

{ int i,n=0;

for( i=1; i<=10; i++) if(!(i%2)&&i%3) n++; printf (\}

A) 2 B)4 C)6 D)8 17. 以下程序的运行结果是__( )_ 。 main()

{ int a=-1, b=0, c = 1, m=0, n=0, k; k=(n=ab>a); printf (\}

A) 0, 0 B) 0, 1 C) 1, 0 D) 1, 1 18. 以下程序的运行结果是__( )_ 。

int a=3, b=5;

第 2 页 共 2 页

f ( int a ) { a++; b+=a;} main()

{ int a=6; f (a-1); printf(\

A) 3,8 B) 3,11 C) 6,8 D) 6,11 19. 以下程序的运行结果是__( )_ 。

main() f ( int b[], int x) { int a[2]={2,4}, x=5; { x++;

f (a,x); b[0]+=2; printf (“\\n %d,%d,%d”,x,a[0],a[1]); b[1]+=3; } }

A) 5,2,4 B) 6,4,7 C) 6,2,4 D) 5,4,7 20. 以下程序的运行结果是 ( ) 。 main() {

int i, j, s1=0, s2=0, a[3][3]={1,2,3,4,5,6,7,8,9}; for ( i=0; i<3; i++ )

for ( j=i+1; j<3; j++ ) { s1 += a[i][j]; s2 += a[j][i]; } printf ( \}

A) 26,34 B) 34,26 C) 11,19 D) 19,11 21. 下面程序的输出结果是__( )_ 。

struct st

{ int num,score;} main() { int i;

struct st a[3]={11,78,12,80},*p=a+1; (*p).score=90;

for(i=0;i<2;i++) printf(\}

A) 11,78 12, 80 B) 11, 90 12, 80 C) 11,78 12, 90 D) 11,78 90, 80 22.假定运行以下程序时输入数据是1 2 3 4 5 6 7 8 9, 则运行结果是__( )_ 。

main()

{ int a[3][3],i,j,s=0; for(j=0;j<3;j++)

for(i=0;i<3;i++) scanf(\ for(i=0;i<3;i++)

for(j=i;j<3;j++) s+=a[i][j]; printf(\ }

A) 45 B) 34 C) 26 D) 19 23.以下程序的运行结果是__( )_ 。 int fun ( char *x, char *y) { int n=0;

while ((*x==*y) && *x!=?\\0?) {x++; y++; n++; } return n;

第 3 页 共 3 页

} main()

{ char a[]=\ printf(\}

A) 2 B) 4 C) 5 D) 6

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

main()

{ char a[20]=\b[]=”XYZpq12”,*p=a,*p1=b; for( ; *p; p++);

for(; *p1; p1++) if(*p1

printf(\}

A) 12 B) pq12 C) abc12 D) abcpq12

25.假定二进制文件f1.dat中存放2,3,4,5,6五个整数,则以下程序的运行结果是__( )_ 。

#include “stdio.h” main() { int a,b;

FILE *fp;

fp=fopen(“f1.dat”, “rb”);

fseek ( fp, sizeof(int), SEEK_SET) ; fread ( &a, sizeof(int), 1, fp );

fseek ( fp, sizeof(int), SEEK_CUR) ; fread ( &b, sizeof(int), 1, fp ); fclose(fp);

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

A) 2,3 B) 2,4 C) 3,4 D) 3,5

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

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

●将一整数序列按奇数在前,偶数在后的顺序重新排放,并要求奇偶两部分分别有序。

void sort( int *a, int n) { int *i, *j, t;

for(i=a; i*j) { (26) } }

main()

{ int i,t,n1=0,a[10];

/* n1 是记录奇数个数的变量 */ for( i=0;i<10;i++) scanf (“%d”,a+i);

第 4 页 共 4 页

for(i=0;i<10;i++) if (a[i]%2) { (27) } sort( (28) ); /*对奇数排序*/ sort( (29) ); /*对偶数排序*/ for( i=0;i<10;i++) printf(“ M”,a[i]); }

(26) A)t=a[i]; a[i]=a[j]; a[j]=t; B) t=*i; *i =*j; *j=t;

C) a[i]=a[j]; a[j]= a[i]; D) t=i; i =j; j=i;

(27) A) t=a[i]; a[i]=a[0]; a[0]=t; B) t=a[i]; a[i]=a[n1]; a[n1]=t; C) t=a[i]; a[i]=a[n1]; a[n1++]=t; D) a[n1++]= a[i];

(28) A) a,10 B) a,10-n1 C) a,n1 D) a,5

(29) A) a,10-n1 B) a+n1,10 C) a+n1,n1 D) a+n1,10-n1

●找出整数m的所有因子,并依次存入以a为开始地址的内存单元中,函数返回因子的个数。

int factor ( int m, int *a) { int i,n;

(30) ; for ( i=2; i

if ( m%i==0 ) (31) ; (32) ; }

(30) A) n=0 B) n=0; a[n]=1 C) n=1; a[n]=1 D) n=1; *a=1 (31) A) *a++=i B) a[n++]=i C) a[n]=i D) a[++n]=i (32) A) return n B) else return n C) else continue D) else break ●从字符串a中删去在字符串b中出现的那些字符。 main()

{ char a[20]=\ while ( *s ) {

for ( j=b; (33) ; j++ ) if ( *s= =*j ) break; if (*j==0 ) (34) ; s++; }

(35) ;

printf ( \}

(33) A) a[j]!=?\\0? B) b[j]!=?\\0? C) *j D) *s

(34) A) *p=*s B) *p++=*s++ C) *p=*s++ D) *p++=*s (35) A) *p=0 B) *s=0 C) *(++p)=0 D) *(++s)=0

2012年春C考试A卷答案

1-5BBDBB 6-10 CDADB 11-15DDCBD 16-20 BADDC 21-25 CBACD 26-30 BCCDD 31-35 BACDA

第 5 页 共 5 页

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

Top