从键盘上输入一个字符串,假定字符串的长度小于50,试分别统计每一种十进制数字的个数并输出。 怎么编啊
从键盘上输入一个字符串,假定字符串的长度小于50,试分别统计每一种十进制数字的个数并输出。就是比如键盘输入 2 4 2 4 3 4 3
统计出2出现2次,4出现3次,3出现2次。,怎么编啊
程序代码:
/*
题目:从键盘上输入一个字符串,假定字符串的长度小于50,试分别统计每一种十进制数字的个数并输出
*/
#include <stdio.h>
void main(int argc, char *argv[])
{
char input[51];//用来存储输入的数字字符串
printf("请输入您需要统计的字符串:\n");
scanf("%s",input);
/*录入需要统计的字符串*/
int i=0;//控制循环次数
int num[10]={0,0,0,0,0,0,0,0,0,0};//存储每个数字字符出现的次数
int numChar;//存储出现的字符
while(input[i]!='\0')//控制循环的结束:当出现空字符的时候结束
{
numChar=input[i]-48;//得到出现的字符
num[numChar]++;
i++;
}
/*得到我们出现的次数存储在num数组中*/
for(i=0;i<10;i++)
{
printf("%d出现的次数为:%d\n",i,num[i]);
}
/*按照格式输出结果*/
}
程序代码:/******************
*count: 这个函数就是用来达到你那个目的
*@__numbers: 这个就是你说的输入的那一串字符
*@__count: 这是一个指针,其实就是一个地址,你调用时定义一个数组(你打算用来存放计数结果),把这数组的地址传过来。
*@__count_len:你那个数组多长啊,应该是10个吧,每个元素用来存放出现次数
*************************************/
void count(const char *__numbers, int *__count, int __count_len)
{
/*这是一个标准c库函数,用来清空buffer*/
memset(__count, 0, __count_len);
while(*__numbers){
/*判断这个字符是不是数字,是的话就在记录这个数字出现次数的地方加1,同时指针指向下一个要检测的字符*/
if(isdigit(*__numbers))
__count[*__numbers - '0']++;
__numbers++;
}
}