統計字符串中各類字符的個數

                                                統計字符串中各類字符的個數

一、題目描述

  從鍵盤輸入一行字符串,統計其中的大寫字母、小寫字母、空格、數字、和其他字符的個數。(更好的閱讀體驗,請瀏覽統計字符串中各類字符的個數

二、分析解答

  本題主要考察C語言字符串的相關知識點。字符串處理是C語言中很重要的一個知識點,但在C語言彙總並沒有字符串類型,因此,只能採用字符數組或者字符指針的形式來使用字符串。要記住一點,不論我們使用的是字符串常量還是字符串變量,爲了方便處理字符串,系統自動 給字符串加上一個結束標誌’\0’(’\0’代表ASCII爲0的字符,他不是可顯示字符,只是一個空操作符,提供標誌辨識功能,用它做結束標誌不會產生附加的操作或者增加有效字符)。字符串在內存中連續存儲,佔用一塊連續的空間。
  代碼如下:

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

int main(){

	int n,i=0,alpha=0,Alpha=0,digit=0,space=0,other=0;

	char *str;

   //輸入N,確定字符串長度是多少;然後申請相應長度的地址空間並賦值給str。
	scanf("%d",&n);
	//   消去scanf函數 遺留下來的換行符 對統計的干擾
	getchar();

	if((str = (char *)malloc(n * sizeof(char))) == NULL){
	
		printf("Not able to allocate memory");
		exit(1);
	}

   //輸入字符串。這裏要注意,字符輸入函數的選取,scanf因爲不能接受空格,會導致最終統計結果的不準確,故在此選用gets()/getchar();

	gets(str);

	//統計字符個數。 字符串以'\0'爲終止符在內存中連續存儲的,
	while(*(str+i) != '\0'){
	
			if(*(str+i) >= 'A' && *(str+i) <= 'Z' ) {  //大小字母
				 Alpha ++;
			}else if(  *(str+i) >= 'a' && *(str+i) <= 'z'  ){  //小寫字母
				 alpha ++;
			}else if( *(str+i) >= '0' && *(str+i) <= '9' ){   // 數字
				  digit ++;
			}else if( *(str+i) == ' ' ){   //空格
				  space ++;
			}else{  //其他字符
				other ++;
			}

			i++;
	}
	printf("alpha = %d \n  Alpha = %d\n  digit = %d \n  space=%d\n other=%d \n ",alpha,Alpha,digit,space,other);

	return 0;

}

  也可以使用下列方式:

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

int main(){

	int n,i=0,alpha=0,Alpha=0,digit=0,space=0,other=0;

	char *str;

   //輸入N,確定字符串長度是多少;然後申請相應長度的地址空間並賦值給str。
	scanf("%d",&n);
	//   消去scanf函數 遺留下來的換行符 對統計的干擾
	getchar();

	if((str = (char *)malloc(n * sizeof(char))) == NULL){
	
		printf("Not able to allocate memory");
		exit(1);
	}

   //輸入字符串。這裏要注意,字符輸入函數的選取,scanf因爲不能接受空格,會導致最終統計結果的不準確,故在此選用gets()/getchar();
	
	//也可以使用這個方式輸入字符串
		while(i<=n){
	
		*(str+i) = getchar();

		i++;
	}
	
	//  也可以根據輸入的字符個數循環遍歷字符串

	  	for(i=0;i<n;i++){
	
				if(*(str+i) >= 'A' && *(str+i) <= 'Z' ) {  //大小字母
					 Alpha ++;
				}else if(  *(str+i) >= 'a' && *(str+i) <= 'z'  ){  //小寫字母
					 alpha ++;
				}else if( *(str+i) >= '0' && *(str+i) <= '9' ){   // 數字
					  digit ++;
				}else if( *(str+i) == ' ' ){   //空格
					  space ++;
				}else{  //其他字符
					other ++;
				}
	   }
	
	

	printf("alpha = %d \n  Alpha = %d\n  digit = %d \n  space=%d\n other=%d \n ",alpha,Alpha,digit,space,other);

	return 0;

}

三、歸納總結

  1,字符串處理在計算機中會經常遇到,因此,瞭解字符串的定義、初始化、輸入輸出、存儲方式等至關重要。
  2,C語言編譯系統會自動的在字符串末尾添加’\0’辨識符作爲字符串結束的標誌,因此,在循環讀取字符串中的字符時可以使用這個標誌作爲循環跳出的判斷。
  3,爲了方便字符串的輸入輸出,C語言提供了除 scanf()之外的getchar()、gets()函數。可以方便我們對字符串進行輸出輸出。 
  4,字符數組的數組名是字符串首地址,是一個常量,不可以對其進行運算,字符串指針是一個指針變量,可以進行運算,因此可以更靈活的操作字符串,提高字符串的處理效率。
  (如果有任何問題,可以在下方評論留言,謝謝)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章