中国大学MOOC-翁恺-C语言程序设计习题集(二)

04-0. 求符合给定条件的整数集(15)
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:

  输入在一行中给出A。

输出格式:

  输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:
  2
输出样例:
  234 235 243 245 253 254
  324 325 342 345 352 354
  423 425 432 435 452 453
  523 524 532 534 542 543
代码:

#include <stdio.h>


int main()
{
    int num,i,j,h;
    
    scanf("%d",&num);
    
    int count = 0;
    for(i=num;i<=num+3;i++){
        
        for(j=num;j<=num+3;j++){
            
            for(h=num;h<=num+3;h++){
                
                if(h!=j && i!=j && i!=h){
                    printf("%d%d%d	",i,j,h);
                    count +=1;
                }
                if (count == 6){
                    printf("
");
                    count = 0;
                }
                
            }
        }
        
    }
    
    return 1;
    
}
04-0.c

04-1. 水仙花数(20)
水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 13 + 53+ 33。 本题要求编写程序,计算所有N位水仙花数。

输入格式:

  输入在一行中给出一个正整数N(3<=N<=7)。

输出格式:

  按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:
  3
输出样例:
  153
  370
  371
  407
代码:

#include <stdio.h>


int main()
{
    int n,i,j,s,k,a,b;
    scanf("%d",&n);
    
    
    int min = 1;
    int max;
    
    for (i=1; i<n; i++){
        min *= 10;
    }
    
    max = min * 10 - 1;
    
    
    for (i=min; i<=max; i++){
        
        j = i;
        s = 0;
        while ( j!=0 ){
            a = j % 10;
            b = 1;
            for (k=1;k<=n;k++){
                b *= a;
            }
            s += b;
            j = j / 10;
            
        }
        if (i == s){
            printf("%d
",i);
        }
        
    }
    
    return 1;
}
04-01.c
原文地址:https://www.cnblogs.com/lianzhilei/p/11177279.html