解题思路:可以用switch语句来解决此题,写一个来计算一个数的位数的函数,写一个计算好数个数的函数,在此函数中需要调用前一个函数

用一个数组来保存这个数的奇偶信息,如果为1则该位为奇数,反之,则为偶。用一个全局变量来表示好数的个数



注意事项:swich语句格式

参考代码:

#include<stdio.h>

int count=0;//好数计数的变量

int sum(int i)//计算这个数的个数

{

int s=0;

while(i)

{

i=i/10;

s++;

}

return s;

}

void haoshu(int i)

{

int a[7];//如果为1则该位为奇数,反之,则为偶

a[0]=i%10%2;

a[1]=i/10%2;

a[2]=i/100%10%2;

a[3]=i/1000%10%2;

a[4]=i/10000%10%2;

a[5]=i/100000%10%2;

a[6]=i/1000000%10%2;

switch (sum(i))//参数为这个数的位数

{


case 1: 

if(i%10%2)

{count++;

}

break;

case 2:

if(a[0]&&a[1]==0)

{count++;

}

break;

case 3:

if(a[0]&&a[1]==0&&a[2])

count++;

break;

case 4:

if(a[0]&&a[1]==0&&a[2]&&a[3]==0)

count++;

break;

case 5:

if(a[0]&&a[1]==0&&a[2]&&a[3]==0&&a[4])

count++;

break;

case 6:

if(a[0]&&a[1]==0&&a[2]&&a[3]==0&&a[4]&&a[5]==0)

count++;

break;

case 7:

if(a[0]&&a[1]==0&&a[2]&&a[3]==0&&a[4]&&a[5]==0&&a[6])

count++;

break;

default:break;

}

}

int main()

{

int a;

scanf("%d",&a);

int i;

for(i=1;i<=a;i++)

haoshu(i);

printf("%d",count);//输出好数的个数

return 0;


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论