#include <stdio.h> int main() { long long N,m; int a[12]={0},b,c,d; while(scanf("%lld",&N)!=EOF) { for(int n3=0;n3<=11;n3++){ a[n3]=0; } m=N; for(int n1=1;; n1++) { b=m%10; switch (b) { case 0: a[0]++; break; case 1: a[1]++; break; case 2: a[2]++; break; case 3: a[3]++; break; case 4: a[4]++; break; case 5: a[5]++; break; case 6: a[6]++; break; case 7: a[7]++; break; case 8: a[8]++; break; case 9: a[9]++; break; } m=m/10; if(m==0) { break; } } for(int n2=0;n2<=9;n2++){ if(a[n2]>0){ printf("%d:%d\n",n2,a[n2]); } } } return 0; } 我的代码为什么对下面的问题输出结果只有 0:4200193 2:16 8:13177920 题目描述 给定一个k位整数N,请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1和1个3。 输入 输入有多个,每行包含1个测试用例,即一个不超过1000位的正整数N。 输出 对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。 样例输入 复制 100311 1 样例输出 复制 0:2 1:3 3:1 1:1
时间: 2024-03-30 20:35:01 浏览: 75
#include "graphics.h" #include "graphics.h"
这段代码是一个统计数字出现次数的程序,输入一个正整数 N,然后统计 N 中每个数字出现的次数并输出。输出格式是按照数字升序输出,每行输出一个数字及其出现的次数,格式为 D:M,其中 D 为数字,M 为出现的次数。
程序使用了数组 a 来记录每个数字出现的次数,然后使用循环逐位取出 N 中的数字,根据数字的值更新数组 a,最后遍历数组 a 输出结果。
输出结果中只有 0:4200193 2:16 8:13177920 三组数据,可能是因为输入数据中只包含这些数字,其他数字没有出现过,所以数组 a 中对应的位置一直是 0,没有被更新。
阅读全文