输入一个正整数n,且1 <= n <= 2000。 输出c语言 输出在自然数1~n范围内数字2的个数。
时间: 2024-10-23 09:16:36 浏览: 44
南开一百题(C语言)
在C语言中,你可以通过遍历从1到n的所有整数,并对每个数检查其二进制表示中是否有至少一个"1"来计算含有数字"2"的数字的数量。以下是一个简单的C程序实现:
```c
#include <stdio.h>
int count_twos(int n) {
int count = 0;
for (int i = 1; i <= n; i++) {
// 将i转换成二进制字符串,然后统计'1'
char binary[5]; // 够存放最多4位二进制数和一位终止符'\0'
sprintf(binary, "%d", i);
int binary_count = 0;
for (char bit : binary) {
if (bit == '1') {
binary_count++;
}
}
// 如果二进制中有'1',则count++
if (binary_count > 0) {
count++;
}
}
return count;
}
int main() {
int n;
printf("请输入一个正整数n (1 <= n <= 2000): ");
scanf("%d", &n);
if (n >= 1 && n <= 2000) {
int result = count_twos(n);
printf("在1~%d范围内数字2的个数是:%d\n", n, result);
} else {
printf("输入错误!n必须在1到2000之间。\n");
}
return 0;
}
```
这个程序首先获取用户输入的`n`,然后调用`count_twos`函数计算符合条件的数字。如果输入有效,它将输出结果;如果输入无效,则给出错误提示。
阅读全文