• C语言 百炼成钢5


    //题目13:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
    //本身。例如:153是一个“水仙花数”,因为153 = 1的三次方+5的三次方+3的三次方。
    
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    
    //分析:先准备一个动态内存数组,用来存储所有的三位数,这个三位数百位不可以是0
    //为了便于分解,先定义结构体
    //然后获取百位,num/100,获取十位,(num-百位*100)/10,个位是(num-百位*100-十位*10)
    //分解出个位,十位,百位,看是否满足水仙花数
    //pow()函数的使用
    
    struct NarcissuNum{
        int Hundred;
        int Ten;
        int Indiv;
    };
    
    void main(){
        //定义动态数组
        struct NarcissuNum *p = malloc(sizeof(struct NarcissuNum) * 2000);
        struct NarcissuNum num,*pn;
        pn = &num;
        //3重循环构建所有三位数
        int m = 0;
        for (int i = 1; i < 10; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                for (int k = 0; k < 10; k++)
                {
                    if ((int)(pow(i, 3.0) + (int)pow(j, 3.0) + (int)pow(k, 3.0)) == (i * 100 + j * 10 + k))
                    {
                        pn->Hundred = i;
                        pn->Ten = j;
                        pn->Indiv = k;
                        *(p + m) = *pn;
                        m++;
                    }
                }
            }
        }
        for (int i = 0; i < m; i++)
        {
            printf("
    %d%d%d", (p + i)->Hundred, (p + i)->Ten, (p + i)->Indiv);
        }
    
        system("pause");
    }
    View Code

    //题目14:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    //分析:首先求出这个整数的因数,再对因数求因数,直到无法求值为止,递归调用----这个思路错误
    //正整数分解质因数,如果从小到大去分解,就不会存在(能再被分解的因数)
    
    
    
    void main(){
        int num = 0;
        int index = 0;
        scanf("%d", &num);
        printf("
    ");
        //index = (int)sqrt((double)(num+1));
        for (int i = 2; i <= num; i++)
        {
            while (1){
                if (num%i == 0)
                {
                    if (num/i==1)
                    {
                        printf("%d", i);
                    }
                    else{
                        printf("%d*", i);
                    }
                    num = num / i;
                }
                else{
                    break;
                }
            }
            
        }
        system("pause");
    }

    //题目15:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
    //60分以下的用C表示。
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    //分析;可以使用if嵌套或者switch语句来完成
    
    void protect1(int num){
        if (num >= 90)
        {
            printf("A");
        }
        else if (num >= 60){
            printf("B");
        }
        else{
            printf("C");
        }
    }
    
    void protect2(int num){
        int temp = num /10;
        switch (temp)
        {
        case 9:
            printf("A");
            break;
        case 8:
        case 7:
        case 6:
            printf("B");
            break;
        default:
            printf("C");
            break;
        }
    }
    
    void main(){
        int num = 0;
        scanf("%d",&num);
        printf("
    ");
        protect2(num);
        system("pause");
    }

  • 相关阅读:
    [转载]使用SecureCRT进行vim编辑的时候,小键盘变成字母的解决办法
    [转载]运行中的程序突然出现"Killed"原因
    [转载]IPv6地址表示方法详解
    【转载】深入浅出Pairwise算法
    [转载]不要用强制方法杀掉python线程
    [转载]Python SQLite3的问题sqlite3.ProgrammingError: SQLite objects created in a thread
    SQL语句中distinct的分页和查询数据数量
    SQL语句中获取时间的方法
    SQLService中使用SQL语句书写分页
    使用Angular下拉自动加载
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5148745.html
Copyright © 2020-2023  润新知