zoukankan      html  css  js  c++  java
  • 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");
    }

  • 相关阅读:
    121.买卖股票 求最大收益1 Best Time to Buy and Sell Stock
    409.求最长回文串的长度 LongestPalindrome
    202.快乐数 Happy Number
    459.(KMP)求字符串是否由模式重复构成 Repeated Substring Pattern
    326.是否为3的平方根 IsPowerOfThree
    231.是否为2的平方根 IsPowerOfTwo
    461.求两个数字转成二进制后的“汉明距离” Hamming Distance
    206.反转单链表 Reverse Linked List
    448. 数组中缺少的元素 Find All Numbers Disappeared in an Array
    常见表单元素处理
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5148745.html
Copyright © 2011-2022 走看看