//题目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) * );
struct NarcissuNum num,*pn;
pn = #
//3重循环构建所有三位数
int m = ;
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
for (int k = ; k < ; k++)
{
if ((int)(pow(i, 3.0) + (int)pow(j, 3.0) + (int)pow(k, 3.0)) == (i * + j * + k))
{
pn->Hundred = i;
pn->Ten = j;
pn->Indiv = k;
*(p + m) = *pn;
m++;
}
}
}
}
for (int i = ; 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 = ;
int index = ;
scanf("%d", &num);
printf("\n");
//index = (int)sqrt((double)(num+1));
for (int i = ; i <= num; i++)
{
while (){
if (num%i == )
{
if (num/i==)
{
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 >= )
{
printf("A");
}
else if (num >= ){
printf("B");
}
else{
printf("C");
}
} void protect2(int num){
int temp = num /;
switch (temp)
{
case :
printf("A");
break;
case :
case :
case :
printf("B");
break;
default:
printf("C");
break;
}
} void main(){
int num = ;
scanf("%d",&num);
printf("\n");
protect2(num);
system("pause");
}