《C语言程序设计模拟试题2(附答案)new.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题2(附答案)new.docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计模拟试卷二一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2;则执行下述printf语句的输出结果是_1.000000_ _。 printf(%fn,1.0+x/y);2.执行下述程序 #include main() int x,y; scanf(%2d%*2s%1d,&x,&y); printf(%dn,x+y); 若从键盘输入 12345671 则程序的输出结果是_17_。3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include main() flo
2、at x,amax,amin; scanf(%f,&x); amax=x; amin=x; while ( X0&Xamax) amax=x; else if (xamin) amin=x; scanf(%f”,&x); printf(namax=%fnamin=%fn,amax,amin); 4.设n是整型变量,且已具有某正整数值。根据下述数学式求s的值并输出。可编写如下之程序段实现之。请填空。 int k; double s,d; s=0.0; d=1.0; K=0; do s=s+d; _k+ _; d=1.0/(k*(k+1); while (k=n); printf(%fn,s);5
3、.执行下述程序的输出结果是_-3 -4 0 4 4 3_ _。 #inclued main() int a6,i; for (i=0;i3)%5; printf(%3d,ai); printf(n); 6.执行下述程序时的输出结果是_6_ _。 #include main() int a=2,4,6,*ptr=&a0,x=8,y,z; for (y=0;y3;y+) z=(*(ptr+y)x)?*(ptr+y):x; printf(%dn,z); 7.执行下述程序的输出结果是_60_ _。 #include main() int a2=10,20,30,40,50,60,(*p)2; p=a;
4、 printf(%dn,*(*(p+2)+1); 8.执行以下程序的输出结果是_s=10 _。 #include main() int s,i,sum(); for (i=1;i=10;i+) s=sum(i); printf(s=%dn,s); sum(int k) int x=0; return (x+=k); 9.下述函数定义用来求出两个整数之和,并通过函数的模拟传地址调用,传回两整数相加之和值,请填空。 void add(int x,int y,_int *z_ _) *z=x+y; 10.函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一位存入由整型指针b所指向
5、的一维数组a,最低位存放于a0中,次低位存放于a1中,依此类推。请填空。 void func(int x,int *b) int r; do r=x%2; _*b+_=r; x/=2; while (x); 11.以下程序中函数invert实现将数组内所有数组元素的值逆置。比如,执行本程序将输出 10 9 8 7 6 5 4 3 2 1请填空。 #include main() int a10=1,2,3,4,5,6,7,8,9,10,i,n=10; invert(a,n-1); for (i=0;i=s _) k=*s; *s=*t; *t=k; s+; t-; 12.若有以下定义和说明,则结
6、构体变量w在内存中所占的字节数是_18_union aa float x; float y; char c6; ;struct st union aa v; float w5; double ave; w; 13.执行下述程序的输出结果是_95,Li_ _。 #include struct str float x; char *y; *m; struct str group3= 95.0,Li, 82.5,Wang, 73.5,Sun ; main() m=group; printf(%.lf,%sn,m-x,m-y); 14.下面的程序用来统计某文件文件中字符的个数。请填空。 #includ
7、e #include main() FILE *fp; long num=0; if (fp=fopen(fnam.dat,r)+)=NULL) printf(Cant open this file!n); exit(0); while (!) fgetc(fp); num+; printf(num=%dn,num); fclose(fp); 15.执行下述程序后,输出结果为_29_。 #include #define FUN1(a,b) a+b #define FUN2(a,b) a-b #define CAL(a,b) a*b+a+3 main() printf(%dn,CAL(FUN1(
8、3,5),FUN2(4,5); 1、B2、B3、A4、C5、C6、D7、B8、A9、D10、C11、D12、D13、A14、D15、A16、A17、B18、A19、B20、C二、单项选择题。(每题1分,共20分)1以下不是c语言规定保留字的是(B )。(A)float (B)integer (C)signed (D) unsigned2.设int型变量x有初始值3,则表达式x+*5/10的值是(B )(A)0 (B)1 (C)2 (D)33.下述程序执行后的输出结果是(A ) include main() int x=f; printf(%cn,a+(x-a+1); (A)g (B)h (C)
9、i (D)j4.设有程序#include main() int i,j; for (i=0,j=1;i100) break; (B)for (;);(C)int k=1000; do +k; while (k=10000);(D) int s=36; while (s);-s;6.假定a和b为int型变量,则执行下述语句组后,b的值为( D)。 a=1; b=10; do b-=a;A a+; while (b-0); (A)9 (B)-2 (C)-1 (D)87.设有变量说明语句 int a=1,b=0;则执行以下程序段的输出结果为( B)。 switch (a) case 1: switc
10、h (b) case 0:printf(*0*);break; case 1:printf(*1*);break; case 2:printf(*2*);break; printf(n); (A)*0* (B)*0*2* (C)*0*1*2* (D)有语法错误8.以下合法的数组说明是(A )。 (A)char a7=string; (B)int a5=0,1,2,3,4,5; (C)char a=string; (D)INT a=0,12,3,4,5;9.下述程序代码中有语法错误的行是( D)。 int i,ia10,ib10; /*第1行*/ for (i=0;i=9;i+) /*第2行*/
11、 iai=0; /*第3行*/ ib=ia; /第4行*/ (A)第1行 (B)第2行 (C)第3行 (D)第4行10.若已定义 int a9,*p=a;并在以后的语句中未改变p的值,则不能表示a1地址的表达式是( C)。(A)p+1 (B)a+1 (C)a+ (D)+p11.若有下述说明和语句 int *pp,*p,a=10,b=20; pp=&p; p=&a; p=&b; printf(%d,%dn,*p,*pp);则输出结果是( D)。 (A)10,10 (B)10,20 (C)20,10 (D)20,2012.执行下述程序后的输出结果是( D)。 #include func(int a
12、) int b=0; static int c=3; a=c+,b+; return (a); main() int a=2,i,k; for i=0;i2;i+) k=func(a+); printf(%dn,k); (A)3 (B)0 (C)5 (D)413.执行下述程序的输出结果是( A)。 #include main() int aa33=2,4,6; int i,*p=&aa00; for (i=0;i2;i+) if (i=0) aaii+1=*p+1; else +p; printf(%d,*p); printf(n); (A)23 (B)26 (C)33 (D)3614.读下面
13、的程序,正确的输出结果是( D)。 #include static int a=50; void f1(int a) printf(%d,a+=10); void f2(void) printf(%d,a+=3); void main() int a=10; f1(a); f2(); printf(%dn,a); (A)60,63,60 (B)20,23,23 (C)20,13,10 (D)20,53,1015.执行下述程序的输出结果是(A )。 #include int power(int x,int y); main() float a=2.6,b=3.4; int p; p=power(
14、int)a,(int)b); printf(%dn,p); int power(int x,int y) int i,p=1; for (i=y;i0;i-) p=p*x; return (p); (A)8 (B)9 (C)27 (D)8116.已知函数scopy的定义如下 void scopy(char *s,char *t) while (*s+=*t+); 则该函数的功能是( A)。(A)串复制 (B)求串长度 (C)串比较 (D)串反向17.执行下述程序的输出是( B)。 #include void main() struct complex int re; int im; ; str
15、uct complex cp3=2,5,4,7; cp2.re=cp0.re+cp1.re; cp2.im=cp0.im+cp1.im; printf(%d %dn,cp2.re,cp2.im); (A)7 11 (B)6 12 (C)9 9 (D)12 618.执行下述程序的输出结果是( A)。 #include main() union int k; char i2; *s,a; s=&a; s-i0=0x39; s-i1=0x38; printf(%xn,s-k); (A)cccc3839 (B)3938 (C)380039 (D)39003819.有以下程序,则结果为 B 。struc
16、t abc int a, b, c; ;main() struct abc s2=1,2,3,4,5,6; int t; t=s0.a+s1.b;printf(“%d n”,t);A) 5 B) 6 C) 7 D) 820.以下程序for语句循环体中printf语句执行次数是( C)。 #include #define N 2 #define M N+1 #define NUM (M+1)*M/2 main() int i; for (i=1;i=NUM;i+) printf(%dn,i); (A)5 (B)6 (C)8 (D)9三、程序分析题(每题5分,共30分)1.阅读程序,写出执行该程序
17、的输出结果。 #include main() char s=press a key.; int i; char ch; for (i=0;(ch=si)!=0;i+) switch (ch) case p: case a: case k:putchar(ch-32);continue; case :putchar(*);break; case .:putchar(!);break; default :putchar(ch);continue; putchar(n); Press*A*Key!2.阅读程序,写出执行该程序的输出结果。 #include #define N 5 main() int
18、 i,j; int aNN; for (i=0;iN;i+) for (j=0;j=j) aij=1; else aij=aij-1+1; for (i=0;jN;j+) for (j=0;jN;j+) printf(%3d,aij); printf(n); 不输出任何结果3.阅读程序,写出执行该程序的输出结果 #include main() int m5,n5,*px,*py,k; px=m;py=n; for (k=1;k4;k+,px+,py+) *px=k;*py=2*k; printf(%d,%d,mk-1,nk-1); printf(n); px=&m1; py=&n1; for
19、(k=1;k3;k+) *px+=k;*py*=k; printf(%d,%d,*px+,*py+); printf(n);1,22,43,63,4,4,8,4.阅读程序,写出执行该程序的输出结果。 #include void f(int y) static int i=5; int j=3; j+; printf(%d%d%d=%dn,i,j,y,i+j+y); i*=2; void main() int x; for (x=1;x+3;+x) f(x); 541=101042=115. 阅读下列程序,写出程序运行的输出结果。#include void main() char a20=1A2
20、B3C,b20,*p1,*p2; p1=a,p2=b; doif (!(*p1=0 &*p1=9) *p2=*p1; p2+; *p2=*p1; else *p2=*p1; p1+,p2+; while(*p1=0); *p2=*p1; printf( %sn,b); 16. 阅读下列程序,写出程序的主要功能。main() int n, I; printf(nplease input a number:n); scanf(%d, &n); printf(%d=, n); for(i=2,i=n,i+ ) while(n != i) if(n % i = 0) printf(%d*, i); n
21、 = n / i; else break; printf(%d, n);将整数n表示为其所有质因子乘积四、程序设计题(每小题10分,共20分)1、编写.程序求1、2、3、4个数字能组成多少个互不相同且无重复数字的三位数?都是多少?。#includeVoid main() Int i,j,k,m=0;For(i=1;i=4;i+) For(j=1;j=4;j+) For(k=1;k=4;k+)While(i!=j&j!=k&k!=i) Printf(“%5d”,100*i+10*j+k);m+;Printf(“n”);Printf(“所有不重复的三位数个数为:%d”,m);Printf(“n”)
22、;2、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?#includeInt fanio(int n) If(n=1) Return 1; Else if(n=2)Return 1; Else Return fanio(n-1)+fanio(n-2);Void mian()Int i,n;Printf(“请输入月份上限n”);Scanf(“%d”,&n);Printf(“所有月份的兔子总数n”);For(i=1;i=n;i+)Printf(“第%d月的兔子总数为:%d”,i,fanio(i);Printf(“n
23、”); 试卷二参考答案一、填空题。1.1.0000002.173.x!=0 & x04.k+5.-3 -4 0 4 4 36.67.608.s=109int *z10.*(b+)11.ts12.1813.95,Li14.!feof(fp) 15.29二、单项选择题。1、B2、B3、A4、C5、C6、D7、B8、A9、D10、C11、D12、D13、A14、D15、A16、A17、B18、A19、B20、C 三、程序分析题1、Press A Key!2、无任何输出结果。3、1,22,43,63,4,5,12,4、541=101042=165、16、求一个正整数分解质因数。四、程序设计题1、#in
24、clude stdio.hmain() int i, j, k; printf(n); for(i=1;i5; i+ ) /*以下为三重循环*/ for(j=1;j5;j+ ) for(k=1;k5;k+ ) if(i != k &i !=j & j != k) /* 确保i、j、k三位互不相同 */ printf(%d, %d, %dn, i, j, k); 2、#include stdio.hmain() long f1, f2; int I; f1 = f2 = 1; for(i = 1;i = 20; i+ ) printf(%ld %ld, f1, f2); if(i % 2 = 0) printf(n); /* 控制输出,每行四个 */ f1 = f1+f2;/* 前两个月加起来赋值给第三个月 */ f2 = f1+f2; /* 前两个月加起来赋值给第三个月 */