求100以内能被5整除且个位不为5的数的和,C语言

如题所述

第1个回答  2023-01-24
#include<stdio.h>
int main()
{
int i = 0;
int m = 0;
int x = 0;
for (i = 100; i > 0; i -= 5)
{
m = i / 5;
if (m % 5 != 0)
{
printf("%d ", m);
x += m;
}

}
printf("总和=:%d", x + 10);
return 0;
}
第2个回答  2023-03-10
可以用容斥原理来求解这个问题。设集合 A 是不超过100的能被5整除的正整数构成的集合,集合 B 是不超过100的个位数为5的正整数构成的集合,那么不超过100的能被5整除且个位不为5的正整数构成的集合为 A-B ,即 A\cap B^c 。要求的就是集合 A-B 中元素的个数,即 |A-B| 。
由于 |A-B| = |A| - |A\cap B| ,所以只要求出 |A| 和 |A\cap B| 即可。容易知道, |A| = 20 ,因为 100/5 = 20 。而 |A\cap B| = 2 ,因为只有15和55满足条件。所以 |A-B| = 18 ,即有18个这样的数。
用C语言编写一个函数来实现这个算法,可以参考以下代码:
#include <stdio.h>//定义一个函数,计算100以内能被5整除且个位不为5的数的和int sum(int n){ int i, s = 0; //定义循环变量和累加变量
for (i = 1; i <= n; i++) //遍历1到n之间的所有整数
{ if (i % 5 == 0 && i % 10 != 5) //如果能被5整除且个位不为5
{
s += i; //累加到s中
}
} return s; //返回s作为函数值}int main(){ int n = 100; //定义n为100
int result = sum(n); //调用函数计算结果
printf("The sum is %d\n", result); //输出结果
return 0;
}
第3个回答  2023-03-13
以下是用C语言编写的求100以内能被5整除且个位不为5的数的和的程序:

```c
#include <stdio.h>

int main() {
int sum = 0;

for (int i = 1; i < 100; i++) {
if (i % 5 == 0 && i % 10 != 5) { // 判断条件
sum += i; // 累加符合条件的数
}
}

printf("100以内能被5整除且个位不为5的数的和为:%d\n", sum);
return 0;
}
```

在这个程序中,我们使用一个循环枚举从1到99之间的数字,并使用if语句来判断每个数字是否同时满足两个条件:能够被5整除并且个位数不为5。如果满足条件,则将该数字添加到累加器变量`sum`中。最后,输出`sum`的值即可得到结果。

需要注意的是,在条件语句中,使用了逻辑运算符`&&`来连接两个判断条件。`i % 5 == 0`表示i能够被5整除,`i % 10 != 5`表示i的个位数不为5。只有当这两个条件都满足时,才执行累加操作。
相似回答