C语言模拟试题完整版.docx
- 文档编号:11733778
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:36
- 大小:20.70KB
C语言模拟试题完整版.docx
《C语言模拟试题完整版.docx》由会员分享,可在线阅读,更多相关《C语言模拟试题完整版.docx(36页珍藏版)》请在冰豆网上搜索。
C语言模拟试题完整版
考试时间:
60分钟
满分:
100
说明:
一、程序填空题,先将/***********SPACE***********/下的【?
】删除,再在该位置写上正确答案。
二、程序改错题,在/**********FOUND**********/的下一行进行改错。
三、程序设计题,在/**********Program**********/
/**********End**********/之间填写程序。
模拟试题一
一、程序填空共2题(共计30分)
第1题(15.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
约瑟夫环问题求解。
即有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出
圈子,问最后留下的是原来第几号的那位。
-------------------------------------------------------*/
#include
#definenmax50
intmain()
{
inti,k,m,n,num[nmax],*p;
printf("pleaseinputthetotalofnumbers(<=%d):
",nmax);
scanf("%d",&n);
p=num;
/***********SPACE***********/
for(i=0;【?
】;i++)
/***********SPACE***********/
*(p+i)=【?
】;
i=0;
k=0;
m=0;
while(m { /***********SPACE***********/ if(【? 】! =0)k++; if(k==3) { *(p+i)=0; k=0; m++; } i++; if(i==n)i=0; } /***********SPACE***********/ while(【? 】)p++; printf("%disleft\n",*p); return0; } 答案: =======(答案1)======= i =========或========= n>i =======(答案2)======= i+1 =========或========= 1+i =======(答案3)======= *(p+i) =========或========= *(i+p) =======(答案4)======= *p==0 =========或========= 0==*p 第2题(15.0分) /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 输入某年某月某日,判断这一天是这一年的第几天? -------------------------------------------------------*/ #include intmain() { intday,month,year,sum,leap; printf("\npleaseinputyear,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)/*从月份得出已过多少天*/ { case1: sum=0; break; case2: sum=31; break; case3: sum=59; break; /***********SPACE***********/ case4: 【? 】; break; case5: sum=120; break; case6: sum=151; break; case7: sum=181; break; case8: sum=212; break; case9: sum=243; break; case10: sum=273; break; case11: sum=304; break; case12: sum=334; break; default: printf("dataerror"); break; } /***********SPACE***********/ 【? 】;/*再加上日期数*/ /***********SPACE***********/ if(year%400==0||(year%4==0【? 】)/*判断是否闰年*/ leap=1; else leap=0; /***********SPACE***********/ if(leap==1【? 】) sum++; printf("itisthe%dthday.",sum); return0; } 答案: =======(答案1)======= sum=90 =======(答案2)======= sum=sum+day =========或========= sum=day+sum =========或========= sum+=day =======(答案3)======= &&year%100! =0 =========或========= &&0! =year%100 =========或========= &&(year%100! =0) =========或========= &&(0! =year%100) =======(答案4)======= &&month>2 =========或========= &&2 =========或========= &&(month>2) =========或========= &&(2 二、程序改错共2题(共计30分) 第1题(15.0分) /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 请编写函数fun,对长度为8个字符的字符串,将8个字符按 降序排列。 例如: 原来的字符串为CEAedcab,排序后输出为edcbaECA。 ------------------------------------------------------*/ #include #include #include voidfun(char*s,intnum) { /**********FOUND**********/ inti;j; chart; for(i=0;i /**********FOUND**********/ for(j=i;j>num;j++) /**********FOUND**********/ if(s[i]>s[j]) { t=s[i]; s[i]=s[j]; s[j]=t; } } main() { chars[10]; printf("输入8个字符的字符串: "); gets(s); fun(s,8); printf("\n%s",s); } 答案: =======(答案1)======= inti,j; =======(答案2)======= for(j=i+1;j =========或========= for(j=i;j =======(答案3)======= if(s[i] =========或========= if(s[j]>s[i]) 第2题(15.0分) /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 以下程序能求出满足条件: 1*1+2*2+......+n*n<=1000中的 最大的n。 说明: 输出: n=13 ------------------------------------------------------*/ #include intmain() { intn,s; /**********FOUND**********/ s==n=0; /**********FOUND**********/ while(s>1000) { ++n; /***********FOUND***********/ s=n*n; } printf("n=%d\n",n-1); return0; } 答案: =======(答案1)======= s=n=0; =========或========= s=0,n=0; =========或========= s=0,n=0; =========或========= n=s=0; =========或========= s=0;n=0; =======(答案2)======= while(s<=1000) =========或========= while(1000>=s) =======(答案3)======= s+=n*n; =========或========= s=s+n*n; =========或========= s=s+n*n; 三、程序设计共2题(共计40分) 第1题(20.0分) /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 编写函数fun其功能是: 根据整型形参m,计算如下 公式的值: y=1+1/3+1/5+1/7+…+1/(2m+1) 例如: 若m=9,则应输出: 2.133256 ------------------------------------------------*/ #include floatfun(intm) { /**********Program**********/ /**********End**********/ } intmain() { intn; printf("Entern: "); scanf("%d",&n); printf("\nTheresultis%1f\n",fun(n)); return0; } 答案: ---------------------- doubley=1; inti; for(i=1;i<=m;i++) {y+=1.0/(2*i+1);} return(y); ---------------------- 第2题(20.0分) /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 不使用字符串strlen函数,编写函数fun求一个字符串的长度,在main函数中 输入字符串,并输出其长度。 ------------------------------------------------*/ #include intfun(char*p1) { /**********Program**********/ /**********End**********/ } intmain() { char*p,a[20]; intlen; p=a; printf("pleaseinputastring: \n"); gets(p); return0; len=fun(p); printf("Thestring'slengthis: %d\n",len); } 答案: ---------------------- char*p; intn=0; p=p1; while(*p++) n++; returnn; ---------------------- 模拟试题二 一、程序填空共2题(共计30分) 第1题(15.0分) /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 要求输出如下结果: A,B 65,66 -------------------------------------------------------*/ #include intmain() { /***********SPACE***********/ chara,【? 】; /***********SPACE***********/ a=【? 】; b='b'; a=a-32; /***********SPACE***********/ b=b-【? 】; printf("%c,%c\n%d,%d\n",a,b,a,b); return0; } 答案: =======(答案1)======= b =======(答案2)======= 'a' =========或========= 97 =======(答案3)======= 32 第2题(15.0分) /*------------------------------------------------------ 【程序填空】 -------------------------------------------------------- 功能: 编写一个程序,从键盘接收一个字符串,然后按照字符顺 序从小到大进行排序,并删除重复的字符。 ------------------------------------------------------*/ #include #include intmain() { charstr[100],*p,*q,*r,c; printf("Inputastring: "); gets(str); /***********SPACE***********/ for(p=【? 】;*p;p++) { /****risthebiggestcharatmoment***/ for(q=r=p;*q;q++) if(*r>*q) r=q; if(r! =p)/***swap*rand*p***/ { c=*r; /***********SPACE***********/ 【? 】; *p=c; } } for(p=str;*p;p++) { /***********SPACE***********/ for(q=p;*p【? 】*q;q++); strcpy(p+1,q); } /***********SPACE***********/ printf("Output: %s\n\n",【? 】); return0; } 答案: =======(答案1)======= str =======(答案2)======= *r=*p =======(答案3)======= == =======(答案4)======= str 二、程序改错共2题(共计30分) 第1题(15.0分) /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 计算正整数num的各位上的数字之积。 例如: 若输入: 252,则输出应该是: 20。 若输入: 202,则输出应该是: 0。 ------------------------------------------------------*/ #include #include longfun(longnum) { /**********FOUND**********/ longk=1 do { k*=num%10; /**********FOUND**********/ num\=10; /**********FOUND**********/ }while(! num); return(k); } main() { longn; printf("Pleaseenteranumber: ");scanf("%ld",&n); printf("\n%ld\n",fun(n)); } 答案: =======(答案1)======= longk=1; =======(答案2)======= num/=10; =======(答案3)======= }while(num); =========或========= }while(num! =0); 第2题(15.0分) /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 利用条件运算符的嵌套来完成此题: 学习成绩>=90分的同 学用A表示,70-89分之间的用B表示,60-69分之间的用C表示, 60分以下的用D表示。 ------------------------------------------------------*/ #include intmain() { intscore; /**********FOUND**********/ char*grade; printf("pleaseinputascore\n"); /**********FOUND**********/ scanf("%d",score); if(score<0&&score>100) printf("超出范围! "); else { /**********FOUND**********/ switch(score) { case9: case10: grade='A'; break; case7: case8: grade='B'; break; case6: grade='C'; break; /***********FOUND***********/ caseelse: grade='D'; } } printf("%dbelongsto%c\n",score,grade); return0; } 答案: =======(答案1)======= chargrade; =======(答案2)======= scanf("%d",&score); =======(答案3)======= switch(score/10) =======(答案4)======= default: =========或========= case0: case1: case2: case3: case4: case5: 三、程序设计共2题(共计40分) 第1题(20.0分) /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 编写函数fun(),要求从字符串中删除指定的字符(区分大、小)。 例如: 若程序执行时输入字符串为: turbocandborlandc++ 从键盘上输入字符: n,则输出后变为: turbocadbo rladc++,如果输入的字符在字符串中不存在,则字 符串照原样输出。 ------------------------------------------------*/ #include voidfun(chars[],intc) { /**********Program**********/ /**********End**********/ } voidmain() { staticcharstr[]="turbocandborlandc++"; charch; printf("原始字符串: %s\n",str); printf("输入一个字符: "); scanf("%c",&ch); fun(str,ch); printf("str[]=%s\n",str); } 答案: ---------------------- char*q=s; for(;*q;q++) if(*q! =c)*(s++)=*q; *s=0; ---------------------- 第2题(20.0分) /*------------------------------------------------ 【程序设计】 ------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 模拟 试题 完整版