2021年C语言习题题库作答完整_第1页
2021年C语言习题题库作答完整_第2页
2021年C语言习题题库作答完整_第3页
2021年C语言习题题库作答完整_第4页
2021年C语言习题题库作答完整_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序填空共2题第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:编程求某年第n天日期。用数组表达月天数。-------------------------------------------------------*/#include<stdio.h>#include<stdlib.h>main(){inty,m,f,n;inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};printf("y,n=");scanf("%d,%d",&y,&n);/***********SPACE***********/f=y%4==0&&y%100!=0【||】y%400==0;/***********SPACE***********/a[1]【+=】f;if(n<1||n>365+f){printf("error!\n");exit(0);}/***********SPACE***********/for(m=1;m【>】a[m-1];n-=a[m-1],m++);printf("y=%d,m=%d,d=%d\n",y,m,n);}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------题目:下列程序从键盘输入所需数据,求出z值并输出,规定输出成果保存2位小数。-------------------------------------------------------*/#include<stdio.h>/***********SPACE***********/【#include<math.h>】main(){intx;doubley,z;/***********SPACE***********/scanf("【%d%lf】",&x,&y);z=2*x*sqrt(y);/***********SPACE***********/printf("z=【%lf】",z);}程序改错共1题第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:将s所指字符串中字母转换为按字母序列后续字母(但Z转换为A,z转换为a),其他字符不变。------------------------------------------------------*/#include<stdio.h>#include<ctype.h>#include<conio.h>voidfun(char*s) //函数定义{/***********FOUND***********/while(*s!=’0’) //字符串结尾标志为‘0’{if(*s>='A'&&*s<='Z'||*s>='a'&&*s<='z'){if(*s=='Z')*s='A';elseif(*s=='z')*s='a';else/***********FOUND***********/*s+=1; //s为字符指针,而*s为指针所指字符}/***********FOUND***********/s++}}main(){chars[80];printf("\nEnterastringwithlength<80.:\n\n");gets(s);printf("\nThestring:\n\n");puts(s);fun(s); //函数调用printf("\n\nTheCords:\n\n");puts(s);}程序填空共2题第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:计算圆周率近似值。-------------------------------------------------------*/#include<stdio.h>#include<math.h>main(){ints,n;/***********SPACE***********/double【pi】,t;t=1;pi=0;n=1;s=1;/***********SPACE***********/while(【fabs(t)】>=2e-6) //fabs()为求绝对值函数{pi+=t;n+=2;s=-s;t=s/n;}/***********SPACE***********/pi*=【4】;printf("pi=%.6f\n",pi);}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:输入一奇数n,打印由1->n*n构成魔方矩阵。魔方矩阵行列及对角线和都相等。魔方矩阵:816357492-------------------------------------------------------*/#include<stdio.h>#include<stdlib.h>#defineMAXSiZE20voidmain(void){intmatrix[MAXSiZE][MAXSiZE];intcount;introw;intcolumn;intn;charline[100];printf("\nOddnMagicSquareGenerator");printf("\n================================");printf("\n\nnPlease-->");gets(line);n=atoi(line);if(n>MAXSiZE)printf("\n***ERROR***nshouldbe<=%d",MAXSiZE);elseif(n%2==0)printf("\n***ERROR***nmustbeanoddinteger");else{row=0;column=n/2;for(count=1;count<=n*n;count++){matrix[row][column]=count;/***********SPACE***********/if(【count/n】==0)row++;else{/***********SPACE***********/row=(row==【0】)?n-1:row-1;/***********SPACE***********/column=(column==【n-1】)?0:column+1;}}printf("\n\nMagicSquareofn%d:\n\n",n);for(row=0;row<n;row++){for(column=0;column<n;column++)printf("%4d",matrix[row][column]);printf("\n");}}}程序改错共1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求1到10阶乘和。------------------------------------------------------*/#include<stdio.h>floatfac(intn); //函数声明main(){inti;floats=0;floatfac(intn); //函数声明应放在主函数之前,这句放错位置了,删了吧,也可以不改,可以运营,但良好习惯就是改/**********FOUND**********/for(i=1;i<10;i++)/**********FOUND**********/s+=fac(i); //函数调用printf("%f\n",s);}floatfac(intn) //函数定义{/**********FOUND**********/floaty=1; //int改为float,否则会导致数据丢失,固然也可以不改,毕竟你们没学到inti;for(i=1;i<=n;i++)y=y*i;/**********FOUND**********/returny;}程序填空共2题第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:删除字符串中指定字符,字符串和要删除字符均由键盘输入。-------------------------------------------------------*/#include<stdio.h>main(){charstr[80],ch;inti,k=0;/***********SPACE***********/gets(【str】); //输入字符串放入str[]ch=getchar();/***********SPACE***********/for(i=0;【str[i]】;i++) //循环到字符串结束为止if(str[i]!=ch) //如果没找到就将原字符赋值过去找到要删除就跳过继续找{/***********SPACE***********/【str[k]=str[i]】; //在同一种数组中操作,背面字符覆盖了前面要删除位置k++;}/***********SPACE***********/【str[k]=’\0’】; //在新字符串结尾处加结束符puts(str); //输出}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:输入一种整数,计算它也许是哪两个整数平方和,并打印成果数据。如:34是5和3或3和5平方和。-------------------------------------------------------*/#include<stdio.h>/*fori/Ofunctions*/#include<stdlib.h>/*foratoi()*/#include<math.h>/*forsqrt()*/voidmain(void){intgiven;/*thegivennumber*/introw,column;/*rowandcolumnindicators*/intcount;/*numberofsolutions*/charline[100];printf("\nRepresentingaGivenNumberastheSumofTwoSquares");printf("\n=====================================================\n");printf("\nAnintegerPlease--->");gets(line);given=atoi(line);printf("\nCountXY");printf("\n---------------");row=1;/*startsfromfarenough*/column=(int)(sqrt((double)given)+0.5);count=0;/*sosolutionyet*/while(row<=given&&column>0)/*scandown...*/if(row*row+column*column==given){/***********SPACE***********/【count++】;printf("\n%5d%7d%7d",count,row,column);row++;column--;}elseif(row*row+column*column>given)/***********SPACE***********/【column--】;else/***********SPACE***********/【row++】;if(count==0)printf("\n\nSorry,NOANSWERfound.");elseprintf("\n\nThereare%dpossibleanswers.",count);}程序改错共1题第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:计算并输出k以内最大10个能被13或17整除自然数之和。k值由主函数传入。例如:若k值为500,则函数值为4622。------------------------------------------------------*/#include<stdio.h>intfun(intk){intm=0,mc=0;/**********FOUND**********/while((k>=2)&&(mc<10)){/**********FOUND**********/if((k%13==0)||(k%17==0)){m=m+k;mc++;}/**********FOUND**********/k--;}/**********FOUND**********/returnm;}voidmain(){printf("%d\n",fun(500));}程序填空共2题第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:当输入“2,5”时候输出为“255”-------------------------------------------------------*/#include<stdio.h>#definemax100main(){intf[max],i,j,k,m;scanf("%d,%d",&k,&m);/***********SPACE***********/for(i=0;i<=【2】;i++)f[i]=0;/***********SPACE***********/f[【k-1】]=1;for(i=k;i<=m;i++)/***********SPACE***********/for(j=i-k;j<=i-1;j++)f[i]【=1+】f[j];printf("%d%10d%10d\n",k,m,f[m]);}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:辨认输入字符串,每个单词输出一行-------------------------------------------------------*/#include<stdio.h>#include<string.h>voidmain(){intc;intinspace;/***********SPACE***********/【inspace=0】;while((c=getchar())!='\n'){if(c==''||c=='\t'||c=='\n'){/***********SPACE***********/if(【inspace=0】){inspace=1;putchar('\n');}}else{inspace=0;/***********SPACE***********/【putchar(c)】;}}}程序改错共1题第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:用选取法对数组中n个元素按从小到大顺序进行排序。------------------------------------------------------*/#include<stdio.h>#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j<n-1;j++){/**********FOUND**********/p=j;for(i=j;i<n;i++)/**********FOUND**********/if(a[i]>a[p])/**********FOUND**********/p=i;t=a[p];a[p]=a[j];a[j]=t;}}main(){inta[N]={9,6,8,3,-1},i,m=5;printf("排序前数据:");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");fun(a,m);printf("排序后数据:");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");}程序填空共2题第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:产生10个[30,90]区间上随机整数,然后对其用选取法进行由小到大排序。-------------------------------------------------------*/#include<stdio.h>#include<stdlib.h>main(){/***********SPACE***********/intt; inti,j,k;inta[10];for(i=0;i<10;i++)a[i]=rand()%61+30;for(i=0;i<9;i++){/***********SPACE***********/k=i;for(j=i+1;j<10;j++)/***********SPACE***********/if(a[k]>a[j])k=j;if(k!=i){t=a[k];a[k]=a[i];a[i]=t;}}/***********SPACE***********/for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:输入一正整数n、打印1-n可以构成所有自然数集合(包括空集)。-------------------------------------------------------*/#include<stdio.h>#include<stdlib.h>#defineMAXSiZE20#defineLOOP1voidmain(void){intset[MAXSiZE];intn,i;intposition;charline[100];printf("\nAllPossibleSubsetsGenerationbyLexicalOrder");printf("\n================================================");printf("\n\nNumberofElementsintheSet-->");gets(line);n=atoi(line);printf("\n{}");position=0;set[position]=1;while(LOOP){/***********SPACE***********/printf("\n{%d",【?】);for(i=1;i<=position;i++)printf(",%d",set[i]);printf("}");if(set[position]<n){/***********SPACE***********/set[【?】]=set[position]+1;position++;}elseif(position!=0)set[--position]++;else/***********SPACE***********/【?】;}}程序改错第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求出如下分数序列前n项之和。和值通过函数值返回main函数。2/1+3/2+5/3+8/5+13/8+21/13……例如:若n=5,则应输出:8.391667。------------------------------------------------------*/#include<conio.h>#include<stdio.h>/**********FOUND**********/fun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k<=n;k++){/**********FOUND**********/s=(double)a/b;c=a;a=a+b;b=c;}/**********FOUND**********/returnc;}main(){intn=5;printf("\nThevalueoffunctionis:%lf\n",fun(n));}程序填空共2题第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:输出成果为:********************-------------------------------------------------------*/#include<stdio.h>main(){/***********SPACE***********/staticchar【?】={'*','*','*','*','*'};inti,j,k;charspace='';for(i=0;i<5;i++){printf("\n");for(j=1;j<=3*i;j++)/***********SPACE***********/printf("%1c",【?】);/***********SPACE***********/for(k=0;k<【?】;k++)printf("%3c",a[k]);}printf("\n");;}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:给出一种正整数,找到一组持续数,使之累加和等于给定正整数。输出存在多少组这样持续数,及每组左右边界。例如:15=1+2+3+4+515=4+5+615=7+8因此成果有3组值分别是1->5,4->6,7->8-------------------------------------------------------*/#include<stdio.h>#include<stdlib.h>voidmain(void){longleft,right;longsum;longGiVEN;intcount=0;charline[100];printf("\nConsecutivesumtoafixedgivennumber");printf("\n=======================================\n");printf("\nYournumber(>0)please--->");gets(line);GiVEN=atol(line);for(sum=0,right=1;sum<GiVEN;sum+=right,right++);for(left=1,right--;left<=GiVEN/2;)if(sum>GiVEN){sum-=left;/***********SPACE***********/【?】;}else{if(sum==GiVEN){printf("\n%ld=sumfrom%ldto%ld",GiVEN,left,right);/***********SPACE***********/【?】;}/***********SPACE***********/【?】;sum+=right;}if(count>0)printf("\n\nThereare%dsolutionsintotal.",count);elseprintf("\n\nSorry,thereisNOsolutionatall.");}程序改错第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:编写函数fun计算下列分段函数值:x*20x<0且x≠-3f(x)=sin(x)0≤x<10且x≠2及x≠3x*x+x-1其他------------------------------------------------------*/#include<math.h>#include<stdio.h>doublefun(doublex){/**********FOUND**********/doubley/**********FOUND**********/if(x<0||x!=-3.0)y=x*20;elseif(x>=0&&x<10.0&&x!=2.0&&x!=3.0)y=sin(x);elsey=x*x+x-1;/**********FOUND**********/returnx;}main(){doublex,f;printf("inputx=");scanf("%f",&x);f=fun(x);printf("x=%f,f(x)=%f\n",x,f);}程序填空共2题第1题/*------------------------------------------------------【程序填空】---------------------------------------------------------功能:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数-------------------------------------------------------*/#include<stdio.h>/***********SPACE***********/move(【?】)intn,m,array[20];{int*p,array_end;/***********SPACE***********/array_end=*(【?】);for(p=array+n-1;p>array;p--)/***********SPACE***********/*p=*(【?】);*array=array_end;m--;if(m>0)move(array,n,m);}main(){intnumber[20],n,m,i;printf("thetotalnumbersis:");scanf("%d",&n);printf("backm:");scanf("%d",&m);for(i=0;i<n-1;i++)scanf("%d,",&number[i]);scanf("%d",&number[n-1]);/***********SPACE***********/move(【?】);for(i=0;i<n-1;i++)printf("%d,",number[i]);printf("%d",number[n-1]);}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:打印出如下图案(菱形)*************************-------------------------------------------------------*/#include<stdio.h>main(){inti,j,k;/***********SPACE***********/for(i=0;【?】;i++){for(j=0;j<=4-i;j++)printf("");/***********SPACE***********/for(k=1;k<=【?】;k++)printf("*");printf("\n");}/***********SPACE***********/for(【?】;j<3;j++){for(k=0;k<j+3;k++)printf("");for(k=0;k<5-2*j;k++)printf("*");printf("\n");}}程序改错共1题第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求1到20阶乘和。------------------------------------------------------*/#include<stdio.h>fun(){intn,j;floats=0.0,t=1.0;for(n=1;n<=20;n++){/**********FOUND**********/s=1;for(j=1;j<=n;j++)/**********FOUND**********/t=t*n;/**********FOUND**********/s+t=s;}/**********FOUND**********/printf("jiecheng=%d\n",s);}main(){fun();}程序填空共2题第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:运用全局变量计算长方体体积及三个面面积。-------------------------------------------------------*/#include<stdio.h>ints1,s2,s3;intvs(inta,intb,intc){intv;/***********SPACE***********/v=【?】;s1=a*b;/***********SPACE***********/s2=【?】;s3=a*c;returnv;}main(){intv,l,w,h;printf("\ninputlength,widthandheight:");/***********SPACE***********/scanf("%d%d%d",【?】,&w,&h);/***********SPACE***********/v=【?】;printf("v=%ds1=%ds2=%ds3=%d\n",v,s1,s2,s3);}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:建立一种如下二维数组,并按如下格式输出。1000101010001000101010001-------------------------------------------------------*/#include<stdio.h>voidmain(){inta[5][5]={0},*p[5],i,j;for(i=0;i<5;i++)/***********SPACE***********/p[i]=【?】;for(i=0;i<5;i++){/***********SPACE***********/*(【?】+i)=1;/***********SPACE***********/*(p[i]+5-(【?】))=1;}for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%2d",p[i][j]);/***********SPACE***********/【?】;}}程序改错共1题第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:先将在字符串s中字符按逆序存储到t串中,然后把s中字符按正序连接到t串背面。例如:当s中字符串为:“ABCDE”时,则t中字符串应为:“EDCBAABCDE”。------------------------------------------------------*/#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,char*t){/**********FOUND**********/inti;sl=strlen(s);for(i=0;i<sl;i++)/**********FOUND**********/t[i]=s[sl-i];for(i=0;i<sl;i++)t[sl+i]=s[i];/**********FOUND**********/t[2*sl]="0";}main(){chars[100],t[100];printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("Theresultis:%s\n",t);}程序填空共2题第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:从键盘输入若干行字符,输入后把她们存储到一磁盘文献中。在从该文献中读出这些数据,将其中小写字母转换成大写字母后在屏幕上输出。-------------------------------------------------------*/#include<stdio.h>#include<stdlib.h>#defineN100main(){FILE*fp;charc,*p,s[N][20];inti,n;printf("n=");scanf("%d",&n);/***********SPACE***********/if(n<1【?】n>N)exit(0);printf("input%dstring:\n",n);for(i=0;i<n;i++)scanf("%s",s[i]);/***********SPACE***********/fp=fopen("text",【?】);for(i=0;i<n;i++){p=s[i];while(*p!='\0')/***********SPACE***********/if(!ferror(fp))fputc(【?】,fp);}fclose(fp);printf("\n");/***********SPACE***********/fp=fopen("text",【?】);while((c=fgetc(fp))!=EOF){if(c>'a'&&c<='z')c=+32;putchar(c);}printf("\n");fclose(fp);}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:输出100到1000之间各位数字之和能被15整除所有数,输出时每10个一行。-------------------------------------------------------*/#include<stdio.h>main(){intm,n,k,i=0;for(m=100;m<=1000;m++){/***********SPACE***********/【?】;n=m;do{/***********SPACE***********/k=k+【?】;n=n/10;}/***********SPACE***********/【?】;if(k%15==0){printf("%5d",m);i++;/***********SPACE***********/if(i%10==0)【?】;}}}程序改错共1题第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:在一种已按升序排列数组中插入一种数,插入后,数组元素仍按升序排列。------------------------------------------------------*/#include<stdio.h>#defineN11main(){inti,number,a[N]={1,2,4,6,8,9,12,15,149,156};printf("pleaseenteranintegertoinsertinthearray:\n");/**********FOUND**********/scanf("%d",&number)printf("Theoriginalarray:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********FOUND**********/for(i=N-1;i>=0;i--)if(number<=a[i])/**********FOUND**********/a[i]=a[i-1];else{a[i+1]=number;/**********FOUND**********/exit;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论