用C语言求解,一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位….)上的数字是奇数,偶数位(十位、千位、十万位 …·)上的数字是偶数,我们就称之为“好数” 给定一个正整数 N,请计算从 1 到 N 一共有多少个好数。
时间: 2024-12-15 11:17:37 浏览: 15
在C语言中,我们可以通过循环和条件判断来解决这个问题。首先,我们需要遍历所有从1到N的整数。对于每一个数,我们将其每一位分开处理,然后检查奇数位是否为奇数,偶数位是否为偶数。这个过程可以分为两步:
1. 将整数转换为字符串,便于逐位操作。
2. 遍历字符串,检查奇偶位。
这里有一个思路,我们可以创建一个计数器,每遇到一个符合条件的数就加一。以下是基本的步骤和伪代码:
```c
int countGoodNumbers(int N) {
int count = 0;
for (int i = 1; i <= N; i++) {
char numStr[10]; // 假设整数最多有6位
sprintf(numStr, "%d", i); // 转换为字符串
bool isOddPositionEven = true;
bool isEvenPositionOdd = true;
// 遍历每一位
for (int j = 0; j < strlen(numStr); j++) {
if (j % 2 == 0 && (numStr[j] - '0') % 2 != 0) {
isOddPositionEven = false;
}
if (j % 2 != 0 && (numStr[j] - '0') % 2 == 0) {
isEvenPositionOdd = false;
}
// 如果奇数位是偶数,偶数位是奇数,那么增加计数
if (isOddPositionEven && isEvenPositionOdd) {
count++;
}
}
}
return count;
}
```
阅读全文