c语言实验复习资料

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3.给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。(注意:程序采用嵌套的if语句来实现,测试数据应该包含1位、2位、3位、4位和5位整数的情况,同时还应当考虑对不合法的输入(即负数和大于5位的数字)给出提示:“输入的数据不合题目要求”)#includestdio.hintmain(){intnum;printf(请输入一个不多于5位的正整数\n);scanf(%d,&num);if(num0)printf(输入出错,输入的数据不合题目要求);elseif(num0&&num10)printf(%d是一个1位数,其逆序值为%d,num,num);elseif(num=10&&num100)printf(%d是一个2位数,其逆序值为%d%d,num,num%10,num/10);elseif(num=100&&num1000)printf(%d是一个3位数,其逆序值为%d%d%d,num,num%10,(num/10)%10,num/100);elseif(num=1000&&num10000)printf(%d是一个4位数,其逆序值为%d%d%d%d,num,num%10,(num/10)%10,(num/100)%10,num/1000);elseif(num=10000&&num=100000)printf(%d是一个5位数,其逆序值为%d%d%d%d%d,num,num%10,(num/10)%10,(num/100)%10,(num/1000)%10,num/10000);elseprintf(输入出错,输入的数据不合题目要求);return0;}4.输入四个整数,要求按由小到大顺序输出。(注意:四个数都从键盘输入)#includestdio.hintmain(){intnum1,num2,num3,num4,t;printf(请输入4个整数\n);scanf(%d%d%d%d,&num1,&num2,&num3,&num4);if(num1num2){t=num1;num1=num2;num2=t;}if(num3num4){t=num3;num3=num4;num4=t;}if(num1num3){t=num1;num1=num3;num3=t;}if(num2num4){t=num2;num2=num4;num4=t;1}if(num2num3){t=num2;num2=num3;num3=t;}printf(从小到大排序后的数字为:%d%d%d%d\n,num1,num2,num3,num4);return0;}1.输入两个正整数m和n,求其最大公约数和最小公倍数。(提示:最小公倍数=两个数的乘积/两个数的最大公约数)#includestdio.hintmain(){inti,m,n,temp;intgongyueshu,gongbeishu;scanf(%d%d,&m,&n);if(mn){temp=n;n=m;m=temp;}temp=n*m;for(i=m;i1;i--){if(m%i==0&&n%i==0){gongyueshu=i;break;}}gongbeishu=temp/gongyueshu;printf(最大公约数和最小公倍数分别为%d和%d\n,gongyueshu,gongbeishu);return0;#includestdio.hintmain(){intr,m,n,temp;intgongyueshu,gongbeishu;scanf(%d%d,&m,&n);if(mn){temp=n;n=m;m=temp;}temp=n*m;r=n%m;while(r!=0){n=m;2m=r;r=n%m;}//“辗转相除法”求最大公约数gongyueshu=m;gongbeishu=temp/gongyueshu;printf(最大公约数和最小公倍数分别为%d和%d\n,gongyueshu,gongbeishu);}2.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序找出100之内的所有完数,并输出。#includestdio.h#includemath.hintmain(){inti,j,sum=0;for(i=1;i=1000;i++){for(j=1;j=i/2;j++)if(i%j==0)sum=sum+j;if(sum==i)printf(%d,i);sum=0;}printf(\n);return0;}2.有一个已排好序的整型数组,要求输入一个整数后,按原来排序的规律将它插入数组中。#includestdio.hintmain(){inti,num,key;inta[11];printf(请按升序或者降序输入数组的10个整型元素:);for(i=0;i10;i++)scanf(%d,&a[i]);printf(\n请输入要插入数组的元素:);scanf(%d,&num);for(i=0;i9;i++)if(num=a[i]&&num=a[i+1])key=i+1;elseif(num=a[i]&&num=a[i+1])key=i+1;for(i=9;i=key;i--)3a[i+1]=a[i];a[key]=num;printf(插入元素%d后的数组为:,num);for(i=0;i11;i++)printf(%d,a[i]);printf(\n);}3.有15个整数按由大到小顺序存放在一个数组中,输入一个整数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。(数组元素通过键盘输入)#includestdio.h#defineN15intmain(){inti,num,a[N];intlow=0,high=N-1,pos,key=-1;printf(请按降序输入数组的%d个整型元素:,N);for(i=0;iN;i++)scanf(%d,&a[i]);printf(\n请输入要查找的元素:);scanf(%d,&num);while(low=high){pos=(low+high)/2;if(num==a[pos]){key=pos;break;}elseif(numa[pos])low=pos+1;elsehigh=pos-1;}if(key!=-1)printf(插入元素是数组的第%d个元素\n,key);elseprintf(无此数\n);return0;}1.有一篇文章,共有3行文字,每行可以最多80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。#includestdio.hintmain(){inti,j,uppercase=0,lowercase=0,number=0,space=0,other=0;charstring[3][80];for(i=0;i3;i++){4gets(string[i]);for(j=0;j80&&string[i][j]!='\0';j++){if(string[i][j]='A'&&string[i][j]='Z')uppercase++;elseif(string[i][j]='a'&&string[i][j]='z')lowercase++;elseif(string[i][j]='0'&&string[i][j]='9')number++;elseif(string[i][j]=='')space++;elseother++;}printf(uppercase:%d,lowercase:%d,number:%d,space:%d,other:%d\n,uppercase,lowercase,number,space,other);uppercase=0;lowercase=0;number=0;space=0;other=0;}return0;}2.编写程序,将两个字符串连接起来,不能用strcat函数。#includestdio.hintmain(){inti,j;chars1[80],s2[40];printf(pleaseinputstring1:);scanf(%s,s1);printf(pleaseinputstring2:);scanf(%s,s2);i=0;j=0;while(s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf(thenewstringis:%s\n,s1);return0;}3.编写程序,将字符数组s2中的全部字符拷贝到字符组s1中,不用strcpy函数。拷贝时,’\0’也要拷贝过去。’\0’后面的字符不拷贝。5#includestdio.h#includestring.hintmain(){inti;chars1[40],s2[40];printf(pleaseinputstring2:);gets(s2);for(i=0;i=strlen(s2);i++)//i=strlen(s2)必须包含等于才能把’\0’复制进去s1[i]=s2[i];printf(string1is:%s\n,s1);return0;}1.写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。intgongyueshu(intm,intn){inttemp,r;if(mn){temp=n;n=m;m=temp;}temp=n*m;r=n%m;while(r!=0){n=m;m=r;r=n%m;}return(m);//辗转相除法求最大公约数}intgongbeishu(intm,intn,intp){//已知最大公约数p的情况下,求m,n的最小公倍数return(m*n/p);}#includestdio.hintmain(){intm,n,p,q;printf(请输入两个整数:);scanf(%d%d,&m,&n);p=gongyueshu(m,n);q=gongbeishu(m,n,p);printf(最大公约数和最小公倍数分别为%d和%d\n,p,q);6}2.写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。#includestdio.h#includestring.hintmain(){intinverse(charstr[]);charstr[100];printf(pleseinputastring:);gets(str);inverse(str);printf(inversestring:%s\n,str);}intinverse(charstr[]){chart;inti,j;for(i=0,j=strlen(str);istrlen(str)/2;i++,j--){t=str[i];str[i]=str[j-1];str[j-1]=t;}return0;}3.用递归方法求n阶勒让德多项式的值,递归公式为)1()1()0(/))()1()()12((1)(21nnnnxpnxpxnxxpnnnintfunp(intn,intx){if(n==0)return1;elseif(n==1)returnx;elsereturn((2*n-1)*x*funp(n-1,x)-(n-1)*funp(n-2,x))/n;}#includestdio.hintmain(){intx,n,t;printf(pleseinputnandx:);7scanf(%d%d,&n,&x);t=funp(n,x);printf(pnis:%d\n,t

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功