用C语言求1到9999的自然数中,某个数字出现的次数

之前有个高中同学在群里发了道题目,应该是他弟弟的作业,原题如下:0到1000的自然数中,有一个数字出现了301次,请问:这个数字是几?

看完之后,我突然心血来潮,决定用刚学的C语言试试,效果图如下
在这里插入0到1000的自然数中,各个数字出现的次数图片描述
代码如下,希望对你有帮助

#include<stdio.h>
#include<stdlib.h>

void shuju(int q)//定义一个函数,功能为在0~9999之间取一个数,然后求出0到该数之间每个数字出现的次数
{int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m;//a表示1出现的次数,b表示2出现的次数,以此类推
for(m=0;m<=q;m++)
{
	switch(m%10)//判断个位
		{case 1:a++;break;
		case 2:b++;break;
		case 3:c++;break;
		case 4:d++;break;
		case 5:e++;break;
		case 6:f++;break;
		case 7:g++;break;										  
		case 8:h++;break;
		case 9:i++;break;
		case 0:j++;break;}
	if(m>9)
	{switch((m/10)%10)//判断十位
		{case 1:a++;break;
		case 2:b++;break;
		case 3:c++;break;
		case 4:d++;break;
		case 5:e++;break;
		case 6:f++;break;
		case 7:g++;break;										  
		case 8:h++;break;
		case 9:i++;break;
		case 0:j++;break;}}
	if(m>99)
	{switch(m/100)//判断百位
		{case 1:a++;break;
		case 2:b++;break;
		case 3:c++;break;
		case 4:d++;break;
		case 5:e++;break;
		case 6:f++;break;
		case 7:g++;break;										  
		case 8:h++;break;
		case 9:i++;break;
		case 0:j++;break;}
	}
		if(m>999)
	{switch((m/100)/10)//判断千位
		{case 1:a++;break;
		case 2:b++;break;
		case 3:c++;break;
		case 4:d++;break;
		case 5:e++;break;
		case 6:f++;break;
		case 7:g++;break;										  
		case 8:h++;break;
		case 9:i++;break;
		case 0:j++;break;}
	}
}
printf("“1”出现%d次 “2”出现%d次 “3”出现%d次 “4”出现%d次 “5”出现%d次\n",a,b,c,d,e);
printf("“6”出现%d次 “7”出现%d次 “8”出现%d次 “9”出现%d次 “0”出现%d次\n",f,g,h,i,j);//输出
return ;}
void  main()
{
int p;
printf("请输入一个自然数:");
scanf("%d",&p);//通过键盘输入一个数
shuju(p);//调用函数
system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值