算法竞赛入门 —— 循环结构 习题

习题2-1 水仙花数

输出100~999中的所有水仙花数。若3位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花 数。例如153=1^3+5^3+3^3,所以153是水仙花数。

#include<stdio.h>
int main(){
    for(int i = 1;i<=9;i++){
        for(int j = 0 ;j <=9;j++){
                for(int k = 0;k <= 9;k++){
                    int r = i * 100 + j * 10 + k;
                    if(r == i*i*i + j*j*j + k*k*k)
                        printf("%d\n",r);
                }
        }
    }
    return 0;
}

习题2-2 韩信点兵

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

习题2-3 倒三角形

输入正整数n≤20,输出一个n层的倒三角形。例如,n=5时输出如下:
#########

 #######

  #####

   ###

    #

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

习题2-4 子序列的和

输入两个正整数n<m<106,输出 ,保留5位小数。输入包含多组数据, 结束标记为n=m=0。提示:本题有陷阱。

样例输入:
2 4
65536 655360
0 0
样例输出:
Case 1: 0.42361
Case 2: 0.00001

习题2-5 分数化小数

输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b≤10^6,c≤100。输 入包含多组数据,结束标记为a=b=c=0。
样例输入:
1 6 4
0 0 0
样例输出:
Case 1: 0.1667

习题2-6 排列

用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要 求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必 太动脑筋。
下面是一些思考题。
题目1。假设需要输出2,4,6,8,…,2n,每个一行,能不能通过对程序2-1进行小小 的改动来实现呢?为了方便,现把程序复制如下:

#include<stdio.h> 
int main() 
 {  
   int n; 
   scanf("%d", &n); 
   for(int i = 1; i <= n; i++) 
   printf("%d\n", i); 
   return 0; 
 }

任务1:修改第7行,不修改第6行。
任务2:修改第6行,不修改第7行。
题目2。下面的程序运行结果是什么?“!=”运算符表示“不相等”。提示:请上机实 验,不要凭主观感觉回答。

#include<stdio.h>
int main()
{
    double i; 
    for(i = 0; i != 10; i += 0.1) 
        printf("%.1f\n", i);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/expedition/p/11450512.html