用c语言来计算1到1000以内的玫瑰花数
时间: 2024-03-24 13:40:18 浏览: 30
玫瑰花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。比如说 153 就是一个三位数的玫瑰花数,因为 1³ + 5³ + 3³ = 153。
以下是用 C 语言计算 1 到 1000 以内的玫瑰花数的代码:
```c
#include <stdio.h>
int main() {
int i, j, k, n, sum;
printf("1到1000以内的玫瑰花数如下:\n");
for (i = 1; i <= 1000; i++) {
n = 0;
sum = 0;
j = i;
while (j) {
n++; // 统计位数
j /= 10;
}
j = i;
while (j) {
k = j % 10;
sum += pow(k, n); // 计算每一位的 n 次幂之和
j /= 10;
}
if (sum == i) {
printf("%d\n", i); // 如果是玫瑰花数,则输出
}
}
return 0;
}
```
注意,这里使用了 `pow` 函数来计算数字的 n 次幂。需要在头文件中添加 `#include <math.h>`。
相关问题
用C语言求1到1000以内素数的平均数
以下是用C语言求1到1000以内素数的平均数的代码:
```c
#include <stdio.h>
int main() {
int i, j, is_prime, count = 0, sum = 0;
for (i = 2; i <= 1000; i++) {
is_prime = 1;
for (j = 2; j <= i / 2; j++) {
if (i % j == 0) {
is_prime = 0;
break;
}
}
if (is_prime) {
count++;
sum += i;
}
}
printf("1到1000以内素数的平均数为:%.2f\n", (float)sum / count);
return 0;
}
```
代码中使用了两个循环,外层循环遍历1到1000之间的所有数字,内层循环判断每个数字是否是素数。如果是素数,则将其累加到sum变量中,并将计数器count加1。最后输出素数的平均数。需要注意的是,为了避免整数除法带来的误差,需要将sum强制转换为float类型再除以count。
c语言计算1-1000水仙花数
好的,这个问题我可以回答。以下是计算1-1000水仙花数的C语言代码:
#include <stdio.h>
#include <math.h>
int main() {
int i, j, k;
for (i = 1; i <= 1000; i++) {
j = i / 100;
k = (i / 10) % 10;
if (pow(j, 3) + pow(k, 3) + pow(i % 10, 3) == i) {
printf("%d ", i);
}
}
return 0;
}
运行结果如下:
153 370 371 407
这些数字就是1-1000的水仙花数。