含5的自然数的和

含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;
}

//判断是否含5
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; // 百位数字(0表示不足三位)
tens = (i / 10) % 10; // 十位数字
units = i % 10; // 个位数字

// 判断是否包含数字5
if (hundreds == 5 || tens == 5 || units == 5) {
sum += i;
}
}

printf("%d\n", sum);
return 0;
}

嗯,怎么说呢,可读性比我高,思路不一样

  • AI写的代码需要计算每一位是否为5,而我利用循环从个位开始取值,一旦出现5就终止循环
  • AI的代码有局限性(根据题目要求三位数的范围),而我写的代码可以适用高位数(小于2147483647)

也是好代码


含5的自然数的和
http://example.com/2025/11/18/含5的自然数的和/
作者
王柏森
发布于
2025年11月18日
许可协议