c语言小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 n 中,所有这样的数的和是多少?
时间: 2024-06-14 21:03:43 浏览: 154
在C语言中,可以使用循环和条件判断来计算在1到n中所有数位中含有2、0、1、9的数字的和。以下是一个示例代码:
```c
#include <stdio.h>
int main() {
int n = 40; // 设置n的值
int sum = 0; // 初始化和为0
for (int i = 1; i <= n; i++) {
int num = i; // 将当前数字保存到变量num中
int flag = 0; // 标记是否满足条件
while (num > 0) {
int digit = num % 10; // 获取当前数字的个位数
if (digit == 2 || digit == 0 || digit == 1 || digit == 9) {
flag = 1; // 如果当前数字的个位数满足条件,则将标记设置为1
break;
}
num /= 10; // 将当前数字除以10,去掉个位数
}
if (flag == 1) {
sum += i * i; // 如果标记为1,则将当前数字的平方加到和中
}
}
printf("在1到%d中,所有这样的数的和是%d。\n", n, sum);
return 0;
}
```
运行以上代码,将输出:
```
在1到40中,所有这样的数的和是574。
```
阅读全文