1st 个位数统计

ltPTA | 程序设计类实验辅助教学平台千名教师建设,万道高质量题目,百万用户拼题的程序设计实验辅助教学平台https://pintia.cn/problem-sets/994805046380707840/problems/994805143738892288 以上为题目链接。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	char ac[1001];
	char times[10] = {0};
	scanf("%s", ac);
	
	int length = strlen(ac);
    for(int i = 0; i < length; i++){
    	switch(ac[i]){
    		case '0' : times[0]++; break;
    		case '1' : times[1]++; break;
			case '2' : times[2]++; break;
			case '3' : times[3]++; break;
			case '4' : times[4]++; break;
			case '5' : times[5]++; break;
			case '6' : times[6]++; break;
			case '7' : times[7]++; break;
			case '8' : times[8]++; break;
			case '9' : times[9]++; break;	 
		}
	}	
	
	for(int i = 0; i < 10; i++){
		if(times[i]){
			printf("%d:%d\n", i, times[i]);	   	
		}
	}

	return 0;
}

// 首先看到题目输入:一个不超过1000位的正整数, 即想到不能用int输入;可以用字符串或者long -----

//然后呢, 我们用数组来存储每个字符出现的次数,即数组下标表示对应字符, 数组中的数值表示这个字符出现的次数。这样我们就通过两个数组,一个来存储输入,一个用来表述对应字符的对应出现的次数。

//还有一点要注意,我在做题时遇到的问题,我看到标准要求的输出最后一行没有换行符,而我在第一次做的时候使用了为了达到标准输出要求, 把它写得更复杂了,就是很复杂(以后要记得把每一次的代码都保存下来,而不是最后一次)。 这里可以设置一个问题:如果说要求最后一行没有换行符,而前面多行是要有换行的,我们该做些什么固定的基本操作,来达到这个目的。

// 我这里的switch似乎用的不漂亮,也似乎是有更好的办法 ------

#include<stdio.h>
int main()
{
 long n; 
 int i;
 static int a[10];
 
 scanf("%ld",&n);
 while(n)
 {
  a[n%10]++;
  n/=10;
 }

 
 for(i=0;i<10;i++)
 {
  if(a[i]) printf("%d:%d\n",i,a[i]);
 }
 return 0;
}

// 以后尽量最简单的方法写, 不要怕错 , 这样才会快 。这里的a[n%10]++ 就是最好的例子。

// 以后应该知道的内容 : 自己的做题过程(错的与对的都要); 相应每种过程的思路 ; 经验与教训

//                                                                                                                                            2022/5/7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值