6.输出水仙花数。输入一个正整数n,输出所有的n位水仙花数。
#include<stdio.h> #include<math.h> int main() { int a,x,n,i,p,w; double s; x=100; printf("输入一个正整数n: "); scanf("%d",&n); i=0; while(n>=3&&n<=7&&i<=n) { s=0; p=x; for(i=0;i<=n&&x!=0;i++) { a=x%10; x=x/10; s=s+pow(a,n); } if(s==p&&i==n) { printf("s=%.0lf ",s); printf("i=%d ",i); } x=p+1; }; return 0; }
7.求最大公约数和最小公倍数。输入两个整数m,n(m,n小于1000)
#include<stdio.h> int main() { int m,n,i,j; int max,min; max=0; min=10000000; printf("请输入m "); scanf("%d",&m); printf("请输入n "); scanf("%d",&n); for(i=m;i>=2;i--) for(j=n;j>=2;j--) if(m%i==0&&n%j==0&&i==j) { if(max<i) max=i; } printf("最大公因数:%d ",max); for(i=1;i<=10000;i++) for(j=1;j<=10000;j++) if(m*j==n*i) { if(min>i*n) min=i*n; } printf("最小公倍数:%d ",min); return 0; }
8.高空坠球。皮球从height高度下落,处第后反弹到元高度的一半。第n次落地时在空中经历了多少路程,第n次的高度是多少。
#include<stdio.h>
int main()
{
double height,x,s;
int n,i;
printf("请输入次数");
scanf("%d",&n);
printf("请输入高度");
scanf("%lf",&height);
s=x=height;
for(i=1;i<=n;i++)
{
x=x/2;
s=s+x;
}
printf("弹起的高度为:%.1lf
",x);
printf("总共的路程为%.1lf
",s);
return 0;
}
9.打印菱形 星号“*”图案。输入一个正整数n(n为奇数)打印高度为n。
#include<stdio.h> int main() { int i,n,j; printf("请输入n:"); scanf("%d",&n); for(i=1;i<=n;i++) { if(i<=n/2) for(i=1;i<=n/2;i++) { for(j=1;j<=n-i+2;j++) printf(" "); for(j=1;j<=2*i-1;j++) printf(" *"); printf(" "); } if(i>n/2) for(i=n/2+1;i<=n;i++) { for(j=1;j<=i*3-n;j++) printf(" "); for(j=1;j<=(n-i)*2+1;j++) printf(" *"); printf(" "); } } return 0; }
10.猴子吃桃问题。一只猴子第一天摘下若干个桃子,吃掉一半,有多吃了一个,每天都吃掉前一天的一半,再多吃一个。问第一天总共摘了多少个桃子。
#include<stdio.h> int main() { int x,n,i; printf("请输入n:"); scanf("%d",&n); x=1; for(i=n;i>1;i--) x=2*(x+1); printf("总共摘了%d",x); return 0; }
知识点
1.while,do-while,for循环的用法
2.嵌套循环的用法
3.break是结束一个循环,continue是跳过一个语句
遇到的问题与解决方法
在做题的时候,想用break结束多个循环,发现不行,于是改变思路用比大小的方法解决了,break无法停止多个魂环的问题