1. 程式人生 > >輸入一串由英文和空格組成的句子,輸出指定內容

輸入一串由英文和空格組成的句子,輸出指定內容

輸入一串由英文和空格組成的句子,可能出現一個或多個空格,不區分大小寫。

(1)輸出該句子中字母的個數。

(2)輸出該句子中單詞的個數。

(3)輸出該句子中出現次數最多的字元和次數。

例如:“thiS IS my   love”

輸出:字母個數12 ,單詞個數4,最多的字元i s 次數為2

#include <stdio.h>
#include <string.h>
int main(){
	char ch[1000];
	int z[27]={0};//用來記入每一個字母出現的次數 
	int i,tmp,maxindex=0,maxnum=0,charcount=0,count=0;//maxnum出現最多字母的次數,charcount字母的個數 ,count單詞的個數 
		gets(ch);//scanf("%s",ch)接受輸入會過濾掉空格 
	//	puts(ch);
		int len = strlen(ch),flag=0;//flag用於標記,有助於判斷單詞個數 
		for(i=0;i<len;i++){
			if(ch[i]>='a'&&ch[i]<='z'){ 
				flag=1;
				charcount++;//字母個數加一
				tmp = ch[i]-'a';
				z[tmp]++;
				if(maxnum<z[tmp]){//判斷出現次數最多的字元 
					maxnum = z[tmp];
					maxindex = tmp; 
				}	
			
			} 
			if(ch[i]>='A'&&ch[i]<='Z'){ 
				flag=1;
				charcount++;//字母個數加一
				tmp = ch[i]-'A';
				z[tmp]++;
				if(maxnum<z[tmp]){//判斷出現次數最多的字元 
					maxnum = z[tmp];
					maxindex = tmp; 
				}
				
			} 
			if(flag==1&&ch[i]==' '){
				count++;
				flag=0 ;
			}
		}
		if(flag=1&&i>=len){//如果最後一個單詞後沒有空格 
				count++;
				flag=0 ;
		}
			
	printf("字母個數%d\n",charcount);
	printf("單詞個數%d\n",count);
	for(i=0;i<26;i++){ //有可能出現最多次數的字元有多個。 
		if(z[i]==maxnum)
			printf("出現最多次數的字母%c\n",i+'a');
	}
	printf("出現最多次數的字母的次數%d\n",maxnum);
		
	return 0;
}