1、大学一年级C语言程序设计复习题复习题1.若有定义:int a=2,b=3; 则表达式(float)(a+b)/2+(float) (b/a)的值为_。A) 4.0 B) 3.0 C) 3.5 D) 都不是2.若希望当A的值为奇数时,表达式的值为“真”,当A的值为偶数时,表达式的值为“假”。则以下能满足要求的表达式是_。A) A/2!=1 B) !(A%2) C) A%2 D) A/2=13.以下程序在运行时,输入变量a的值为1,变量b的值为2,其结果 。main( ) int a,b,t=0; scanf(“%d%d”,&a,&b);if(a=2)t=a,a=b,b=t;printf(“%d,
2、%dn”,a,b); A)2,0 B)2,2 C)2,1 D)1,24.以下程序的运行结果是_ _。main() int a=10, y=0; do a+=2; y+=a; if(y50) break; while(a=14); printf(“n %d,%d”,a,y); A) 16,60 B) 18,60 C) 死循环 D)都不是5.int a=5,b=4,c=3 则表达式abc为_ _。(真/假)6.#define f x+yx=5 y=3a=2*f a=?7.假定int a=0,b=0,c=0; 执行表达式a | (b=5) | (c=3)后b,c的值是 。 A)5,3 B)0,0 C
3、) 5,0 D) 0,38.已知:int j,a,b; 执行语句“b=(a=2*3,a*5),a+6;”后,变量b的值是 。 A)6 B)12 C)30 D)369.for(;)10.int a=200,b=300;a*b/100 (long)(a*b)/100 (long)a*b/100 11.虚实结合时的类型12.两种典型的排序算法:选择法和起泡法。选择法基本思想:首先选择最小的数放在0位置,再在剩下的数中选择最小的数放在下一位置,依次类推,共进行9次选择。每次选择都要与其后的所有数进行比较换位。5874390126j#define n 10main() int an,i,j,t;for(
4、i=0;in;i+)scanf(“%d”,&ai);for(i=0;in;i+)for(j= i+1 ;jaj) t=ai; ai=aj; aj=t;for(j=0;jn;j+) printf(“%3d”,ai);5874390126也可以在每次选择中先找最小值所在的位置,最后再换位。main() int a10,i,j,t,k; for(i=0;i10;i+)scanf(“%d”,&ai);for(i=0;i9;i+) k=i;for(j=i+1;j10;j+) if(ajak)k=j;t=ai; ai=ak; ak=t;for(j=0;j10;j+) printf(“%3d”,ai);起泡
5、法基本思想:首先将所有数中的最大值“冒泡”到最后位置,再将剩下的数中的最大值“冒泡”到上一位置,依次类推,共进行9次“冒泡”。每次“冒泡”都是一种翻滚过程,即相邻两个数进行比较换位。5874390126假定j为“冒泡”次数,则有:main() int a10,i,j,t;for(i=0;i10;i+)scanf(“%d”,&ai);for(j=1;j=9;j+)for(i=0;i10-j; i+)if(aiai+1) t= ai; ai= ai+1; ai+1=t;for(j=0;j10;j+) printf(“%3d”,ai);要特别注意两个循环的范围。13.迭代法例:求方程 2x3+3x2
6、-4x+1=0的根。简单迭代法基本思想:将原方程f(x)化为: x2=g(x1)x2=(2x13+3x12+1)/4 迭代公式迭代过程:main() float x1,x2; scanf(“%f”,&x1);while(1) x2=(2*x1*x1*x1+3*x1*x1+1)/4;if(fabs(x2-x1)1e-6)break;?printf(“n %f”,x2);牛顿迭代法基本思想:f(x1)=f(x1)/(x1-x2)x2=x1-f(x1)/ f(x1) 牛顿迭代公式main() float x1,x2,f1,f; scanf(“%f”,&x1);while(1) f=2*x1*x1*x
7、1+3*x1*x1-4*x1+1f1=6*x1*x1+6*x1-4; x2=x1-f/f1;if(fabs(x2-x1)a/10%10a/100%10 B)a%10a/10%10&a/10%10a/100%10 C)a%10a%100&a%100a%1000 D)a%10a%10/10&a%10/10a%100/107、以下函数是计算多项式 (7) 的值。 float f (int n) float i,t=2,s=t;for(i=2;inum=2001; C) st.name=”Zhang”; D) p-score=80;10、以下求矩阵a中主对角元素之和的各程序段中,不正确的是 (10)
8、。 A) int a33=1,2,3,4,5,6,7,8,9, s=0, *p=a;for ( p=a; pa+3; p+=3 ) s+=*p+; B) int a33=1,2,3,4,5,6,7,8,9, s=0, i;for ( i=0; i3; i+ ) s+=aii; C) int a33=1,2,3,4,5,6,7,8,9, s=0, *p=a, i;for ( i=0; i3; i+ ) s+=pii; D) int a33=1,2,3,4,5,6,7,8,9, s=0, *p=a;for ( p=a; pa+3; p+=4 ) s+=*p;11、以下程序中,不合法的函数调用语句是
9、 (11) 。 void fun( float x ) main( ) float a9,b45; A) f(a+5); B) f(b); C) f(a4); D) f(b2);12、设有程序段 t=0; while(printf(“*”)t+; if(t3) break; 下面描述正确的是 (12) 。 A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与0等价C) 其中循环控制表达式是不合法的 D) 以上说法都不对13、以下各循环语句中,不是无限循环的是 (13) 。 A)for(j=5;j- -=010;j+); C)for(j=1,k=10;j-k;j+,k- -); D)fo
10、r(j=1;j=10;j+) s+=j;14、对于以下求最大值最小值的函数,可以代替第三行的语句有 (14) 。 void max_min( int * a, int n, int * max, int * min) int * i;*max=a0;*min=a0;for(i=a;i*max) *max=*i; if (*i*min) *min=*i; A)*max=0;*min=0; B)*max=-32768;*min=32767; C)*max=an;*min=an; D)*max=32767;*min=-32768;15、以下程序的功能是 (15) 。main() int a10=3,
11、5,2,9,1,8,0,2,4,6,i,p=0,q=0; for(i=0;ip) p=ai; if(aiaq) q=i; printf(n %d,%d,p,q);A)求最大值和最小值 B)求最大值的位置和最小值的位置C)求最大值的位置和最小值 D)求最小值的位置和最大值16、判断字符串a和b是否相等,应当使用 (16) 。A) if(a=b) B) if(a=b)C) if(strcpy(a,b) D) if(strcmp(a,b)二、程序阅读题(18,21,25,29每题2分,其他每题3分,共38分)17、下面程序的运行结果是 (17) 。void f(int *x,int *y) int
12、t; t=*x;*x=*y;*y=t;main() int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=&a7;while(pq) f(p,q); p+; q-;for(i=0;i8;i+) printf(%d,ai);A)8,2,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4,C)1,2,3,4,5,6,7,8,D)8,7,6,5,4,3,2,1,18、以下程序的运行结果是 (18) 。 int func(int a,int b) static int m=0,i=2;i+=m+1; m=i+a+b; return (m); main( ) int k=4,
13、m=1,p; p=func(k,m); printf(“%d,”,p);p=func(k,m); printf(“%dn”,p); A)8,17 B)8,16 C)8,20 D)8,819、下面程序的运行结果是 (19) 。 main( ) int a,b;for(a=1,b=1;a=20) break; if (b%3=1) b+=3; continue; b-=5;printf(“%dn”,a); A)7 B)8 C)9 D)1020、以下程序的运行结果是 (20) 。 main( ) int a10=8,6,4,0,9,1,2,5,7,3,t,*k=a,*p,*q;for(p=a;pa+
14、10;p+) if (*p=a&qa+10;p-,q+) t=*p;*p=*q;*q=t; for(p=a;pa+10;p+) printf(“%d”,*p); A)3752190468 B)7521904683 C)2190468573 D)864091257321以下程序的运行结果是 (21) .void sort (int *a, int n) main() int *i, *j, t; int i,a10=5,3,8,6,0,1,4,7,9,2 for(i=a;ia+n-1;i+) sort(a,5); for(j=i+1; j*j)t=*i;*i=*j;*j=t; for(i=0;i
15、n;i+)printf(“%d”,ai); A) 0123456789 B) 9876543210 C) 0356812479 D) 8653097421 22、以下程序的运行结果是 (22) 。 main( ) int j,k,s1=0,s2=0,a33=1,2,3,4,5,6,7,8,9;for(j=0;j3;j+) for(k=j+1;k=a & ai=z ) putchar ( ai ); else printf ( %d,ai+1 ); A) ab23 B) ab12 C) ab4950 D) ab505124、以下程序的运行结果是 (24) 。 main( ) int a10=3,
16、2,5,4,6,7,9,12,8,10,i,p=0,q=0;for(i=0;ip) p=ai; if (aiq) q=ai; printf(“n %d,%d”,p,q); A)0,0 B)12,0 C)12,2 D)2,1225、以下程序的运行结果是 (25) 。 #define F x+y main() int x=4, y=5, z; if(x+ak ) k=j; j=a0; a0=ak; ak=j; printf ( “%s”, a); A) ZbcXYa789 B) cbaXYZ789 C) 7bcXYZa89 D) 9bcXYZ78a27以下程序的运行结果是 (27) 。#inclu
17、de main( ) static char a=“Language”,b=“programe”; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k=7;k+) if(*(p1+k)= =*(p2+k) printf(“%c”,*(p1+k); 28以下程序的运行结果是 (28) 。main() int n=12345,j,n1=0,n2=0; while ( n/=10 ) j=n%10; if ( j%2 ) n1+=j; else n2+=j; printf ( n %d,%d, n1,n2 );A) gae B) ga C) Language D)
18、有语法错A 9,6 B. 6,4 C. 6,9 D. 4,629若运行以下程序时,从键盘输入abcd(表示回车),则输出结果是 (29) 。 #include “stdio.h” main() int c; while(c=getchar()!=n) switch(c-a) case 0: case 1: putchar(c+4); case 2: putchar(c+4); break; case 3: putchar(c+3); default: putchar(c+2); break; File1.txt内容:Zhao 87Qian 75Sun 90Li 93Zhou 70 A. fgg
19、 B. effgg C. eeffggf D. eeffgg30以下程序的运行结果是 (30) 。#define PRT “n %s %d %s %d”struct student char name10; int score; ; main() int i; struct student st, stmax,stmin; FILE *fp; fp=fopen ( “file1.txt”,”r” ); stmax.score=0; stmin.score=100; for ( i =1; i stmax.score ) stmax=st; while ( !feof( fp) ) fscanf
20、 ( fp,”%s%d”,st.name,&st.score );if ( st.score stmin.score ) stmin=st; fclose ( fp );printf (PRT,stmax.name,stmax.score,stmin.name,stmin.score ); A.Li 93 zhou 75 B.Sun 90 Zhou 70 C.Qian 75 Li 93 D.Zhao 87 Zhou70三、程序填充题:选择适当的内容填在以下各程序的下划线处,使程序完整。(每空3分,共30分)下面程序的功能是求100至1000之间有多少个数其各位数字之和是5。 main( ) i
21、nt i,s,k,count=0; for(i=100;i1 D)k10 (32) A)k/10 B)k%10 C)k-k%10 D)k-k/10 (33) A)continue B)break C)count+ D)printf(“%d”,count) 下面程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如chyab变成ychab。 main( ) char str80,*p,max,*q; q=p=str; gets(p); max=*p+; while(*p) if(maxstr B)qp C)*qstr0 D)*q*p(36) A)q+ B)str- - C)q- - D)p- -以下函数是将数列a中的非素数去掉,只保留素数部分,然后按从大到小顺序重新排列后输出。void sort(int * a,int n) int *i,*j,t; for(i=a;ia+n-1;i+) for(j=i+1;ja+n;j+) (38) ; int prime(int m) int i; if (m2) retu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1