C语言练习题-C语言练习题实例83
题目:统计由 0-7 这 8 个数字所能组成的奇数的个数。
程序分析:根据题目的要求,我们可以观察到以下规律:
- 对于一个 n 位数,最后一位如果是奇数(1、3、5、7),那么这个数一定是奇数,无论前面的位数是什么。
- 如果最后一位是偶数(0、2、4、6),那么这个数一定是偶数。
因此,我们只需要计算每个位数上的奇数个数,并进行累加即可。
实例
#include<stdio.h>
int main() {
long sum = 4; // 初始值为 4,表示只有一位数字组成的奇数个数为 4 个
long s = 4; // 每增加一位数,奇数个数乘以的倍数
int j;
for (j = 2; j <= 8; j++) {
printf("%d 位数为奇数的个数:%ld\n", j-1, s);
if (j <= 2)
s *= 7;
else
s *= 8;
sum += s;
}
printf("%d 位数为奇数的个数:%ld\n", j-1, s);
printf("奇数的总个数为:%ld\n", sum);
return 0;
}
以上程序运行输出结果为:
1 位数为奇数的个数:4
2 位数为奇数的个数:28
3 位数为奇数的个数:224
4 位数为奇数的个数:1792
5 位数为奇数的个数:14336
6 位数为奇数的个数:114688
7 位数为奇数的个数:917504
8 位数为奇数的个数:7340032
奇数的总个数为:8388608
通过此程序,我们可以统计由 0-7 组成的奇数的个数。每增加一位数,奇数个数乘以的倍数也相应增加。最终,我们得到了奇数的总个数为 8388608。