c语言题库最终版WPS版.docx
- 文档编号:26670731
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:114
- 大小:39.85KB
c语言题库最终版WPS版.docx
《c语言题库最终版WPS版.docx》由会员分享,可在线阅读,更多相关《c语言题库最终版WPS版.docx(114页珍藏版)》请在冰豆网上搜索。
c语言题库最终版WPS版
2012年C语言机房最新考试题库
献给11级理工科各专业同学
试卷编号:
8257
所属语言:
C语言
试卷方案:
TC_1204092119
试卷总分:
100分
共有题型:
3种
一、程序填空共2题(共计30分)
第1题(15.0分)题号:
70
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
约瑟夫环问题求解。
即有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 =======(答案2)======= i+1或1+i =======(答案3)======= *(p+i)或*(i+p) =======(答案4)======= *p==0或0==*p 第2题(15.0分)题号: 34 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 输入某年某月某日,判断这一天是这一年的第几天? -------------------------------------------------------*/ #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) =======(答案4)======= &&month>2或&&2 二、程序改错共2题(共计30分) 第1题(15.0分)题号: 254 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 请编写函数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分)题号: 41 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 以下程序能求出满足条件: 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分)题号: 380 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 编写函数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分)题号: 379 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 不使用字符串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; ---------------------- 试卷编号: 8275 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 读入一行英文文本,将其中每个单词的第一个字母改成 大写,然后输出此文本行(这里的“单词”是指由空格 隔开的字符串)。 例如: 若输入“iamastudenttotaketheexamination.”, 则应输出“IAmAStudenToTakeTheExamination.”。 -------------------------------------------------------*/ #include"conio.h" #include #include"ctype.h" #include"string.h" voidupfst(char*p) { /***********SPACE***********/ if(【? 】)/****upperthefirstcharofthestring***/ { *p=toupper(*p); p++; } /***********SPACE***********/ for(;*p;【? 】)/***searchthewholestring***/ /***********SPACE***********/ if(*(p-1)==''【? 】*p! ='') *p=toupper(*p); } intmain() { charchrstr[81]; printf("\nPleaseenterastring: "); gets(chrstr); printf("\n\nBeforechanging: \n%s",chrstr); upfst(chrstr); /***********SPACE***********/ printf("\nAfterchanging: \n%s",【? 】); return0; } /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 写一个函数,求一个字符串的长度,不允许使用求字符串 长度的库函数。 在main函数中输入字符串,并输出其长度。 -------------------------------------------------------*/ #include intmain() { intlength(char*p); intlen; charstr[20]; printf("pleaseinputastring: \n"); gets(str); /***********SPACE***********/ len=length(【? 】); printf("thestringhas%dcharacters.",len); return0; } /***********SPACE***********/ 【? 】(char*p) { intn; n=0; while(*p! ='\0') { /***********SPACE***********/ 【? 】; /***********SPACE***********/ 【? 】; } returnn; } /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 根据整型形参m,计算某一数据项的值。 y=1/(100*100)+1/(200*200)+1/(300*300)+……+1/(m*m) 例如: 若m=2000,则应输出: 0.000160。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ fun(intm) { doubley=0,d; inti; /**********FOUND**********/ for(i=100,i<=m,i+=100) { d=(double)i*(double)i; /**********FOUND**********/ y+=1.0\d; } return(y); } main() { intn=2000; printf("\nTheresultis%lf\n",fun(n)); } /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 根据整型形参m,计算如下公式的值: y=1+1/3+1/5+1/7+...+1/(2m-3) ------------------------------------------------------*/ #include doublefun(intm) { doubley=0; inti; /**********FOUND**********/ for(i=1;i /**********FOUND**********/ y+=1.0/(2i-3); return(y); } main() { intn; printf("Entern: "); /**********FOUND**********/ scanf("%d",n); printf("\nTheresultis%1f\n",fun(n)); } /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 编写函数fun(),对某一正数(单精度)的值保留2位小数, 并对第三位进行四舍五入处理,然后作为函数值返回。 ------------------------------------------------*/ #include #include"conio.h" voidwwjt(); floatfun(floath) { /**********Program**********/ /**********End**********/ } voidmain() { floatm; printf("Enterm: "); scanf("%f",&m); printf("\nTheresultis%8.2f\n",fun(m)); wwjt(); } voidwwjt() { FILE*IN,*OUT; ints; floatt; doubleo; IN=fopen("in.dat","r"); if(IN==NULL) { printf("ReadFILEError"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("WriteFILEError"); } for(s=1;s<=5;s++) { fscanf(IN,"%f",&t); o=fun(t); fprintf(OUT,"%8.2f\n",o); } fclose(IN); fclose(OUT); } /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 编写函数fun(inttt[M][N],intpp[N]),求二维数组tt 每列中最大元素,并依次存入一维数组pp中。 二维数组 已在主函数中赋值。 ------------------------------------------------*/ #include #include #defineM3 #defineN4 voidwwjt(); voidfun(inttt[M][N],intpp[N]) { /**********Program**********/ /**********End**********/ } intmain() { intt[M][N]={{22,45,56,30}, {19,33,45,38}, {20,22,66,40}}; intp[N],i,j,k; printf("Theoriginaldatais: \n"); for(i=0;i { for(j=0;j printf("%6d",t[i][j]); printf("\n"); } fun(t,p); printf("\nTheresultis: \n"); for(k=0;k printf("\n"); wwjt(); return0; } voidwwjt() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 题库 最终版 WPS