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');