天天看點

統計且輸出字元串中字母的個數

5、從鍵盤輸入一個字元串(注意:字元串中含有空格),使用字元數組型和字元型指針來實作程式的功能,統計且輸出字元串中字母的個數。

一開始:

#include<iostream>
using namespace std;

int main()
{
	char a[10];
    //char *p;
	int i,j;
	cout<<"請輸入字元串(字元串中含有空格)"<<endl;
	cin>>a;
	j=0;
	for(i=0;i<=10;i++)
	{
		cout<<a[i]<<endl;
		if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
			j++;
	} 
	cout<<"字元串中有"<<j<<"個字母"<<endl;
	return 0;
}
           

運作結果(如下)顯然是錯誤的,隻統計了第一個空格之前的字元:

統計且輸出字元串中字母的個數

思考問題:應該是程式把空格當做了結束輸入的指令。

修改如下:

#include<iostream>
using namespace std;

int main()
{
	char a[10];
    //char *p;
	int i=0,j=0;
	cout<<"請輸入字元串(字元串中含有空格)"<<endl;
	//cin>>a;
	do
	{
		a[i]=getchar();
		i++;
	}
	while(a[i-1]!='\n');
	
	for(i=0;i<=10;i++)
	{
		cout<<a[i]<<endl;
		if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
			j++;
	} 
	cout<<"字元串中有"<<j<<"個字母"<<endl;
	return 0;
}
           

運作結果如下:

統計且輸出字元串中字母的個數

顯然,核心修改代碼如下,使得輸入結束隻能有回車操作:

do
{
	a[i]=getchar();
	i++;
}
while(a[i-1]!='\n');
           
c++

繼續閱讀