1021 个位数统计 (15)(15 分)
给定一个k位整数N = d~k-1~*10^k-1^ + ... + d~1~*10^1^ + d~0~(0<=d~i~<=9, i=0,...,k-1,d~k-1~>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N =100311,则有2个0,3个1,和1个3。
输入格式:
每个输入包含1个测试用例,即一个不超过1000位的正整数N。
输出格式:
对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。
输入样例:
100311
输出样例:
0:2
1:3
3:1
代码第一次:
#include<cstdio>
#include<cstring> //这是个库函数
//有了这个头文件可以使用一系列有关字符串的操作,
//比方说判断长度,复制,比较大小等等。
int main (){
char str[1010];//正整数N不超过1000位
gets(str);//从键盘输入一个行字符串,到str
int len=strlen(str);//读取字符串str的长度,即N的位数
int count[10]={0};//用count[]数组记录数字0~9的出现次数,初值均为0
for(int i=0;i<len;i++){//for循环len次
count[str[i]-'0']++;//将str[i]对应的数字的count值加1
}
for(int i=0;i<10;i++){//枚举0~9
if(count[i]!=0){
printf("%d:%d\n",i,count[i]);
}
}
return 0;
}
样例运行没错:
扫描二维码关注公众号,回复:
1898442 查看本文章
但PTA显示编译错误:
搞不懂。。。LC的可以。日后研究。
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int a[10] = {0};
for (int i = 0; i < s.length(); i++)
a[s[i] - '0']++;
for (int i = 0; i < 10; i++) {
if (a[i] != 0)
printf("%d:%d\n", i, a[i]);
}
return 0;
}