题目
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在L到R范围内的水仙花数。
题目链接:http://www.noobdream.com/DreamJudge/Issue/page/1034/
新知识点:
for循环
for 循环允许您编写一个执行指定次数的循环控制结构。
for ( init; condition; increment ) {
...
...//循环的内容
}
下面是 for 循环的控制流:
例如上一节我们用while循环实现的1+2+3+...+n的题目也可以用for循环来实现
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int sum = 0;
for (int i = 1; i <= n; i++) {
sum = sum + i;
}
printf("%d\n", sum);
return 0;
}
是不是感觉特别简单,其实和while循环是一样的,只是写法不同。
题目解析:我们要求一个区间范围内有没有水仙花数,那么就需要for循环从L开始遍历每个数一直到R,然后判断循环到的每一个数是不是满足水仙花数的特征,如果是的话就输出来。
参考代码
#include <stdio.h>
int main() {
int m, n;
while (scanf("%d%d", &m, &n) != EOF) {// !=EOF的意思是一直读到文件末尾,EOF就是End Of File
if (m == 0 && n == 0) break;//如果m和n都是0的时候跳出循环,程序结束
int flag= 0;//flag变量用于标记区间内是否有水仙花数
for (int i = m; i <= n; i++) {//for循环遍历区间
int w = i, sum = 0;//w临时变量 sum存每一位分解之后的值得三次方和
while (w > 0) {//分解提取每一数位的值 通过不断取模和除10
...
1、请完成下面这道题目,检验一下自己是否学会了本节的内容。
传送门:点击这里
2、请完成下面这道题目,检验一下自己是否学会了本节的内容。
传送门:http://www.noobdream.com/Practice/article/30/
登录后开始许愿
关于!=EOF的作用注释里没讲清楚,只说EOF是文件末尾,搜索了一下,其实应该这样理解:
scanf的返回值由后面的参数决定
scanf(“%d%d”, &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF,且返回值为int型.EOF 是一个宏 ,一般定义为-1。
可以理解为EOF等于-1 其实就是scanf函数的返回值 不等于-1时 继续进行循环