/*一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位 · · · )上的数字是奇数,
偶数位(十位、千位、十万位 · · · )上的数字是偶数,
我们就称之为“好数”。给定一个正整数 N,请计算从 1 到 N 一共有多少个好数。
*/
- 遍历1-N
- 1-N中的数字是否是好数,是count++否不加
- 好数判断,把数字拆分先是奇数位存放在js数组中,偶数位存放在os数组中
- 判断js数组,os数组
- 满足则为好数 ,不满足不是
#include <stdio.h> #define MAX 20 int f(int a){ int os[MAX],js[MAX],count1=0,count2=0; int i=0,j=0; while (a > 0) { js[i++] = a % 10; a /= 10; if (a > 0) { os[j++] = a % 10; a /= 10; } } for (int k = 0; k < i; k++) { if (js[k] % 2!= 0) { count1++; } } for (int k = 0; k < j; k++) { if (os[k] % 2 == 0) { count2++; } } if (count1 == i && count2 == j) { return 1; } return 0; } int main(){ int N,number=0; printf("输入N="); scanf("%d",&N); for(int i=1;i<=N;i++){ if(f(i)){ number++; } } printf("1-%d有%d个好数",N,number); return 0; }