当前位置:首页 > 2013最新c语言复习试题(附答案)
} }
A) 3,5 B) 5,6 C) 3,6 D) 5,5
25.假定运行以下程序时输入数据是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
三、程序填充题 (每空3分,共30分)
选择适当的内容填在以下各程序的下划线处,以使程序完整。
●以下fun函数的功能是在N行M列的基本整型二维数组中,选出一个最大值作为函数的返回值。(设M、N已定义) int fun ( int a[N][M] ) { int i, j, row=0,col=0; for (i=0; i if (a[i][j] > a[row][col]) { (26) } return ( (27) ); } (26) A) a[i][j]=a[row][col]; B) i=row; j=col; C) row=j;col=i; D) row=i; col=j; (27) A) a[i][j] B) row, col C) a[row][col] D) a ●将给定的数k插入到数列a中,要求插入后仍有序。 void insert(int k ) { int a[11]={1,3,5,7,9,11,13,15,17,19} , sum=0, i, j ; for (i=0 ; i<10 ; i++) if(a[i]>k) break; for ( (28) ) a[j]=a[j-1]; (29) ; } (28) A) j=9; j>i;j-- B) j=10;j>i;j-- C) j=i+1;j<10;j++ D) j=i+1;j<=10;j++ (29) A) a[i]=k B) a[0]=k C) a[j]=k D) return k ●用折半查找法查找整数k在数列a中的位置(数列a中的数按从小到大有序),若a中有与k相同的数则返回其位置(下标),否则返回-1。 int search (int a[], int n , int k) { int i=0, j=n–1, m; while (i<=j) { m= (i+j)/2; if (a[m] else if ( a[m]>k) (31) ; 第 9 页 共 9 页 else (32) ; } return (–1); } (30) A) i=m-1 B) i=m+1 C) j=m-1 D)j= m+1 (31) A) i=m-1 B) i=m+1 C) j=m-1 D)j=m+1 (32) A) return –1 B) return m C) return i D) return j ●求100至1000之间有多少个数其各位数字之和是5。 main() { int i,s,k,count=0; for(i=100; i <=1000; i++) { s=0; k= i; while ( (33) ) { s=s+k; k= (34) ; } if(s==5) (35) ; } printf(“\\n %d”,count); } (33) A)1 B)k C)k>1 D)k>10 (34) A)k/10 B)k C)k–k D)k–k/10 (35) A)continue B)break C)count++ D)printf (“%d”,count) 2012年春C考试B卷答案 1-5BDCBD 6-10 CDABC 11-15ABCCB 16-20 DAABB 21-25 BDDDB 26-30 DCBAB 31-35 CBBAC 第 10 页 共 10 页 一、单项选择 (每题2分,共30分) 1. 以下C语言标识符中,不合法的是 。 A) _1 B) AaBc C) a_b D) --a 2. 以下选项中可以用作C程序合法浮点型常量的是 。 A) 1.1e0 B) 3.0e0.2 C) e9 D) 9.12e 3. 若有定义语句:int x=12, y=8, z;,在其后执行语句z=0.9+x/y;,则z的值为 。 A) 1.9 B) 1 C) 2 D) 2.4 4. 若有定义语句:int k1=10,k2=20;,执行表达式 (k1=k1>k2) && (k2=k2>k1)后,k1和k2的值分别为 。 A) 0和1 B) 0和20 C) 10和1 D) 10和20 5. 若有定义语句int s,i,j,n;,在以下循环语句中,不能正确计算自然数1-100中所有数之和的是 。 A) for(s=0,i=1;i<=100;) s+=++i; 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=0;i<=100;) s+=i++; 6. 以下定义数组的语句中错误的是 。 A) int num[ ]={1,2,3,4,5,6}; B) int num[ ][3]={{1,2},3,4,5,6}; C) int num[2][4]={{1,2},{3,4},{5,6}}; D) int num[ ][4]={1,2,3,4,5,6}; 7. 若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf(“*****\\n”); 下面关于语句执行情况的叙述中正确的是 。 A) 循环体执行两次 B) 循环体执行一次 C) 循环体一次也不执行 D) 构成无限循环 8. 设有定义: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;} 9. 有以下函数(x和y均为指向字符串的指针) int fun(char *x, char *y) { int n=0; while ((*x==*y) && *x!=?\\0?) {x++; y++; n++; } return n; } 函数的功能是 。 第 11 页 共 11 页 A) 查找x和y所指字符串中是否有?\\0? B) 统计x和y所指字符串中最前面连续相同的有效字符的个数 C) 将y所指字符串赋给x所指存储空间 D) 统计x和y所指字符串中相同的字符个数 10. 若有定义语句:char *s1=”OK”, *s2=”ok”;,以下选项中,能够输出”OK”的语句 是 。 A) if (strcmp(s1,s2)==0) puts(s1); B) if (strcmp(s1,s2)!=0) puts(s2); C) if (strcmp(s1,s2)==1) puts(s1); D) if (strcmp(s1,s2)!=0) puts(s1); 11. 设有定义:double x[10], *p=x;,以下能给数组x下标为6 的元素从键盘读入数据的正确语句是 。 A) scanf(“%f”, &x[6]); B) scanf(“%lf”, *(x+6)); C) scanf(“%lf”,p+6); D) scanf(“%lf”,p[6]); 12. 下列定义数组的语句中,正确的是 。 A) int N=0;int x[N]; B) int x[0…10]; C) #define N 10 D) int x[]; int x[N]; 13. 以下选项中正确的语句组是 。 A) char s[ ]; s=\ \ B) char *s; s={\ \C) char s[10]; s=\ \ D) char *s; s=\ \ 14. 有定义语句:double a[10], *s=a;,以下能够代表数组元素a[3]的是 。 A) (*s)[3] B) *s+3 C) *s[3] D) *(s+3) 15. 有以下定义和语句 struct workers { int num; char name[20]; char c; struct { int day; int month; int year;}s; }; struct workers w, *pw; pw=&w; 下面的语句正确的是 。 A) *pw.year=1980; B) w.year=1980; C) pw->year=1980; D) w.s.year=1980; 二、程序阅读题 (每题3分,共30分) 16. 有以下程序 第 12 页 共 12 页
共分享92篇相关文档