附加题4

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无法停止多个魂环的问题

原文地址:https://www.cnblogs.com/zscswd1368/p/6142613.html