资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第六章 循环语句6.1输入两个正数,求最大公约数和最小公倍数. int main() int a,b,num1,num2,temp; printf(请输入两个正整数:n); scanf(%d,%d,&num1,&num2); if(num1num2) temp=num1; num1=num2; num2=temp; a=num1,b=num2; while(b!=0) temp=a%b; a=b; b=temp; printf(它们的最大公约数为:%dn,a); printf(它们的最小公倍数为:%dn,num1*num2/a); return 0; 我觉得这样不是更简单吗:首先用scanf输入两个整数a,b if(a 0;c-) if(a%c)&(b%c)=0) break; printf(最大公约数为%d,c);printf(最大公倍数为%d,a*b/c);6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.解: #include int main() char c;int letters=0,space=0,degit=0,other=0;printf(请输入一行字符:n);while(c=getchar()!=n) if(c=a&cA&c=0&c=9) digit+; else other+; printf(其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%dn,letters,space, digit,other); return 0; 6.3求s(n)=a+aa+aaa+aaa之值,其中a是一个数字,n表示a的位数。解: int main() int a,n,count=1,sn=0,tn=0; printf(请输入a和n的值:n); scanf(%d,%d,&a,&n); printf(a=%d n=%d n,a,n); while(count=n) tn=tn+a; sn=sn+tn; a=a*10; +count; printf(a+aa+aaa+=%dn,sn); return 0; 6.4 求(即1+2!+3!+4!+20!)int main() float n,s=0,t=1; for(n=1;n=20;n+) t=t*n; s=s+t; printf(1!+2!+20!=%en,s); return 0; 6.5 求。int main() int k,N1=100,N2=50,N3=10; float s1=0.0,s2=0.0,s3=0.0; for(k=1;k=N1;k+)/*计算1到100的和*/ s1=s1+k; for(k=1;k=N2;k+)/*计算1到50各数平方和*/ s2=s2+k*k; for(k=1;k=N3;k+) /*计算1到10各数倒数之和*/ s3=s3+1.0/k; printf(总和=%8.2fn,s1+s2+s3); return 0; 6.6所谓“水仙开数”是指一个3位数,其个位数字立方和等于该数本身。 int main() int i,j,k,n; printf( 水仙花数是:); for(n=100;n1000;n+) i=n/100; j=n/10-i*10; k=n%10; if(i*100+j*10+k=i*i*i+j*j*j+k*k*k) printf(%d,n); printf(n); return 0; 6.7一个数如果恰好等于它的因子之和,这个数就称为“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子。 #include #define M 1000 /*定义寻找范围*/ int main() int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9; int i,j,n,s; for(j=2;j=M;j+) n=0; s=j; for(i=1;i1) printf(%d,%d,k0,k1); if(n2) printf(,%d,k2); if(n3) printf(,%d,k3); if(n4) printf(,%d,k4); if(n5) printf(,%d,k5); if(n6) printf(,%d,k6); if(n7) printf(,%d,k7); if(n8) printf(,%d,k8); if(n9) printf(,%d,k9); printf(n); return 0;方法二:此题用数组方法更为简单. int main() int k10; int i,j,n,s; for(j=2;j=1000;j+) n=-1; s=j; for(i=1;ij;i+) if(j%i)=0) n+; s=s-i; kn=i;/*将每个因子赋给k0,k1.k9*/ if(s= =0) printf(%d是一个完数,它的因子是:,j); for(i=0;in;i+) printf(%d,ki); printf(%dn,kn); return 0;6.8 有一个分数序列:2/1,3/2,5/3,8/5求出这个数列的前20项之和. 解: #include int main() int n,t,number=20; float a=2,b=1,s=0; for(n=1;n=number;n+) s=s+a/b; t=a,a=a+b,b=t; printf(总和=%9.6fn,s); return 0; 6.9球反弹问题 #include int main() float sn=100.0,hn=sn/2; int n; for(n=2;n=10;n+) sn=sn+2*hn;/*第n次落地时共经过的米数*/ hn=hn/2;/*第n次反跳高度*/ printf(第10次落地时共经过%f米 n,sn); printf(第10次反弹%f米.n,hn); return 0; 6.10猴子吃桃问题#include int main() int day,x1,x2; day=9; x2=1; while(day0) x1=(x2+1)*2; x2=x1; day-; printf(桃子总数=%dn,x1); return 0; 上面的程序是从最后一天计算,一直到第一天。当while第一次循环,既day=9的时候,X1此时计算的是第9天的桃子数。而X2既是X1前一天的桃子数。计算出第9天的桃子数后,把X1的值赋值给X2,那么X2此时X2就表示第9天的桃子数,再通过while的循环,可以逐步求出第7天,第6天.一直到第一天的桃子数. 这里X2=X1,就是一个赋值的过程,为的是求前一天的桃子数.6.11用迭代法求。求平方根的迭代公式为:,要求前后两次求出的差的绝对值小于0.00001。#include #include int main() float x0,x1,a; scanf(%f,&a); x1=a/2; do x0=x1;x1=(x0+a/x0)/2;while(fabs(x0-x1)=0.00001); printf(%.3fn,x1); return 0; 6.12 用牛顿迭代法求方程在1.5附近的根。 #include int main() double x,y;x=1.5; doy=2*x*x*x-4*x*x+3*x-6; x=x-y/(6*x*x-8*x+3);while(y!=0); printf(x=%.3fn,x); return 0; 6.13用二分法求方程在(-10,10)之间的根 #include int main()double x1,x2,y1,y2;x1=-10;x2=10; doy1=2*x1*x1*x1-4*x1*x1+3*x1-6; x1=x1-y1/(6*x1*x1-8*x1+3);while(y1!=0); do y2=2*x2*x2*x2-4*x2*x2+3*x2-6; x2=x2-y2/(6*x2*x2-8*x2+3);while(y2!=0); printf(x1=%.3f,x2=%.3fn,x1,x2); return 0;6.14打印图案 #include int main() int i,j,k; for(i=0;i=3;i+) for(j=0;j=2-i;j+) printf( ); for(k=0;k=2*i;k+) printf(*); printf(n);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号