C語言統計一個字符串中大寫字母的個數,字符字母與數字的相互轉換


問題:

         給你一串字符串由“A-Z”組成代表不同類型的飛龍。比如“BCABCA”,你需要以JHL統計法來統計下每個字母的數量,即輸出每個字母的數量在這個字母之前,比如答案為“2A2B2C”。(答案按照字典序輸出,即答案不能為2B2C2A)。

輸入:

        第一行輸入一個T(T<=500)表明有T組測試樣例,在每個測試樣例中,輸入一個字符串,不超過1000個字母,保證都為大寫字母。

輸出:

         對於每個測試樣例,輸出占一行,按上文描述輸出結果。

例如:

         輸入: 1                      輸出:2A2B2C

                     ABCABC

代碼:

#include <stdio.h>

void main()
{
	int i,t;
	char str[1000];
	scanf("%d",&t);
	while(t--)
	{
		int a[100]={0};
		scanf("%s",str);
		for(i=0;i<strlen(str);i++)
		{
			a[str[i]-'A']++;
			//str[i]-'A'是把字母轉換成數字,在數組a中儲存起來,如str[i]=C
			//則 str[i]-'A'=2;a[str[i]-'A']++是數組a[i]的自增運算。第一次
			//循環a[2]=1;再循環一次就是a[2]=2;為的是統計相同字母的個數 
		}
		for(i=0;i<26;i++)
		{
			if(a[i] != 0)
			{
				printf("%d%c",a[i],i+'A');//數字i加上字母'A',結果也是字母如:2+'A'='C' 
			}
		}
		printf("\n");
	}
 }

擴展:

  a[str[i]-'A']++ 如果換成“ a[str[i]-65]++“。效果是一樣的。

      根據ASCII字符表,'A'對應數字65,以此類推'Z'對應數字90,所以如果str[i]='Z',則a[str[i]-65]=25;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM