B1021 字符串输入输出
2020-03-28 20:02
106 查看
题目描述
1021. 个位数统计 (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
错误代码
#include<cstdio> int main(){ //题目要求1000位整数 用int型(10的9次方以内可用不行 int a[10] = {0}; int N, i; scanf("%d", &N); while(N){ i = N % 10; a[i]++ ; N = N / 10; } for(int j = 0; j < 10; j++){ if(a[j] != 0){ printf("%d:%d\n", j, a[j]); } } return 0; }
错误原因
0.未注意题目要求 1000位的整数 int型只能存储10的9次方以内的数字。因此只能用字符串来存储。
AC代码
#include<iostream> #include<string> using namespace std;int main(){ //题目要求1000位整数 用int型(10的9次方以内可用不行 int a[10] = {0}; string str; cin >> str; //字符串的输入 for(int i = 0; i < str.length(); i++) a[str[i] - '0']++; for(int j = 0; j < 10; j++){ if(a[j] != 0){ printf("%d:%d\n", j, a[j]); } } return 0; }
知识点
0.最基本的 利用string需要改变头文件 写上
#include<string> using namespace std;
1.字符串额输入输出问题
我开始利用的
scanf("%s", str);编译未通过。
一般情况下,对已存放好的字符串进行访问直接利用
printf("%c", str[i])是没问题的。
但若要输入或输出整个字符串,则只能利用cin count (在iostream头文件中,因此需要更改一下头文件
#include<iostream)
硬要利用scanf和printf的话,可以用c_str()将string类型数组转换为字符数组进行输出。即
printf("%s", str.c_str() );
以后记得整个字符串的输入输出直接用cin count即可。
2.取字符串数组某一位的数字:
str[i] - '0'
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 字符串的输入输出
- 7-5 jmu-python-输入输出-格式化输出字符串
- (字符串的处理4.7.13)POJ 2141 Message Decowding(字符串的加密与解密&&所有都是字符且是2行形式的输入输出处理)
- 整数数组排序(字符串输入输出)
- 找出一个字符串中的最长奇数回文。在控制台输入输出。
- java核心技术卷I-字符串及输入输出
- scanf(),printf()和gets(),puts()在输入输出字符串时的区别
- 字符串的输入输出处理
- 算法提高 3-2字符串输入输出函数
- 字符串输入输出
- C Primer Plus 第4章 字符串和格式化输入输出--4.2 字符串简介
- 《C和指针》读书笔记--标准输入输出函数和基础的字符串操纵函数
- C++字符串的输入输出
- java数据类型 变量,运算符,字符串,输入输出,数组,大数值
- 华为机试—整数数组排序(字符串输入输出)
- 回声-输入输出练习(字符串)
- 问题 1094: 字符串的输入输出处理
- 字符串输入输出(文件操作)
- c primer plus第4章总结:字符串和格式化输入输出
- 1087 字符串输入输出(1)