1 //输入两个正数mn,求最大公约数和最小公倍数 2 #include<stdio.h> 3 int main() 4 { 5 int p,r,m,n,temp; 6 printf("请输入两个正数: "); 7 scanf("%d,%d",&m,&n); 8 if(n<m) 9 { 10 temp=n; 11 n=m; 12 m=temp; 13 } 14 p=m*n; 15 while(m!=0) 16 { 17 r=n%m; 18 n=m; 19 m=r; 20 } 21 printf("最大公约数%d ",n); 22 printf("最小公倍数%d ",p/n); 23 return 0; 24 }
2/统计一行字符数字字母空格个数
1 #include<stdio.h> 2 int main() 3 { 4 char c; 5 int letters=0,space=0,digit=0,other=0; 6 printf("请输入一个字符: "); 7 while((c=getchar())!=' ') 8 { 9 if(c>='a'&&c<='z'||c>='A'&&c<='Z') 10 letters++; 11 else if(c==' ') 12 space++; 13 else if(c>='0'&&c<='9') 14 digit++; 15 else 16 other++; 17 } 18 printf("字母数:%d 空格数:%d 数字数%d 其他%d ",letters,space,digit,other); 19 return 0; 20 }
3、
1 //求a+aa+...aaaaa,n个a的和 2 #include<stdio.h> 3 int main() 4 { 5 int a,n,i=1,sn=0,tn=0; 6 printf("a,n=:"); 7 scanf("%d,%d",&a,&n); 8 while(i<=n) 9 { 10 tn=tn+a; 11 sn=sn+tn; 12 a=a*10; 13 ++i; 14 } 15 printf("和为:%d ",sn); 16 return 0; 17 }
4/计算1!+2!+3!+。。。+20!
1 #include<stdio.h> 2 int main() 3 { 4 double s=0,t=1; 5 int n; 6 for(n=1;n<=20;n++) 7 { 8 t=t*n; 9 s=s+t; 10 } 11 printf("和为:%12.15e ",s); 12 return 0; 13 }
5、求1-100的k,1-50的k2,1-10的1/k.
#include<stdio.h> int main() { int n1=100,n2=50,n3=10; double k,s1=0,s2=0,s3=0; for(k=1;k<=n1;k++) {s1=s1+k;} for(k=1;k<=n2;k++) {s2=s2+k*k;} for(k=1;k<=10;k++) {s3=s3+1/k; } printf("sum=%15.6f/n",s1+s2+s3); return 0; }
6、求水仙花数
1 #include<stdio.h> 2 int main() 3 { 4 int i,j,n,k; 5 for(i=100;i<1000;i++) 6 { 7 j=i/100; 8 n=i/10-j*10; 9 k=i%10; 10 if(i==j*j*j+n*n*n+k*k*k) 11 printf("水仙花数:%d ",i); 12 } 13 return 0; 14 }
7、求完数
1 #include<stdio.h> 2 int main() 3 { 4 int m,s,i; 5 for(m=2;m<=1000;m++) 6 { s=0; 7 for(i=1;i<=m;i++) 8 if((m%i)==0) 9 s=s+i; 10 if(s==m) 11 {printf("%d its facters are",m); 12 for(i=1;i<m;i++) 13 if(m%i==0) 14 printf("%d",i); 15 printf(" "); 16 } 17 } 18 return 0; 19 } 20
8、求2/1,3/2,5/3,8/5。。。前二十项和
1 #include<stdio.h> 2 int main() 3 { 4 int n; 5 double i=2,j=1,k,s=0.0; 6 for(n=1;n<=20;n++) 7 { 8 9 s=s+i/j; 10 k=i; 11 i=i+j; 12 j=k; 13 } 14 printf("sum is %16.10f ",s); 15 return 0; 16 }
9、100米掉落小球每次反弹高度为原来的一半,十次后高度?总路程?
1 #include<stdio.h> 2 int main() 3 { 4 double s=100,h=s/2; 5 int n; 6 for(n=2;n<=10;n++) 7 { 8 s=s+2*h; 9 h=h/2; 10 } 11 printf("十次共经过%f 米 ",s); 12 printf("第十次反弹%f 米 ",h); 13 return 0; 14 }
10、猴子偷桃问题
1 #include<stdio.h> 2 int main() 3 { 4 int day=9,x1,x2=1; 5 while(day>0) 6 { 7 x1=(x2+1)*2; 8 x2=x1; 9 day--; 10 } 11 printf("total=%d ",x1); 12 return 0; 13 }
11、用迭代法求平方根
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 float a,x0,x1; 6 printf("enter a: "); 7 scanf("%f",&a); 8 x0=a/2; 9 x1=(x0+a/x0)/2; 10 do 11 { 12 x0=x1; 13 x1=(x0+a/x0)/2; 14 } 15 while(fabs(x0-x1)>=1e-5); 16 printf("the square root of %5.2f is%8.5f ",a,x1); 17 return 0; 18 }
12、迭代法求2x3-4x2+3x-6=0的根
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 double x1,x0,f,f1; 6 x1=1.5; 7 do{ 8 x0=x1; 9 f=((2*x0-4)*x0+3)*x0-6; 10 f1=(6*x0-8)*x0+3; 11 x1=x0-f/f1; 12 } 13 while(fabs(x1-x0)>=1e-5); 14 printf("the root is%5.2f ",x1); 15 return 0; 16 }
13、用二分法求方程的根
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 float x0,x1,x2,fx0,fx1,fx2; 6 do 7 {printf("please enter x1 x2:,"); 8 scanf("%f,%f",&x1,&x2); 9 fx1=x1*((2*x1-4)*x1+3)-6; 10 fx2=x2*((2*x2-4)*x2+3)-6; 11 }while(fx1*fx2>0); 12 do{ 13 x0=(x1+x2)/2; 14 fx0=x0*((2*x0-4)*x0+3)-6; 15 if((fx0*fx1)<0) 16 {x2=x0; 17 fx2=fx0; 18 } 19 else 20 {x1=x0; 21 fx1=fx0; 22 } 23 }while(fabs(fx0)>=1e-5); 24 printf("x=%6.2f ",x0); 25 return 0; 26 }
14、输出菱形
1 #include<stdio.h> 2 int main() 3 { 4 int i,j,k; 5 for(i=0;i<=3;i++) 6 { 7 for(j=0;j<=2-i;j++) 8 printf(" "); 9 for(k=0;k<=2*i;k++) 10 printf("*"); 11 printf(" "); 12 } 13 for(i=0;i<=2;i++) 14 { 15 for(j=0;j<=i;j++) 16 printf(" "); 17 for(k=0;k<=4-2*i;k++) 18 printf("*"); 19 printf(" "); 20 } 21 return 0; 22 }
15、乒乓球比赛匹配
1 #include<stdio.h> 2 int main() 3 { 4 char i,j,k; 5 for(i='x';i<='z';i++) 6 for(j='x';j<='z';j++) 7 if(i!=j) 8 for(k='x';k<='z';k++) 9 if(i!=k&&j!=k) 10 if(i!='x'&&k!='x'&&k!='z') 11 printf("A %c B %c C %c ",i,j,k); 12 return 0; 13 }