【B1021】个位数统计 (15)---3.6字符串处理

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;
}

猜你喜欢

转载自blog.csdn.net/iyansuan/article/details/80922754
今日推荐