题目描述 如果一个三位数nn的各位数字的立方和等于nn,那么称nn为水仙花数。例如153=13+53+33153=13+53+33,因此153是水仙花数。 给定两个正整数aa、bb,输出在闭区间[a,b][a,b]内的所有水仙花数。 输入描述 两个正整数aa、bb(100≤a≤b≤999100≤a≤b≤999)。 输出描述 在一行里输出闭区间[a,b][a,b]内的所有水仙花数,多个水仙花数按从小到大的顺序输出,中间用空格隔开,行末不允许有多余的空格。如果区间内没有水仙花数,那么输出NO。 用c语言
时间: 2024-02-01 17:14:39 浏览: 116
以下是使用 C 语言实现的代码:
```c
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
int flag = 0; // 标记是否存在水仙花数
for (int i = a; i <= b; i++) {
int temp = i;
int sum = 0;
while (temp) {
int digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
if (sum == i) {
printf("%d ", i);
flag = 1;
}
}
if (!flag) {
printf("NO");
}
return 0;
}
```
首先读入输入的两个数 a 和 b,然后循环遍历区间 [a, b] 中的每个数,对于每个数求出其每个数位上数字的立方和,判断是否等于该数本身。如果等于,则输出该数,并将标记 flag 设为 1,表示存在水仙花数。如果循环结束后 flag 仍为 0,则说明区间内不存在水仙花数,输出 NO。
相关问题
课本P133,认真阅读变量的作用域,分清局部变量和全局变量,给下面的程序段注释写完整: def f1(): x = 5 return xx #x是?(局部变量/全局变量) def f2(): return xx #x是?(局部变量/全局变量) x = 10 #x是?(局部变量/全局变量) print(x) #打印结果是什么? print(f1()) #打印结果是什么? print(f2()) #打印结果是什么题目、【思考题】阿姆斯特朗数: 3位的阿姆斯特朗数称为水仙花数,代表每位数字的立方和还是该数;4位的阿姆斯特朗数称为四叶玫瑰数,代表每位数字的4次幂之和还是该数;5位的阿姆斯特朗数称为五角星数,代表每位数字的5次幂之和还是该数。用键盘输入一个【3,4,5】中的任意数字,求出对应位数的阿姆斯特朗数。 提示:def Armstrong(n)其中n代表位数。调用Armstrong(3),打印所有3位的水仙花数。(文件保存为H6-7.py 题目、【思考题】更多的田字格。函数grid(n)来打印n个田字格。输入2则输出如图所示更大的田字格(22的田字格)。(文件保存为H6-8.py) 【运行结果截图,结果最后有自己学号姓名的打印】 题目、【思考题】输出NN的方格矩阵。参考上一题(田字格)。如下所示,输入1(代表阶数),输出1个方格;输入2,输出一个22的方格;输入3,则输出33的方格。(文件保存为H6-9.py)
程序段注释:
```python
def f1():
x = 5 # x是局部变量
return x
def f2():
return x # x是全局变量
x = 10 # x是全局变量
print(x) # 打印结果是10
print(f1()) # 打印结果是5
print(f2()) # 打印结果是10
```
思考题1:阿姆斯特朗数
```python
def Armstrong(n):
for i in range(10**(n-1), 10**n):
s = 0
for j in str(i):
s += int(j)**n
if s == i:
print(i)
n = int(input("请输入3、4或5:"))
if n == 3:
Armstrong(3)
elif n == 4:
Armstrong(4)
elif n == 5:
Armstrong(5)
else:
print("输入错误!")
```
思考题2:田字格
```python
def grid(n):
for i in range(2*n+1):
if i % 2 == 0:
print("+ " + "- " * n + "+")
else:
print("| " + " " * n + "|")
n = int(input("请输入田字格数量:"))
grid(n)
```
思考题3:方格矩阵
```python
def square(n):
for i in range(n):
print("+ " + "- " * n + "+")
for j in range(n):
print("| " + " " * n + "|")
print("+ " + "- " * n + "+")
n = int(input("请输入阶数:"))
square(n)
```
运行结果截图见链接:https://img-blog.csdnimg.cn/20211018113703211.png
阅读全文