全WA求调,已经很清晰了
查看原帖
全WA求调,已经很清晰了
1534254
Byt3W1sp楼主2024/11/29 21:48
#include <stdio.h>
#include <string.h>
// 定义26位int数组用来储存字母的出现次数 
int alpha[26]={0};
int main(){
	//获取四行输入
	for(int i=0; i<4; i++){
		char temp[120];
		fgets(temp, sizeof(temp), stdin);
		temp[strlen(temp)-1]='\0';
		// 遍历temp 填充alpha数组 
		for(int j=0, n=strlen(temp); j<n; j++){
			int index=(temp[j]-'A')%26;
			if(index>=0 && index<=25) alpha[index]++;
		}  
	}
	// 取出alpha中表示的最大出现次数,这个用来表示我们需要打印几行*号(for) 
	int max=0;
	for(int i=0; i<26; i++)
		if(alpha[i]>max) max=alpha[i];
	// 开始打印*号 
	 for(int i=max; i>0; i--){
		 for(int j=0; j<26; j++){
			// flag1和flag2分别用来去掉末尾*的空格,最后一个*后面的全部空格 
			int flag1=0, flag2=0;
			if(alpha[j]>=i){
				printf("*");
				for(int k=j+1; k<26; k++)
					if(alpha[k]>=i) flag1=1;
				if(flag1) printf(" ");
				else break;
			}
			else{
				// 删除后面全是空格的空格
				for(int k=j+1; k<26; k++)
					if(alpha[k]>=i) flag2=1;
				if(flag2) printf("  ");
				else break; 
			}
			// 确保没有打印多余的空格 
		}
		printf("\n");
	}
	// 最后打印26个字母
	for(int i=0; i<26; i++){
		printf("%c", (char)(i+'A'));
		if(i<25) printf(" ");
	}
	return 0;	 
}
2024/11/29 21:48
加载中...