两类题型
1.例如 1 2 3 2 1 -1 然后计数
#include <stdio.h>
#include <stdlib.h>
int main()
{
//解决计数问题,当输入-1的时候代表停止输入
/*
思路
通过数组cout[]作为计数器,每次键入的值如果为0-9,则该cout[i]++ cout[i]表示键入数字的容器,每键入一次加1
*/
int num, i;
int cout[10];
for (i = 0; i < 10; i++)
{
cout[i] = 0;
}
scanf("%d",&num);
while(num != -1)
{
if (num>=0 && num <= 9)
{
cout[num]++;
}
scanf("%d",&num);
}
for (i = 0; i < 10; i++)
{
printf("%d出现的次数为%d\n", i, cout[i]);
}
}
核心在于使用scanf与while的结合方法
2.例如输入整型123321,计数
#include <stdio.h>
#include <stdlib.h>
int main()
{
/*
问题:键入一个整型,计算整型数字中每个数字出现的个数
思路
例 1223
1.接收数字后,使用每次取末位的方式,取出 (循环终止条件为num!=0) number接收末位数字
2.放在cout[i]计数器中
3.打印
1223
num = 1223
number = 3 num = 122 cout[3] = 1
2 12 cout[2] = 1
2 1 cout[2] = 2
1 0 cout[1] = 1
*/
int num, number, i;
int cout[10];
scanf("%d",&num);
for (i = 0; i < 10; i++)
{
cout[i] = 0;
}
while(num != 0)
{
number = num % 10;
num = num / 10;
if (number >=0 && number <= 9)
{
cout[number]++;
}
}
for (i = 0; i < 10; i++)
{
printf("%d出现的次数为%d\n", i, cout[i]);
}
}
和第一种类似
两种方法都要注意,使用数组之前,要对其初始化
for (i = 0; i < 10; i++)
{
cout[i] = 0;
}
原文:https://www.cnblogs.com/zhaoy-shine/p/10828143.html