第2章 循环结构程序设计——习题《算法入门竞赛经典第二版》

习题2-1 水仙花数(daffodil)
在这里插入图片描述

#include<stdio.h>
int main(){
    for(int a=0;a<10;a++){
        for(int b=0;b<10;b++){
            for(int c=0;c<10;c++){
               	int  m = a*100+b*10+c;
                if(m == (a*a*a+b*b*b+c*c*c)){
                        if(m>99 && m<1000)
                    	printf("%d\n",m);
                }
            }
        }
    }
}

习题2-2 韩信点兵(hanxin)
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、 五人
一排、 七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。 输入包含多组
数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<
7),输出总人数的最小值(或报告无解)。 已知总人数不小于10,不超过100。 输入到文件
结束为止。
样例输入:
2 1 6
2 1 3
样例输出:
41
No answer

#include<stdio.h>
int main(){
    int a,b,c,temp=0;
    scanf("%d%d%d",&a,&b,&c);
    for(int num=10;num<=100;num++){
        if(num%3==a && num%5==b && num%7==c){
            printf("%d",num);
            temp = 1;
            break;
        }
    }
    if(!temp){
        printf("No answer!");
    }
    return 0;
}

习题2-3 倒三角形(triangle)
输入正整数n≤20,输出一个n层的倒三角形。 例如,n=5时输出如下:
在这里插入图片描述

#include<stdio.h>
int main(){
    int a;
    scanf("%d",&a);
    for(int i=1;i<=a;i++){
            for(int j=1;j<i;j++){
                printf(" ");
            }
            for(int k=-2*i+2*a+1;k>=1;k--){
                printf("#");
            }
            printf("\n");

        }
}

题2-4 子序列的和(subsequence)
输入两个正整数n<m<106,输出
在这里插入图片描述
保留5位小数。 输入包含多组数据,结束标记为n=m=0。
提示:本题有陷阱。
样例输入:
2 4
65536 655360
0 0
样例输出:
0.42361
0.00001
日后补上!
(先赶集)

题2-5 分数化小数(decimal)
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。 a,b≤106,c≤100。 输入包含多组数据,结束标记为a=b=c=0。
样例输入:
1 6 4
0 0 0
样例输出:
0.1667

#include<stdio.h>
int main(){
    int a,b,c;
    char format[10] ={0};
    scanf("%d%d%d",&a,&b,&c);
    double d = a/(b*1.0);
    sprintf(format,"%%.%df", c);
    printf(format,d);
}

习题2-6 排列(permutation)
用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。 按照“abc def ghi”的格式输出所有解,每行一个解。
日后补上!
(先赶集)

发布了58 篇原创文章 · 获赞 10 · 访问量 5475

猜你喜欢

转载自blog.csdn.net/qq_43476433/article/details/104161459