C语言作业.docx
《C语言作业.docx》由会员分享,可在线阅读,更多相关《C语言作业.docx(38页珍藏版)》请在冰豆网上搜索。
C语言作业
7.1用筛法求之内的素数。
main()
{inti,j,a[100];
for(i=2;i<100;i++)
{a[i]=i;
for(j=2;j<=i;j++)
{if(j
if(a[i]%j==0)
break;
if(a[i]-j==0)
printf("%5d",a[i]);
}
printf("\n");
或
#include"math.h"
{staticinti,j,k,a[98];
{a[i]=i;k=sqrt(i);
for(j=2;j<=a[i];j++)
if(jbreak;if(j>=k+1)printf("%5d",a[i]);}printf("\n");}7.2用选择法对10个整数从小到大排序。main(){inti,j,a[10],t;for(i=0;i<10;i++)scanf("%d",&a[i]);for(j=1;j<10;j++)for(i=0;i<=9-j;i++)if(a[i]>a[i+1]){t=a[i+1];a[i+1]=a[i];a[i]=t;}for(i=0;i<10;i++)printf("%5d",a[i]);}或main(){staticinta[10],i,j,k,t;for(i=1;i<11;i++)scanf("%d",&a[i]);for(j=1;j<10;j++)for(i=1;i<=10-j;j++)if(a[i]>a[i+1]){t=a[i+1];a[i+1]=a[i];a[i]=t;}for(i=1;i<11;i++)printf("%d",a[i]);printf("\n");}7.3求一个3×3矩阵对角线元素之和。main(){inti=0,j=0,a[3][3],s1,s2;for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);s1=a[0][0]+a[1][1]+a[2][2];s2=a[0][2]+a[1][1]+a[2][0];printf("s1=%d,s2=%d\n",s1,s2);}或main(){staticinti,j,s1,s2,a[3][3];for(i=1;i<=3;i++)for(j=1;j<=3;j++)scanf("%d",&a[i][j]);s1=a[1][1]+a[2][2]+a[3][3];s2=a[1][3]+a[2][2]+a[3][1];printf("%d,%d\n",s1,s2);}7.4已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。main(){staticinta[10]={1,7,8,17,23,24,59,62,101};inti,j,t;scanf("%d",&a[9]);for(i=9;i>0;i--)if(a[i]{t=a[i-1];a[i-1]=a[i];a[i]=t;}for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");}或main(){staticinta[5]={1,4,5,6,7};inti,t,b;scanf("%d",&b);for(i=0;i<5;i++){if(b<=a[i]){t=a[i];a[i]=b;b=t;}printf("%d",a[i]);}printf("%d",b);}7.5将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。main(){inti,b[10];for(i=0;i<10;i++)scanf("%d",&b[i]);for(i=9;i>-1;i--)printf("%5d",b[i]);printf("\n");}7.6打印出以下杨辉三角形(要求打印出10行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1∶∶main(){staticintm,n,k,b[15][15];b[0][1]=1;for(m=1;m<15;m++){for(n=1;n<=m;n++){b[m][n]=b[m-1][n-1]+b[m-1][n];printf("%-5d",b[m][n]);}printf("\n");}}}或main(){inti,j,n,k,a[10][10];statica[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}};a[1][1]=1;for(k=2,k<11;k++)for(i=2;i<=k;i++)for(j=2;j<=i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(k=1;k<11;k++)for(i=1;i<=k;i++)for(j=1;j<=i;j++)printf("%d",a[i][j]);}7.7打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为816357492要求打印出由1~n2的自然数构成的魔方阵。解:#includemain(){inta[16][16],i,i,k,p,m,n;p=1;while(p==1)/*要求阶数为1~15的商数*/{printf("Entern(n=1~15):");scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0;}for(i=1;i<=n;i++)/*初始化*/for(j=1;j<=n;j++)a[i][j]=0;j=n/2+1;/*建立魔方阵*/a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;}else{if(i<1)i=n;if(j>n)j=1;}if(a[i][j]==0)a[i][j]=k;else{i=i+2;j=j-1;a[i][j]=k;}}for(i=1;i<=n;i++)/*输出魔方阵*/{for(j=1;j<=n;j++)printf("%4d",a[i][j]);printf("\n");}}7.8找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。main(){inta[5][5],b[5],c[5],d[5][5],k=0,l=0;inti,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&d[i][j]);for(i=0;i<5;i++)for(j=0;j<5;j++,a[i][j]=d[i][j]);for(i=0,k=0;i<5;i++,k++)for(j=0;j<4;j++){if(a[i][j]>=a[i][j+1])b[k]=a[i][j+1]=a[i][j];elseb[k]=a[i][j+1];}for(j=0,l=0;j<5;j++,l++)for(i=0;i<4;i++){if(a[i][j]<=a[i+1][j])c[l]=a[i+1][j]=a[i][j];elsec[l]=a[i+1][j];}for(i=0,k=0;i<5;i++,k++)for(j=0,l=0;j<5;j++,l++)if(d[i][j]-b[k]==0){if(d[i][j]-c[l]==0)printf("d[%d][%d]=%d\n",i,j,d[i][j]);elseprintf("d[%d][%d]=%disnotandi\n",i,j,d[i][j]);}}7.9有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出"无此数"#include"math.h"main(){staticinti,j,m,a[15]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812};scanf("%d",&m);for(j=0;j<15;j++)printf("%4d",a[j]);printf("\n");i=7;while(fabs(i-7)<8){if(m{if(a[i]-m==0){printf("itisat(%d)\n",i+1);break;}i--;}elseif(m>a[7]){if(a[i]-m==0){printf("itisat(%d)\n",i+1);break;}i++;}elseprintf("8\n");}if(fabs(i-7)-8==0)printf("Thereisnot\n");}7.10有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。main(){inti,j=0,k=0,l=0,m=0,n=0;charstr0[301],str1[100],str2[100],str3[100];gets(str1);gets(str2);gets(str3);strcat(str0,str1);strcat(str0,str2);strcat(str0,str3);for(i=0;str0[i]!=’\0’;i++){if(str0[i]>=65&&str0[i]<=90)j++;elseif(str0[i]>=97&&str0[i]<=122)k++;elseif(str0[i]>=48&&str0[i]<=57)l++;elseif(str0[i]==32)m++;elsen++;}printf("DaxieXiaoxieShuziKonggeQita\n");printf("%5d%7d%5d%6d%4d\n",j,k,l,m,n);}7.11打印以下图案* * * * ** * * * ** * * * *** * * ** * * * *main(){inti,j,k;chara[5][5];for(i=0;i<5;i++){for(j=0;j<5;j++){a[i][j]=’*’;printf("%c",a[i][j]);}printf("\n");for(k=1;k<=i+1;k++)printf("\40");}printf("\n");}7.12有一行电文译文下面规律译成密码:A->Z a->zB->Y b->yC->X c->x…即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。main(){inti;charstr1[100],str2[100];gets(str1);for(i=0;str1[i]!=’\0’;i++)if(str1[i]>=65&&str1[i]<=90)str2[i]=155-str1[i];elseif(str1[i]>=97&&str1[i]<=122)str2[i]=219-str1[i];elsestr2[i]=str1[i];printf("%s\n%s\n",str1,str2);}7.13编一程序,将两个字符串连接起来,不要strcat函数。main(){inti,j;charstr1[100],str2[100],str3[201];gets(str1);gets(str2);for(i=0;str1[i]!=’\0’;i++)str3[i]=str1[i];for(j=0;str2[j]!=’\0’;j++)str3[j+i]=str2[j];printf("%s\n%s\n%s\n",str1,str2,str3);}7.14编一个程序,将两个字符串S1和S2比较,如果S1>S2,输出一个正数;S1=S2,输出0;S1不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,’A’与’C’相比,由于’A’<’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出"-2"。同理:"And"和"Aid"比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出"5"。#include#includemain(){inti,resu;chars1[100],s2[100];printf("\ninputstring1:");gets(s1);printf("\nInputstring2:");gets(s2);i=0;while(s1[i]==s2[i]&&s1[i]!=’\0’)i++;if(s1[i]==’\0’&&s2[i]==’0’)resu=0;elseresu=s1[i]-s2[i];printf("\nresult:%d\n",resu);}7.15编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。解:#include"stdio.h"main(){chars1[80],s2[80];inti;printf("Inputs2:");scanf("%s",s2);for(i=0;is1[i]=s2[i];printf("s1:%s\n",s1);}#includeintmain(){inta[10];inti=0,j=0;intmax,temp;for(i=0;i<8;++i){printf("Pleaseinputthe%dthnumber:",i+1);scanf("%d",&a[i]);}printf("Thearryhasbeeninputis:\n");for(i=0;i<8;i++){printf("%d,",a[i]);}printf("\n");for(i=0;i<8;i++){max=i;for(j=i;j<8;j++){max=((a[j]>a[max])?j:max);}temp=a[max];a[max]=a[i];a[i]=temp;}printf("Thearryaftersortis:\n");for(i=0;i<8;++i){printf("%d,",a[i]);}printf("\n");printf("Plesaeinputanothernumber:");scanf("%d",&temp);for(i=0;i<8;i++){if(temp>a[i]){break;}}for(j=8;j>=i;--j){a[j]=a[j-1];}a[i]=temp;for(i=0;i<9;i++){printf("%d",a[i]);}getchar();return0;}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。main(){longm,n,i=1,j,s;scanf("%ld,%ld",&m,&n);for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)s=i;}if(m>=n)j=m;elsej=n;for(;!(j%m==0&&j%n==0);j++);printf("s=%ld,j=%ld\n",s,j);}6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include"stdio.h"main(){charc;inti=0,j=0,k=0,l=0;while((c=getchar())!=’\n’){if(c>=65&&c<=90||c>=97&&c<=122)i++;elseif(c>=48&&c<=57)j++;elseif(c==32)k++;elsel++;}printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);}6.3求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。#include"math.h"main(){intn,sum=0,i=1,s=2;scanf("%d",&n);while(i<=n){sum=sum+s;s=s+2*pow(10,i);i++;}printf("sum=%d\n",sum);}6.4求,(即求1!+2!+3!+4!+5!+…+20!)main(){intn,i=1;longsum=0,s=1;scanf("%d",&n);while(i<=n){s=s*i;sum=sum+s;i++;}printf("sum=%ld\n",sum);}6.5求main(){doublei=1,j=1,k=1,s1=0,s2=0,s3=0,sum;for(;i<=100;i++)s1=s1+i;for(;j<=50;j++)s2=s2+j*j;for(;k<=10;k++)s3=s3+1/k;sum=s1+s2+s3;printf("sum=%f\n",sum);}6.6打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。#include"math.h"main(){intx=100,a,b,c;while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d",x);x++;}}6.7一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1、2、3main(){intm,i,j,s;for(m=6;m<10000;m++){s=1;for(i=2;iif(m%i==0)s=s+i;if(m-s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}或main(){intm,i,j,s;for(m=6;m<1000;m++){s=m-1;for(i=2;iif(m%i==0)s=s-i;if(s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
if(j>=k+1)
7.2用选择法对10个整数从小到大排序。
{inti,j,a[10],t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=0;i<=9-j;i++)
if(a[i]>a[i+1])
{t=a[i+1];a[i+1]=a[i];a[i]=t;}
{staticinta[10],i,j,k,t;
for(i=1;i<11;i++)
for(i=1;i<=10-j;j++)
printf("%d",a[i]);
7.3求一个3×3矩阵对角线元素之和。
{inti=0,j=0,a[3][3],s1,s2;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
s1=a[0][0]+a[1][1]+a[2][2];
s2=a[0][2]+a[1][1]+a[2][0];
printf("s1=%d,s2=%d\n",s1,s2);
{
staticinti,j,s1,s2,a[3][3];
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
s1=a[1][1]+a[2][2]+a[3][3];
s2=a[1][3]+a[2][2]+a[3][1];
printf("%d,%d\n",s1,s2);
7.4已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。
{staticinta[10]={1,7,8,17,23,24,59,62,101};inti,j,t;
scanf("%d",&a[9]);
for(i=9;i>0;i--)
if(a[i]{t=a[i-1];a[i-1]=a[i];a[i]=t;}for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");}或main(){staticinta[5]={1,4,5,6,7};inti,t,b;scanf("%d",&b);for(i=0;i<5;i++){if(b<=a[i]){t=a[i];a[i]=b;b=t;}printf("%d",a[i]);}printf("%d",b);}7.5将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。main(){inti,b[10];for(i=0;i<10;i++)scanf("%d",&b[i]);for(i=9;i>-1;i--)printf("%5d",b[i]);printf("\n");}7.6打印出以下杨辉三角形(要求打印出10行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1∶∶main(){staticintm,n,k,b[15][15];b[0][1]=1;for(m=1;m<15;m++){for(n=1;n<=m;n++){b[m][n]=b[m-1][n-1]+b[m-1][n];printf("%-5d",b[m][n]);}printf("\n");}}}或main(){inti,j,n,k,a[10][10];statica[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}};a[1][1]=1;for(k=2,k<11;k++)for(i=2;i<=k;i++)for(j=2;j<=i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(k=1;k<11;k++)for(i=1;i<=k;i++)for(j=1;j<=i;j++)printf("%d",a[i][j]);}7.7打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为816357492要求打印出由1~n2的自然数构成的魔方阵。解:#includemain(){inta[16][16],i,i,k,p,m,n;p=1;while(p==1)/*要求阶数为1~15的商数*/{printf("Entern(n=1~15):");scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0;}for(i=1;i<=n;i++)/*初始化*/for(j=1;j<=n;j++)a[i][j]=0;j=n/2+1;/*建立魔方阵*/a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;}else{if(i<1)i=n;if(j>n)j=1;}if(a[i][j]==0)a[i][j]=k;else{i=i+2;j=j-1;a[i][j]=k;}}for(i=1;i<=n;i++)/*输出魔方阵*/{for(j=1;j<=n;j++)printf("%4d",a[i][j]);printf("\n");}}7.8找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。main(){inta[5][5],b[5],c[5],d[5][5],k=0,l=0;inti,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&d[i][j]);for(i=0;i<5;i++)for(j=0;j<5;j++,a[i][j]=d[i][j]);for(i=0,k=0;i<5;i++,k++)for(j=0;j<4;j++){if(a[i][j]>=a[i][j+1])b[k]=a[i][j+1]=a[i][j];elseb[k]=a[i][j+1];}for(j=0,l=0;j<5;j++,l++)for(i=0;i<4;i++){if(a[i][j]<=a[i+1][j])c[l]=a[i+1][j]=a[i][j];elsec[l]=a[i+1][j];}for(i=0,k=0;i<5;i++,k++)for(j=0,l=0;j<5;j++,l++)if(d[i][j]-b[k]==0){if(d[i][j]-c[l]==0)printf("d[%d][%d]=%d\n",i,j,d[i][j]);elseprintf("d[%d][%d]=%disnotandi\n",i,j,d[i][j]);}}7.9有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出"无此数"#include"math.h"main(){staticinti,j,m,a[15]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812};scanf("%d",&m);for(j=0;j<15;j++)printf("%4d",a[j]);printf("\n");i=7;while(fabs(i-7)<8){if(m{if(a[i]-m==0){printf("itisat(%d)\n",i+1);break;}i--;}elseif(m>a[7]){if(a[i]-m==0){printf("itisat(%d)\n",i+1);break;}i++;}elseprintf("8\n");}if(fabs(i-7)-8==0)printf("Thereisnot\n");}7.10有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。main(){inti,j=0,k=0,l=0,m=0,n=0;charstr0[301],str1[100],str2[100],str3[100];gets(str1);gets(str2);gets(str3);strcat(str0,str1);strcat(str0,str2);strcat(str0,str3);for(i=0;str0[i]!=’\0’;i++){if(str0[i]>=65&&str0[i]<=90)j++;elseif(str0[i]>=97&&str0[i]<=122)k++;elseif(str0[i]>=48&&str0[i]<=57)l++;elseif(str0[i]==32)m++;elsen++;}printf("DaxieXiaoxieShuziKonggeQita\n");printf("%5d%7d%5d%6d%4d\n",j,k,l,m,n);}7.11打印以下图案* * * * ** * * * ** * * * *** * * ** * * * *main(){inti,j,k;chara[5][5];for(i=0;i<5;i++){for(j=0;j<5;j++){a[i][j]=’*’;printf("%c",a[i][j]);}printf("\n");for(k=1;k<=i+1;k++)printf("\40");}printf("\n");}7.12有一行电文译文下面规律译成密码:A->Z a->zB->Y b->yC->X c->x…即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。main(){inti;charstr1[100],str2[100];gets(str1);for(i=0;str1[i]!=’\0’;i++)if(str1[i]>=65&&str1[i]<=90)str2[i]=155-str1[i];elseif(str1[i]>=97&&str1[i]<=122)str2[i]=219-str1[i];elsestr2[i]=str1[i];printf("%s\n%s\n",str1,str2);}7.13编一程序,将两个字符串连接起来,不要strcat函数。main(){inti,j;charstr1[100],str2[100],str3[201];gets(str1);gets(str2);for(i=0;str1[i]!=’\0’;i++)str3[i]=str1[i];for(j=0;str2[j]!=’\0’;j++)str3[j+i]=str2[j];printf("%s\n%s\n%s\n",str1,str2,str3);}7.14编一个程序,将两个字符串S1和S2比较,如果S1>S2,输出一个正数;S1=S2,输出0;S1不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,’A’与’C’相比,由于’A’<’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出"-2"。同理:"And"和"Aid"比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出"5"。#include#includemain(){inti,resu;chars1[100],s2[100];printf("\ninputstring1:");gets(s1);printf("\nInputstring2:");gets(s2);i=0;while(s1[i]==s2[i]&&s1[i]!=’\0’)i++;if(s1[i]==’\0’&&s2[i]==’0’)resu=0;elseresu=s1[i]-s2[i];printf("\nresult:%d\n",resu);}7.15编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。解:#include"stdio.h"main(){chars1[80],s2[80];inti;printf("Inputs2:");scanf("%s",s2);for(i=0;is1[i]=s2[i];printf("s1:%s\n",s1);}#includeintmain(){inta[10];inti=0,j=0;intmax,temp;for(i=0;i<8;++i){printf("Pleaseinputthe%dthnumber:",i+1);scanf("%d",&a[i]);}printf("Thearryhasbeeninputis:\n");for(i=0;i<8;i++){printf("%d,",a[i]);}printf("\n");for(i=0;i<8;i++){max=i;for(j=i;j<8;j++){max=((a[j]>a[max])?j:max);}temp=a[max];a[max]=a[i];a[i]=temp;}printf("Thearryaftersortis:\n");for(i=0;i<8;++i){printf("%d,",a[i]);}printf("\n");printf("Plesaeinputanothernumber:");scanf("%d",&temp);for(i=0;i<8;i++){if(temp>a[i]){break;}}for(j=8;j>=i;--j){a[j]=a[j-1];}a[i]=temp;for(i=0;i<9;i++){printf("%d",a[i]);}getchar();return0;}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。main(){longm,n,i=1,j,s;scanf("%ld,%ld",&m,&n);for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)s=i;}if(m>=n)j=m;elsej=n;for(;!(j%m==0&&j%n==0);j++);printf("s=%ld,j=%ld\n",s,j);}6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include"stdio.h"main(){charc;inti=0,j=0,k=0,l=0;while((c=getchar())!=’\n’){if(c>=65&&c<=90||c>=97&&c<=122)i++;elseif(c>=48&&c<=57)j++;elseif(c==32)k++;elsel++;}printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);}6.3求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。#include"math.h"main(){intn,sum=0,i=1,s=2;scanf("%d",&n);while(i<=n){sum=sum+s;s=s+2*pow(10,i);i++;}printf("sum=%d\n",sum);}6.4求,(即求1!+2!+3!+4!+5!+…+20!)main(){intn,i=1;longsum=0,s=1;scanf("%d",&n);while(i<=n){s=s*i;sum=sum+s;i++;}printf("sum=%ld\n",sum);}6.5求main(){doublei=1,j=1,k=1,s1=0,s2=0,s3=0,sum;for(;i<=100;i++)s1=s1+i;for(;j<=50;j++)s2=s2+j*j;for(;k<=10;k++)s3=s3+1/k;sum=s1+s2+s3;printf("sum=%f\n",sum);}6.6打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。#include"math.h"main(){intx=100,a,b,c;while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d",x);x++;}}6.7一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1、2、3main(){intm,i,j,s;for(m=6;m<10000;m++){s=1;for(i=2;iif(m%i==0)s=s+i;if(m-s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}或main(){intm,i,j,s;for(m=6;m<1000;m++){s=m-1;for(i=2;iif(m%i==0)s=s-i;if(s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
{t=a[i-1];a[i-1]=a[i];a[i]=t;}
printf("%5d",a[i]);printf("\n");
staticinta[5]={1,4,5,6,7};
inti,t,b;
scanf("%d",&b);
for(i=0;i<5;i++)
{if(b<=a[i])
{t=a[i];a[i]=b;b=t;}
printf("%d",a[i]);}
printf("%d",b);
7.5将一个数组的值按逆序重新存放,例如,原来顺序为:
8,6,5,4,1。
要求改为:
1,4,5,6,8。
{inti,b[10];
scanf("%d",&b[i]);
for(i=9;i>-1;i--)
printf("%5d",b[i]);
printf("\n");}
7.6打印出以下杨辉三角形(要求打印出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
∶
{staticintm,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{b[m][n]=b[m-1][n-1]+b[m-1][n];
printf("%-5d",b[m][n]);}printf("\n");
{inti,j,n,k,a[10][10];
statica[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}};
a[1][1]=1;
for(k=2,k<11;k++)
for(i=2;i<=k;i++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(k=1;k<11;k++)
for(i=1;i<=k;i++)
for(j=1;j<=i;j++)
printf("%d",a[i][j]);
7.7打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
例如,三阶魔方阵为
816
357
492
要求打印出由1~n2的自然数构成的魔方阵。
解:
#include
{inta[16][16],i,i,k,p,m,n;
p=1;
while(p==1)/*要求阶数为1~15的商数*/
{printf("Entern(n=1~15):
");
scanf("%d",&n);
if((n!
=0)&&(n<=15)&&(n%2!
=0))p=0;
for(i=1;i<=n;i++)/*初始化*/
for(j=1;j<=n;j++)a[i][j]=0;
j=n/2+1;/*建立魔方阵*/
a[1][j]=1;
for(k=2;k<=n*n;k++)
{i=i-1;
j=j+1;
if((i<1)&&(j>n))
{i=i+2;
j=j-1;
else
{if(i<1)i=n;
if(j>n)j=1;
if(a[i][j]==0)a[i][j]=k;
a[i][j]=k;
for(i=1;i<=n;i++)/*输出魔方阵*/
{for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
7.8找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。
{inta[5][5],b[5],c[5],d[5][5],k=0,l=0;inti,j;
for(j=0;j<5;j++)
scanf("%d",&d[i][j]);
for(j=0;j<5;j++,a[i][j]=d[i][j]);
for(i=0,k=0;i<5;i++,k++)
for(j=0;j<4;j++)
{if(a[i][j]>=a[i][j+1])
b[k]=a[i][j+1]=a[i][j];
b[k]=a[i][j+1];
for(j=0,l=0;j<5;j++,l++)
for(i=0;i<4;i++)
{if(a[i][j]<=a[i+1][j])
c[l]=a[i+1][j]=a[i][j];
c[l]=a[i+1][j];
if(d[i][j]-b[k]==0)
{if(d[i][j]-c[l]==0)
printf("d[%d][%d]=%d\n",i,j,d[i][j]);
printf("d[%d][%d]=%disnotandi\n",i,j,d[i][j]);
7.9有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。
如果该数不在数组中,则打印出"无此数"
{staticinti,j,m,a[15]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812};
scanf("%d",&m);
for(j=0;j<15;j++)
printf("%4d",a[j]);
i=7;
while(fabs(i-7)<8)
{if(m{if(a[i]-m==0){printf("itisat(%d)\n",i+1);break;}i--;}elseif(m>a[7]){if(a[i]-m==0){printf("itisat(%d)\n",i+1);break;}i++;}elseprintf("8\n");}if(fabs(i-7)-8==0)printf("Thereisnot\n");}7.10有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。main(){inti,j=0,k=0,l=0,m=0,n=0;charstr0[301],str1[100],str2[100],str3[100];gets(str1);gets(str2);gets(str3);strcat(str0,str1);strcat(str0,str2);strcat(str0,str3);for(i=0;str0[i]!=’\0’;i++){if(str0[i]>=65&&str0[i]<=90)j++;elseif(str0[i]>=97&&str0[i]<=122)k++;elseif(str0[i]>=48&&str0[i]<=57)l++;elseif(str0[i]==32)m++;elsen++;}printf("DaxieXiaoxieShuziKonggeQita\n");printf("%5d%7d%5d%6d%4d\n",j,k,l,m,n);}7.11打印以下图案* * * * ** * * * ** * * * *** * * ** * * * *main(){inti,j,k;chara[5][5];for(i=0;i<5;i++){for(j=0;j<5;j++){a[i][j]=’*’;printf("%c",a[i][j]);}printf("\n");for(k=1;k<=i+1;k++)printf("\40");}printf("\n");}7.12有一行电文译文下面规律译成密码:A->Z a->zB->Y b->yC->X c->x…即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。main(){inti;charstr1[100],str2[100];gets(str1);for(i=0;str1[i]!=’\0’;i++)if(str1[i]>=65&&str1[i]<=90)str2[i]=155-str1[i];elseif(str1[i]>=97&&str1[i]<=122)str2[i]=219-str1[i];elsestr2[i]=str1[i];printf("%s\n%s\n",str1,str2);}7.13编一程序,将两个字符串连接起来,不要strcat函数。main(){inti,j;charstr1[100],str2[100],str3[201];gets(str1);gets(str2);for(i=0;str1[i]!=’\0’;i++)str3[i]=str1[i];for(j=0;str2[j]!=’\0’;j++)str3[j+i]=str2[j];printf("%s\n%s\n%s\n",str1,str2,str3);}7.14编一个程序,将两个字符串S1和S2比较,如果S1>S2,输出一个正数;S1=S2,输出0;S1不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,’A’与’C’相比,由于’A’<’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出"-2"。同理:"And"和"Aid"比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出"5"。#include#includemain(){inti,resu;chars1[100],s2[100];printf("\ninputstring1:");gets(s1);printf("\nInputstring2:");gets(s2);i=0;while(s1[i]==s2[i]&&s1[i]!=’\0’)i++;if(s1[i]==’\0’&&s2[i]==’0’)resu=0;elseresu=s1[i]-s2[i];printf("\nresult:%d\n",resu);}7.15编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。解:#include"stdio.h"main(){chars1[80],s2[80];inti;printf("Inputs2:");scanf("%s",s2);for(i=0;is1[i]=s2[i];printf("s1:%s\n",s1);}#includeintmain(){inta[10];inti=0,j=0;intmax,temp;for(i=0;i<8;++i){printf("Pleaseinputthe%dthnumber:",i+1);scanf("%d",&a[i]);}printf("Thearryhasbeeninputis:\n");for(i=0;i<8;i++){printf("%d,",a[i]);}printf("\n");for(i=0;i<8;i++){max=i;for(j=i;j<8;j++){max=((a[j]>a[max])?j:max);}temp=a[max];a[max]=a[i];a[i]=temp;}printf("Thearryaftersortis:\n");for(i=0;i<8;++i){printf("%d,",a[i]);}printf("\n");printf("Plesaeinputanothernumber:");scanf("%d",&temp);for(i=0;i<8;i++){if(temp>a[i]){break;}}for(j=8;j>=i;--j){a[j]=a[j-1];}a[i]=temp;for(i=0;i<9;i++){printf("%d",a[i]);}getchar();return0;}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。main(){longm,n,i=1,j,s;scanf("%ld,%ld",&m,&n);for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)s=i;}if(m>=n)j=m;elsej=n;for(;!(j%m==0&&j%n==0);j++);printf("s=%ld,j=%ld\n",s,j);}6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include"stdio.h"main(){charc;inti=0,j=0,k=0,l=0;while((c=getchar())!=’\n’){if(c>=65&&c<=90||c>=97&&c<=122)i++;elseif(c>=48&&c<=57)j++;elseif(c==32)k++;elsel++;}printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);}6.3求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。#include"math.h"main(){intn,sum=0,i=1,s=2;scanf("%d",&n);while(i<=n){sum=sum+s;s=s+2*pow(10,i);i++;}printf("sum=%d\n",sum);}6.4求,(即求1!+2!+3!+4!+5!+…+20!)main(){intn,i=1;longsum=0,s=1;scanf("%d",&n);while(i<=n){s=s*i;sum=sum+s;i++;}printf("sum=%ld\n",sum);}6.5求main(){doublei=1,j=1,k=1,s1=0,s2=0,s3=0,sum;for(;i<=100;i++)s1=s1+i;for(;j<=50;j++)s2=s2+j*j;for(;k<=10;k++)s3=s3+1/k;sum=s1+s2+s3;printf("sum=%f\n",sum);}6.6打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。#include"math.h"main(){intx=100,a,b,c;while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d",x);x++;}}6.7一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1、2、3main(){intm,i,j,s;for(m=6;m<10000;m++){s=1;for(i=2;iif(m%i==0)s=s+i;if(m-s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}或main(){intm,i,j,s;for(m=6;m<1000;m++){s=m-1;for(i=2;iif(m%i==0)s=s-i;if(s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
{if(a[i]-m==0)
{printf("itisat(%d)\n",i+1);break;}i--;}
elseif(m>a[7])
{printf("itisat(%d)\n",i+1);break;}i++;}
printf("8\n");
if(fabs(i-7)-8==0)
printf("Thereisnot\n");
7.10有一篇文章,共有3行文字,每行有个80字符。
要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。
{inti,j=0,k=0,l=0,m=0,n=0;charstr0[301],str1[100],str2[100],str3[100];
gets(str1);gets(str2);gets(str3);
strcat(str0,str1);strcat(str0,str2);strcat(str0,str3);
for(i=0;str0[i]!
=’\0’;i++)
{if(str0[i]>=65&&str0[i]<=90)j++;
elseif(str0[i]>=97&&str0[i]<=122)k++;
elseif(str0[i]>=48&&str0[i]<=57)l++;
elseif(str0[i]==32)m++;
elsen++;}
printf("DaxieXiaoxieShuziKonggeQita\n");
printf("%5d%7d%5d%6d%4d\n",j,k,l,m,n);
7.11打印以下图案
* * * * *
** * * *
{inti,j,k;chara[5][5];
{for(j=0;j<5;j++)
{a[i][j]=’*’;printf("%c",a[i][j]);}
for(k=1;k<=i+1;k++)
printf("\40");}
7.12有一行电文译文下面规律译成密码:
A->Z a->z
B->Y b->y
C->X c->x
…
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。
非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。
{inti;charstr1[100],str2[100];
gets(str1);
for(i=0;str1[i]!
if(str1[i]>=65&&str1[i]<=90)
str2[i]=155-str1[i];
elseif(str1[i]>=97&&str1[i]<=122)
str2[i]=219-str1[i];
str2[i]=str1[i];
printf("%s\n%s\n",str1,str2);
7.13编一程序,将两个字符串连接起来,不要strcat函数。
{inti,j;charstr1[100],str2[100],str3[201];
gets(str2);
str3[i]=str1[i];
for(j=0;str2[j]!
=’\0’;j++)
str3[j+i]=str2[j];
printf("%s\n%s\n%s\n",str1,str2,str3);
7.14编一个程序,将两个字符串S1和S2比较,如果S1>S2,输出一个正数;S1=S2,输出0;S1不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,’A’与’C’相比,由于’A’<’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出"-2"。同理:"And"和"Aid"比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出"5"。#include#includemain(){inti,resu;chars1[100],s2[100];printf("\ninputstring1:");gets(s1);printf("\nInputstring2:");gets(s2);i=0;while(s1[i]==s2[i]&&s1[i]!=’\0’)i++;if(s1[i]==’\0’&&s2[i]==’0’)resu=0;elseresu=s1[i]-s2[i];printf("\nresult:%d\n",resu);}7.15编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。解:#include"stdio.h"main(){chars1[80],s2[80];inti;printf("Inputs2:");scanf("%s",s2);for(i=0;is1[i]=s2[i];printf("s1:%s\n",s1);}#includeintmain(){inta[10];inti=0,j=0;intmax,temp;for(i=0;i<8;++i){printf("Pleaseinputthe%dthnumber:",i+1);scanf("%d",&a[i]);}printf("Thearryhasbeeninputis:\n");for(i=0;i<8;i++){printf("%d,",a[i]);}printf("\n");for(i=0;i<8;i++){max=i;for(j=i;j<8;j++){max=((a[j]>a[max])?j:max);}temp=a[max];a[max]=a[i];a[i]=temp;}printf("Thearryaftersortis:\n");for(i=0;i<8;++i){printf("%d,",a[i]);}printf("\n");printf("Plesaeinputanothernumber:");scanf("%d",&temp);for(i=0;i<8;i++){if(temp>a[i]){break;}}for(j=8;j>=i;--j){a[j]=a[j-1];}a[i]=temp;for(i=0;i<9;i++){printf("%d",a[i]);}getchar();return0;}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。main(){longm,n,i=1,j,s;scanf("%ld,%ld",&m,&n);for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)s=i;}if(m>=n)j=m;elsej=n;for(;!(j%m==0&&j%n==0);j++);printf("s=%ld,j=%ld\n",s,j);}6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include"stdio.h"main(){charc;inti=0,j=0,k=0,l=0;while((c=getchar())!=’\n’){if(c>=65&&c<=90||c>=97&&c<=122)i++;elseif(c>=48&&c<=57)j++;elseif(c==32)k++;elsel++;}printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);}6.3求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。#include"math.h"main(){intn,sum=0,i=1,s=2;scanf("%d",&n);while(i<=n){sum=sum+s;s=s+2*pow(10,i);i++;}printf("sum=%d\n",sum);}6.4求,(即求1!+2!+3!+4!+5!+…+20!)main(){intn,i=1;longsum=0,s=1;scanf("%d",&n);while(i<=n){s=s*i;sum=sum+s;i++;}printf("sum=%ld\n",sum);}6.5求main(){doublei=1,j=1,k=1,s1=0,s2=0,s3=0,sum;for(;i<=100;i++)s1=s1+i;for(;j<=50;j++)s2=s2+j*j;for(;k<=10;k++)s3=s3+1/k;sum=s1+s2+s3;printf("sum=%f\n",sum);}6.6打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。#include"math.h"main(){intx=100,a,b,c;while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d",x);x++;}}6.7一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1、2、3main(){intm,i,j,s;for(m=6;m<10000;m++){s=1;for(i=2;iif(m%i==0)s=s+i;if(m-s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}或main(){intm,i,j,s;for(m=6;m<1000;m++){s=m-1;for(i=2;iif(m%i==0)s=s-i;if(s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
不要用strcpy函数。
两个字符串用gets函数读入。
输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。
例如,’A’与’C’相比,由于’A’<’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出"-2"。
同理:
"And"和"Aid"比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出"5"。
{inti,resu;
chars1[100],s2[100];
printf("\ninputstring1:
gets(s1);
printf("\nInputstring2:
gets(s2);
i=0;
while(s1[i]==s2[i]&&s1[i]!
=’\0’)i++;
if(s1[i]==’\0’&&s2[i]==’0’)resu=0;
elseresu=s1[i]-s2[i];
printf("\nresult:
%d\n",resu);
7.15编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。
拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。
#include"stdio.h"
{chars1[80],s2[80];
inti;
printf("Inputs2:
scanf("%s",s2);
for(i=0;is1[i]=s2[i];printf("s1:%s\n",s1);}#includeintmain(){inta[10];inti=0,j=0;intmax,temp;for(i=0;i<8;++i){printf("Pleaseinputthe%dthnumber:",i+1);scanf("%d",&a[i]);}printf("Thearryhasbeeninputis:\n");for(i=0;i<8;i++){printf("%d,",a[i]);}printf("\n");for(i=0;i<8;i++){max=i;for(j=i;j<8;j++){max=((a[j]>a[max])?j:max);}temp=a[max];a[max]=a[i];a[i]=temp;}printf("Thearryaftersortis:\n");for(i=0;i<8;++i){printf("%d,",a[i]);}printf("\n");printf("Plesaeinputanothernumber:");scanf("%d",&temp);for(i=0;i<8;i++){if(temp>a[i]){break;}}for(j=8;j>=i;--j){a[j]=a[j-1];}a[i]=temp;for(i=0;i<9;i++){printf("%d",a[i]);}getchar();return0;}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。main(){longm,n,i=1,j,s;scanf("%ld,%ld",&m,&n);for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)s=i;}if(m>=n)j=m;elsej=n;for(;!(j%m==0&&j%n==0);j++);printf("s=%ld,j=%ld\n",s,j);}6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include"stdio.h"main(){charc;inti=0,j=0,k=0,l=0;while((c=getchar())!=’\n’){if(c>=65&&c<=90||c>=97&&c<=122)i++;elseif(c>=48&&c<=57)j++;elseif(c==32)k++;elsel++;}printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);}6.3求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。#include"math.h"main(){intn,sum=0,i=1,s=2;scanf("%d",&n);while(i<=n){sum=sum+s;s=s+2*pow(10,i);i++;}printf("sum=%d\n",sum);}6.4求,(即求1!+2!+3!+4!+5!+…+20!)main(){intn,i=1;longsum=0,s=1;scanf("%d",&n);while(i<=n){s=s*i;sum=sum+s;i++;}printf("sum=%ld\n",sum);}6.5求main(){doublei=1,j=1,k=1,s1=0,s2=0,s3=0,sum;for(;i<=100;i++)s1=s1+i;for(;j<=50;j++)s2=s2+j*j;for(;k<=10;k++)s3=s3+1/k;sum=s1+s2+s3;printf("sum=%f\n",sum);}6.6打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。#include"math.h"main(){intx=100,a,b,c;while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d",x);x++;}}6.7一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1、2、3main(){intm,i,j,s;for(m=6;m<10000;m++){s=1;for(i=2;iif(m%i==0)s=s+i;if(m-s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}或main(){intm,i,j,s;for(m=6;m<1000;m++){s=m-1;for(i=2;iif(m%i==0)s=s-i;if(s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
s1[i]=s2[i];
printf("s1:
%s\n",s1);
intmain()
inta[10];
inti=0,j=0;
intmax,temp;
for(i=0;i<8;++i){
printf("Pleaseinputthe%dthnumber:
",i+1);
printf("Thearryhasbeeninputis:
\n");
for(i=0;i<8;i++){
printf("%d,",a[i]);
max=i;
for(j=i;j<8;j++){
max=((a[j]>a[max])?
j:
max);
temp=a[max];
a[max]=a[i];
a[i]=temp;
printf("Thearryaftersortis:
for(i=0;i<8;++i)
printf("Plesaeinputanothernumber:
scanf("%d",&temp);
if(temp>a[i]){
for(j=8;j>=i;--j){
a[j]=a[j-1];
for(i=0;i<9;i++){
getchar();
return0;
6.1输入两个正整数m和n,求其最大公约数和最小公倍数。
{longm,n,i=1,j,s;
scanf("%ld,%ld",&m,&n);
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0)s=i;}
if(m>=n)j=m;
elsej=n;
for(;!
(j%m==0&&j%n==0);j++);
printf("s=%ld,j=%ld\n",s,j);
6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
{charc;inti=0,j=0,k=0,l=0;
while((c=getchar())!
=’\n’)
{if(c>=65&&c<=90||c>=97&&c<=122)i++;
elseif(c>=48&&c<=57)j++;
elseif(c==32)k++;
elsel++;}
printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);
6.3求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。
例如:
2+22+222+2222+22222(n=5),n由键盘输入。
{intn,sum=0,i=1,s=2;
while(i<=n)
{sum=sum+s;s=s+2*pow(10,i);
i++;}
printf("sum=%d\n",sum);
6.4求,(即求1!
+2!
+3!
+4!
+5!
+…+20!
)
{intn,i=1;longsum=0,s=1;
while(i<=n){s=s*i;sum=sum+s;i++;}
printf("sum=%ld\n",sum);
6.5求
{doublei=1,j=1,k=1,s1=0,s2=0,s3=0,sum;
for(;i<=100;i++)s1=s1+i;
for(;j<=50;j++)s2=s2+j*j;
for(;k<=10;k++)s3=s3+1/k;
sum=s1+s2+s3;
printf("sum=%f\n",sum);
6.6打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。
153是一个水仙花数,因为153=1^3+5^3+3^3。
{intx=100,a,b,c;
while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;
if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d",x);x++;}
6.7一个数如果恰好等于它的因子之和,这个数就称为"完数"。
例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。
编程序找出1000之内的所有完数,并按下面格式输出其因子:
6 its factors are 1、2、3
{intm,i,j,s;
for(m=6;m<10000;m++)
{s=1;
for(i=2;iif(m%i==0)s=s+i;if(m-s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}或main(){intm,i,j,s;for(m=6;m<1000;m++){s=m-1;for(i=2;iif(m%i==0)s=s-i;if(s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
if(m%i==0)s=s+i;
if(m-s==0)
{printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}或main(){intm,i,j,s;for(m=6;m<1000;m++){s=m-1;for(i=2;iif(m%i==0)s=s-i;if(s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
printf("%d",j);printf("\n");}
for(m=6;m<1000;m++)
{s=m-1;
for(i=2;iif(m%i==0)s=s-i;if(s==0){printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
if(m%i==0)s=s-i;
if(s==0)
{printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}}}6.8有一分数序列: 求出这个数列的前20项之和。main(){inti=1,n;doublet,x=1,y=2,s,sum=0;scanf("%ld",&n);while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}printf("%f\n",sum);}6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main(){inti,n;doubleh=100,s=100;scanf("%d",&n);for(i=1;i<=n;i++){h*=0.5;if(i==1)continue;s=2*h+s;}printf("h=%f,s=%f\n",h,s);}6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。main(){inti=1,sum=0;for(;i<=10;sum=2*sum+1,i++);printf("sum=%d\n",sum);}6.11用迭代法求。求平方根的迭代公式为:要
6.8有一分数序列:
求出这个数列的前20项之和。
{inti=1,n;doublet,x=1,y=2,s,sum=0;
scanf("%ld",&n);
while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}
printf("%f\n",sum);
6.9一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。
求它在第10次落地时共经过多少米?
第10次反弹多高?
{inti,n;doubleh=100,s=100;
for(i=1;i<=n;i++)
{h*=0.5;if(i==1)continue;s=2*h+s;}
printf("h=%f,s=%f\n",h,s);
6.10猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘多少桃子。
{inti=1,sum=0;
for(;i<=10;sum=2*sum+1,i++);
6.11用迭代法求。
求平方根的迭代公式为:
要
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1