PTA天梯赛 L1-003 个位数统计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38603541/article/details/88072647

这个题呢,上来一看题目中给的这个公式吓一跳,都是啥玩意,说实话,直到我做出来这道题目仍然没有看懂给的这个公式是啥意思 。好了,不叨叨了,说正事。

这个题呢简单来说就是让你统计所给的一串数中所有数字出现的频率以及这个数是啥,之前很多同学接触到的可能是只统计一串数字中某一个数字出现的次数,这个是比较简单的,一个循环结构就可以搞定,但是这个题需要考虑的因素还是比较多的,既要把数字出现的次数输出出来,又要输出这个数是啥,嗯。。还是比较头疼的吧。

先给大家把源码放这里,然后再给大家解释我们到底该怎样做这个题:

C/C++源码:

#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main(){
	int a[10] = {0};
	string s;
	cin >> s;
	for(int i = 0;i <s.size();i++){
		switch(s[i]){
			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;
		}
	}
	for(int i = 0;i<=9;i++){
		if(a[i]){
			cout << i << ":" << a[i] << endl;
		}
	} 
}

Java源代码:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		String string = scanner.nextLine();//以字符串形式输入
		
		char[] a = string.toCharArray();//将字符串转换为字符数字
		
		int[] b = new int[10];
		for(int i = 0;i < 10;i++) {//定义并初始化数组b
			b[i] = 0;
		}
		
		for(int i = 0;i < string.length();i++) {//进行统计字符个数
			switch (a[i]) {
				case '0':b[0]++; break;
				case '1':b[1]++; break;
				case '2':b[2]++; break;
				case '3':b[3]++; break;
				case '4':b[4]++; break;
				case '5':b[5]++; break;
				case '6':b[6]++; break;
				case '7':b[7]++; break;
				case '8':b[8]++; break;
				case '9':b[9]++; break;
			}
		}
		
		for(int i = 0;i <= 9;i++) {
			if(b[i] != 0) {
				System.out.println(i + ":" + b[i]);
			}
		}
		
		scanner.close();
	}
}

这两个代码其实逻辑是一样的,就是不同的语言可能对数据处理的复杂度不一样,写法上也有很大差别。

思路:我们先以字符串的形式将数据输入进来(Java要先进行处理一下,就是将字符串转换为字符数组),输入进来并处理之后呢,使用一个循环语句,控制条件为循环变量小于输入的字符串长度(怎么统计字符串长度就不需要多说了吧),循环里面在用一个switch语句进行统计不同的字符个数,看完代码之后,应该可以理解。最后输出,因为我们在定义数组b(C/C++里是数组a)的时候里面的数组元素全都初始化成为了0,因此我们只需要将最后个数不为零的项和该项对应的 i 值输出即可。

猜你喜欢

转载自blog.csdn.net/qq_38603541/article/details/88072647