L1-003 个位数统计 (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<stdio.h>
#include<string.h>
int main(){
char d[1001];
int b[10]={0};
gets(d);
int a=strlen(d);
for(int i=0;i<a;i++){
b[d[i]-'0']++;
}
for(int i=0;i<10;i++){
if(b[i]!=0){
printf("%d:%d\n",i,b[i]);
}
}
return 0;
}
第一次提交: 答案部分正确,查看后竟是没换行 第二次提交: 还是不对,仔细检查后,发现我gets()写在int a=strlen(d);之后 导致错误
#include<stdio.h>
#include<string.h>
int main(){
char d[1001];
int b[10]={0};
int a=strlen(d);
gets(d);
for(int i=0;i<a;i++){
b[d[i]-'0']++;
}
for(int i=0;i<10;i++){
if(b[i]!=0){
printf("%d:%d",i,b[i]);
}
}
return 0;
}
|