1、打印一个13行的菱形*,其中前7行每行依次递增两个,从第八行起,每行递减两个,起始与末尾行个数都为1,第七行最多,为13个。
#include<stdio.h>
#include<stdlib.h>
int main() {
int i, j;//i控制行数,j控制每行的*个数
int k = 13;//k为给定的行数
int a = (k + 1) / 2;
//先打印前7行,每行*依次递增2个
for(i = 1; i <= a; ++i) {
for(j = 1; j <= 2 * i - 1; ++j) {
printf("*");
}
printf("\n");
}
//打印后6行,每行*依次递减2个
for(i = a - 1; i >= 1; --i) {
for(j = 1; j <= 2 * i - 1; ++j) {
printf("*");
}
printf("\n");
}
system("pause");
return 0;
}
运行效果图:
2、求出0~999之间的所有“水仙花数”并输出。
思路:求”水仙花数“的问题实际上需要回到求一个三位数其个位、十位、百位的问题上。
个位=该数字%10;
十位=该数字/10%10;
百位=该数字/100;
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
int hundred, ten, indiv;//定义百位、十位、个位
for(int i = 0; i < 1000; ++i) {
hundred= i / 100;
ten= i / 10 % 10;
indiv= i %10;
if ((i>=100)&&(i == pow(hundred, 3)
+pow(ten, 3) + pow(indiv, 3))) {
printf("%d是水仙花数\n", i);
}
}
system("pause");
return 0;
}
运行结果: