含5的自然数的和
这绝对是我目前写过最优美的代码了!!!
题目:
编程计算n以内(包括n,0<n<1000)含5的所有自然数(例如:5,15,25,50,405等,不超过三位数)的和。其中n的值由键盘输入。
注:(1)不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。
(2)用标准C语言编程,所有变量必须在第一条可执行语句前定义。
(3)输入输出格式要和以下给定格式完全一致。
**输入提示信息:”Input n(0<n<1000)\n”
**输入数据格式:”%d”
**输出格式:”%d\n”
运行示例:
Input n(0<n<1000)
500
24450
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h>
int is_contianfive(int);
int main() { int n, sum=0; printf("Input n(0<n<1000)\n"); scanf_s("%d", &n); for (;n > 0;n--) { if (is_contianfive(n)) { sum += n; } } printf("%d\n", sum); return 0; }
int is_contianfive(int n) { int last; while (n != 0) { last = n % 10; if (last == 5) { break; } n /= 10; } return last == 5; }
|
利用了刚学的函数封装
是我自己独立写的哟,既然又是给自己看,我在这里就不再分析代码里了
慢慢欣赏吧~
ai写的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| int main() { int n, i, sum = 0; int hundreds, tens, units;
printf("Input n(0<n<1000)\n"); scanf("%d", &n);
for (i = 1; i <= n; i++) { hundreds = i / 100; tens = (i / 10) % 10; units = i % 10;
if (hundreds == 5 || tens == 5 || units == 5) { sum += i; } }
printf("%d\n", sum); return 0; }
|
嗯,怎么说呢,可读性比我高,思路不一样
- AI写的代码需要计算每一位是否为5,而我利用循环从个位开始取值,一旦出现5就终止循环
- AI的代码有局限性(根据题目要求三位数的范围),而我写的代码可以适用高位数(小于2147483647)
也是好代码