前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PTA刷题记录:L1-003 个位数统计 (15分)

PTA刷题记录:L1-003 个位数统计 (15分)

作者头像
英雄爱吃土豆片
发布2020-10-29 10:57:06
9500
发布2020-10-29 10:57:06
举报
文章被收录于专栏:英雄爱吃土豆片

L1-003 个位数统计 (15分)

题目要求: 给定一个k位整数N = dk-110k-1 + … + d1101 + d0 (0<=di<=9, i=0,…,k-1, dk-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

解题思路: 定义一个用来存放统计结果的数组,遍历字符串,将对应数字出现的个数统计到该数组中。最后遍历该数组,将不为 0 的元素及其对应的数字输出,其对应的数字即为元素对应的下标值。

通关代码:

代码语言:javascript
复制
#include <iostream>
#include <string>

using namespace std;

int main() {
	string str;
	int arr[10]{0}; 
	
	cin >> str;
	
	for (string::iterator p = str.begin(); p != str.end(); p++) {
		switch (*p) {
			case '0': arr[0]++; break;
			case '1': arr[1]++; break;
			case '2': arr[2]++; break;
			case '3': arr[3]++; break;
			case '4': arr[4]++; break;
			case '5': arr[5]++; break;
			case '6': arr[6]++; break;
			case '7': arr[7]++; break;
			case '8': arr[8]++; break;
			case '9': arr[9]++; break;
		}
	}
	for (int i = 0; i < 10; i++) {
		if (arr[i] != 0) {
			cout << i << ":" << arr[i] << endl;
		}
	}
	
	return 0;
} 

通关截图:

在这里插入图片描述
在这里插入图片描述

值得一提: 这道题我写了很多遍,每一次的结果都是没问题的,但是总是出现一个错误,最后我发现是输入有问题:得以一个字符串的形式输入这个整数。。。而我出错的代码都是用 int 型数据输入的。因为 int 型能存放的整型数据可远远到达不了 1000 位。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • L1-003 个位数统计 (15分)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档