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("\n%d%d%d", (p + i)->Hundred, (p + i)->Ten, (p + i)->Indiv);
    }

    system("pause");
}

//题目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("\n");
    //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("\n");
    protect2(num);
    system("pause");
}

时间: 2024-11-07 01:27:35

C语言 百炼成钢5的相关文章

C语言 百炼成钢21

//题目57:编写一个业务函数,实现字符串(前后各有三个空格,单词前后也均有空格) //" i am student, you are teacher " , //各个单词首字符大写,结果如下" i am student, you are teacher " , //要求1:实现所有接口 70 //要求2:写出测试程序 30 #include<stdio.h> #include<stdlib.h> #include<string.h&g

C语言 百炼成钢22

/* 题目58: 编写一个业务函数,实现按行读取文件.把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出. 函数原型有两个,任意选择其一 要求1:请自己任意选择一个接口(函数),并实现功能:70分 要求2:编写测试用例.30分 要求3:自己编写内存释放函数 */ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //按行读取文件 int

C语言 百炼成钢27

/* 题目63:编写C++程序完成以下功能: (1)声明一个纯虚函数类Shape(形状),其中包含来计算面积.计算周长的方法: (2)从Shape派生两个类矩形和圆形: (3)从矩形派生正方形: (4)分别实现派生类构造函数.析构函数和其他方法: (5)创建派生类的对象,观察构造函数.析构函数调用次序: (6)利用抽象类做函数参数(基类指针指向子类对象,多态特性),计算不同对象的面积和周长. */ #define _CRT_SECURE_NO_WARNINGS #include<iostream

C语言 百炼成钢17

//题目49:老师将糖果分成若干份,让学生按任意次序领取,第一个领取的,得到1份加上剩余糖果的1/10, //第二个领取的,得到2份加上剩余糖果的1/10,第三个领取的,得到3份加上剩余糖果的1/10,以此类推, //求共有多少个学生,多少份糖果 #include<stdio.h> #include<stdlib.h> //思路:该题的要求是求一个糖果的数量,这个数量必须保证每个学生领取到的糖果都是整份数,并不要求所有学生分的糖果分数一样 //根据多定义变量,简化运算难度规则,定义

C语言 百炼成钢16

//题目46:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只 //猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 //一个,它同样把多的一个扔入海中,拿走了一份,第三.第四.第五只猴子都是这样做的, //问海滩上原来最少有多少个桃子? #include<stdio.h> #include<stdlib.h> //分析:最少有多少个桃子,说明是满足条件的最小数:假设有X个桃子,第一个猴子的桃子数量是(X-1)/5,

C语言 百炼成钢11

//题目31:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 //判断第二个字母. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:通过输入的字母判定星期几,可以使用if()else void main(){ char str[7] = { 0 }; scanf("%s",str); switc

C语言 百炼成钢10

//题目28:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁.问第4个人岁数,他说比第 //3个人大2岁.问第三个人,又说比第2人大两岁.问第2个人,说比第一个人大两岁.最后 //问第一个人,他说是10岁.请问第五个人多大? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:经过阅读,发现f(5)=f(4)+2;f(4)=f(3)

C语言 百炼成钢2

//题目5:输入三个整数x,y,z,请把这三个数由小到大输出. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> void sortnum(int *x,int *y,int *z){ int temp = 0; if (*x>*y) { temp = *x; *x = *y; *y = temp; } if (*y>*z) { temp = *z; *z = *y; *y = te

C语言 百炼成钢12

//题目34:对10个数进行排序 #include<stdio.h> #include<stdlib.h> //分析:使用冒泡排序 void main(){ int arr[10] = { 9, 2, 4, 7, 5, 71, 45, 46, 7, 8 }; //定义临时变量 int temp = 0; //冒泡排序 双循环 for (int i = 0; i < 10; i++) { for (int j = i+1; j <10; j++) { if (arr[j-

C语言 百炼成钢25

/* 题目61:编写一个名为removestring的函数,该函数用于从一个字符串中删除一定量的字符. 该函数接受三个参数: 第1参数代表源字符串 第2参数代表需要删除字符的起始位置(位置从0开始) 第3参数代表需要删除的字符个数. eg:字符串"abcd12345efg" removestring(text, 4, 5); 则会删除该字符数组中的字符串wrong以及后面的空格.遗留内容则是字符串abcdefg". */ #include<stdio.h> #in