C语言程序设计模拟试题2附答案.docx
- 文档编号:23356056
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:26
- 大小:43.11KB
C语言程序设计模拟试题2附答案.docx
《C语言程序设计模拟试题2附答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题2附答案.docx(26页珍藏版)》请在冰豆网上搜索。
C语言程序设计模拟试题2附答案
《C语言程序设计》模拟试卷二
一、填空题。
(每空2分,共30分)
1.设有变量说明语句
intx=1,y=2;
则执行下述printf语句的输岀结果是—1.000000。
printf("%f\n",1.0+x/y);
2.执行下述程序
#include
main()
{
intx,y;
scanf("%2d%*2s%1d",&x,&y);
printf("%d\n",x+y);
}
若从键盘输入
12345671
则程序的输岀结果是__17。
3.以下程序的功能是:
从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或
结束标志),统计并输出最高成绩和最低成绩。
请填空。
#include
main()
{
floatx,amax,amin;
scanf("%f',&x);
amax=x;
amin=x;
while(X>0&&X<=100)
{
if(x>amax)
amax=x;
elseif(x amin=x; scanf("%f”,&x); } printf("\namax=%f\namin=%f\n",amax,amin); 可编写如下之程序段实现之。 请填空。 intk; doubles,d; s=0.0; d=1.0; K=0; do { s=s+d; _k++; d=1.O/(k*(k+1)); }while(k<=n); printf("%f\n",s); 5.执行下述程序的输岀结果是_-3-40443 #inclued main() { inta[6],i; for(i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n“); } 6.执行下述程序时的输岀结果是6 #include main() { inta[]={2,4,6,},*ptr=&a[0],x=8,y,z; for(y=0;y<3;y++) z=(*(ptr+y) *(ptr+y): x;printf("%d\n",z); } 7.执行下述程序的输岀结果是__60_=。 #include main() { inta[][2]={10,20,30,40,50,60},(*p)[2]; p=a; printf("%d\n",*(*(p+2)+1)); } 8.执行以下程序的输岀结果是__s=10。 #include main() { ints,i,sum(); for(i=1;i<=10;i++) s=sum(i); printf("s=%d\n",s); } sum(intk) { intx=0; return(x+=k); } 9.下述函数定义用来求岀两个整数之和,并通过函数的模拟传地址调用,传回两整数相加之和值, 请填空。 voidadd(intx,inty,int*z_) { *z=x+y; } 10.函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一位存入由整型指针b所指向的一维数组a,最低位存放于a[0]中,次低位存放于a[1]中,依此类推。 请填空。 voidfunc(intx,int*b) { intr; do { r=x%2; *b++=r; x/=2; }while(x); } 11.以下程序中函数invert实现将数组内所有数组元素的值逆置。 比如,执行本程序将输出 10987654321 请填空。 #include main() { inta[10]={1,2,3,4,5,6,7,8,9,10},i,n=10; invert(a,n-1); for(i=0;i<10;i++) printf("%3d”,a[i]); printf("\n"); } invert(int*s,intnum) { int*t,k; t=s+num; while(t>=s) { k=*s; *s=*t; *t=k; s++; t--; } } 12.若有以下定义和说明,则结构体变量w在内存中所占的字节数是_18__ unionaa floatx; floaty; charc⑹; }; structst { unionaav; floatw[5]; doubleave; }w; 13.执行下述程序的输岀结果是_95,Li_一_。 #include structstr { floatx; char*y; }*m; structstrgroup[3]={ 95.0,"Li", 82.5,"Wang", 73.5,"Sun" }; main() { m=group; printf("%.lf,%s\n",m->x,m->y); } 14.下面的程序用来统计某文件文件中字符的个数。 请填空。 #include #include main() { FILE*fp; longnum=0; if((fp=fopen("fnam.dat","r"))++)==NULL){ printf("Can'topenthisfile! \n");exit(O); } while(! ) { fgetc(fp); num++; } printf("num=%d\n",num);fclose(fp); } 15.执行下述程序后,输岀结果为—29 #include #defineFUN2(a,b)a-b #defineCAL(a,b)a*b+a+3main() printf("%d\n",CAL(FUN1(3,5),FUN2(4,5))); 1、B 7、B 13、A 14、D 2、B 8、A 15、A 16、A 17、B 4、C 6、D 10、C 18、A 11、D 12、D 20C 19、B 单项选择题。 (每题1分,共20分) 1•以下不是c语言规定保留字的是(B) (A) (D)unsigned B) (D)3 float(B)integer(C)signed 2.设int型变量x有初始值3,则表达式x++*5/10的值是( (A)0(B)1(C)2 3.下述程序执行后的输岀结果是(A) #include main() { intx='f'; printf("%c\n",'a'+(x-'a'+1)); } (D)j (A)g(B)h(C)i 4.设有程序 #include { inti,j; for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d\n",i); } 在运行上述程序时,for语句中循环体的执行次数是(C (A)3(B)2(C)1(D)0 5.在下述选项时,没有构成死循环的程序是(C) (A)inti=100 while (1){ i=i%100+1; if(i>100) break; (B)for(;;); (C)intk=1000; do { ++k; }while(k>=10000); (D)ints=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)8 7.设有变量说明语句 inta=1,b=0; 则执行以下程序段的输岀结果为(B)。 switch(a) { case1: switch(b) { caseO: printf("**0**");break; case1: printf("**1**");break; } case2: printf("**2**");break; printf("\n"); (A)**0**(B)**0****2** (C)**0****1****2** (D)有语法错误 8.以下合法的数组说明是(A )。 (A)ehara[7]="string"; (B)inta[5]={0,1,2,3,4,5}; (C)ehara="string"; (D)INTa[]={0,12,3,4,5}; 9.下述程序代码中有语法错误的行是 ( D)。 inti,ia[10],ib[10]; /* 第1行*/ for(i=0;i<=9;i++) /*第2行*/ ia[i]=0; /*第3行*/ ib=ia; /第4行*/ (A)第1行(B)第2行 (C) 第3行(D)第4行 10.若已定义 inta[9],*p=a; 并在以后的语句中未改变 p的值,则不能表示a[1]地址的表达式是(C) int**pp,*p,a=10,b=20; pp=&P; P=&a; p=&b; printf("%d,%d\n",*p,**pp); 则输岀结果是(D) 12.执行下述程序后的输岀结果是(D) #inelude fune(inta) { intb=0; a=e++,b++; return(a); } main(){ inta=2,i,k; fori=0;i<2;i++) k=func(a++); printf("%d\n",k); } (A)3(B)0(C)5(D)4 13.执行下述程序的输岀结果是(A)。 #include main() { intaa[3][3]={{2},{4},{6}}; inti,*p=&aa[0][0]; for(i=0;i<2;i++) { if(i==0) aa[i][i+1]=*p+1; else ++p; printf("%d",*p); } printf("\n"); } (A)23(B)26(C)33(D)36 14.读下面的程序,正确的输岀结果是(D) #include voidf1(inta) { printf("%d,",a+=1O); } voidf2(void) { printf("%d,",a+=3); } voidmain() { inta=10; f1(a); f2(); printf("%d\n",a); } (D)20,53,10 (A)60,63,60(B)20,23,23(C)20,13,10 15.执行下述程序的输岀结果是(A)o #include intpower(intx,inty); main() { floata=2.6,b=3.4; intp; p=power((int)a,(int)b); printf("%d\n",p); } intpower(intx,inty) { for(i=y;i>0;i--) p=p*x; return(p); } (A)8(B)9 16.已知函数scopy的定义如下 voidscopy(char*s,char*t) { while(*s++=*t++); 则该函数的功能是(A) (A)串复制(B)求串长度 (C)串比较 (D)串反向 17.执行下述程序的输岀是(B) #include voidmain() { structcomplex { intre; intim; }; structcomplexcp[3]={2,5,4,7}; cp[2].re=cp[0].re+cp[1].re; cp[2].im=cp[0].im+cp[1].im; printf("%d%d\n",cp[2].re,cp[2].im); } (D)126 (A)711(B)612(C)99 18.执行下述程序的输岀结果是(A) #include main() union { intk; chari[2]; }*s,a; s=&a; s->i[0]=0x39; s->i[1]=0x38; printf("%x\n",s->k); } (D)390038 (A)cccc3839(B)3938(C)380039 19.有以下程序,则结果为_B。 structabc {inta,b,c;}; main() {structabcs[2]={{1,2,3},{4,5,6}}; intt; t=s[0].a+s[1].b; printf(“%dn”,t); } A)5B)6C)7D)8 20.以下程序for语句循环体中printf语句执行次数是(C #include #defineN2 #defineMN+1 #defineNUM(M+1)*M/2 main() { for(i=1;i<=NUM;i++) printf("%d\n",i); } (A)5(B)6 三、程序分析题(每题5分,共30分) 1.阅读程序,写岀执行该程序的输岀结果。 #inelude main() { chars[]="pressakey."; inti; charch; for(i=0;(ch=s[i])! ='\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 #defineN5 main() { inti,j; inta[N][N]; for(i=O;i for(j=0;j if(i>=j) a[i][j]=1; else a[i][j]=a[i][j-1]+1; for(i=0;j { for(j=0;j printf("%3d",a[i][j]); printf("\n“); } } 不输出任何结果 3.阅读程序,写岀执行该程序的输岀结果 #include main() { intm[5],n[5],*px,*py,k; px=m;py=n; for(k=1;k<4;k++,px++,py++) { *px=k;*py=2*k; printf("%d,%d",m[k-1],n[k-1]); } printf("\n"); px=&m[1];py=&n[1]; for(k=1;k<3;k++) { *px+=k;*py*=k; printf("%d,%d,",*px++,*py++); } printf("\n“); } 1,22,43,6 3,4,4,8, 4.阅读程序,写岀执行该程序的输岀结果。 #include voidf(inty) { staticinti=5; intj=3; j++; printf("%d%d%d=%d\n",i,j,y,i+j+y);i*=2; } voidmain() { intx; for(x=1;x<+3;++x) f(x); } 541=10 1042=11 5.阅读下列程序,写岀程序运行的输岀结果。 #include voidmain() {chara[20]={"1A2B3C"},b[20],*p1,*p2;p1=a,p2=b; do{if(! (*p1>='0‘&&*p1<='9')) {*p2=*p1; p2++; *p2=*p1; } else *p2=*p1; p1++,p2++; }while(*p仁'\0'); *p2=*p1; printf(“%s\n",b); } 1 6.阅读下列程序,写岀程序的主要功能 main() { intn,I; printf("\npleaseinputanumber: \n"); scanf("%d",&n); printf("%d=",n); for(i=2,i<=n,i++) { while(n! =i) { if(n%i==0) printf("%d*",i); n=n/i; } else break; } } printf("%d",n); } 将整数n表示为其所有质因子乘积 四、程序设计题(每小题10分,共20分) 1、编写.程序求1、2、3、4个数字能组成多少个互不相同且无重复数字的三位数? 都是多少? 。 #include Voidmain() { Inti,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”); } 2、有一对兔子,从岀生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生 一对兔子,假如兔子都不死,问每个月的兔子总数为多少? #include Intfanio(intn) { lf(n==1) Return1; Elseif(n==2) Return1; Else Returnfanio(n-1)+fanio(n-2); } Voidmian() { Inti,n; Printf(“请输入月份上限\n”); Scanf(“%d,&n); Printf(“所有月份的兔子总数\n”); For(i=1;i<=n;i++) Printf(“第%d月的兔子总数为: %d,i,fanio(i)); Printf(“n”); } 试卷二参考答案 一、填空题。 1. 1.000000 2. 17 3. x! =0&&x<100&&x>0 4. k++ 5. -3-40443 6. 6 7. 60 8. s=10 9. int*z 10. *(b++) 11. t>s 12. 18 13. 95,Li 14. ! feof(fp) 15. 29 二、单项选择题。 1、B 2、 B 3、 A 7、B 8、 A 9、 D 13、A 14、 D 15、 A 19、B 20、 C 4、 C 5、 C 6、 D 10、 C 11、 D 12、 D 16、 A 17、 B 18、 A 三、程序分析题 1、PressAKey! 2、无任何输岀结果。 3、1,22,43,6 3,4,5,12, 4、541=10 1042=16 5、1 6、求一个正整数分解质因数 四、程序设计题 1、 #include"stdio.h" main() { inti,j,k; printf("\n“); for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++) for(k=1;k<5;k++) { if(i! =k&&i! =j&&j! =k)/*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k); } } 2、 #include"stdio.h" main() { longf1,f2; intI; fl=f2=1; for(i=1;i<=20;i++) { printf("%ld%ld",f1,f2); if(i%2==0) printf("\n");/*控制输岀,每行四个*/ fl=f1+f2;/*前两个月加起来赋值给第三个月*/f2=f1+f2;/*前两个月加起来赋值给第三个月*/ } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 模拟 试题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)