
uj5u.com熱心網友回復:
#include <iostream>#include <cstring>
using namespace std;
int main()
{
int i,j,k;
int lett[26]={0};
char s[60];
cout<<"輸入字串:"<<endl;
gets(s); //輸入
cout<<"各字母個數統計結果為:"<<endl;
for (i=0;i<60;i++)
{if(s[i]>='a'&&s[i]<='z')
lett[s[i]-'a']++;
else if(s[i]>='A'&&s[i]<='Z')
lett[s[i]-'A']++;
cout<<lett[1]; //B的輸出出現例外
cout<<lett[23]<<endl; //X的輸出出現例外
}
for(k=0;k<26;k++)
{
char d='A'+k;
cout<<d<<":"<<lett[k]<<",";
if((k+1)%10==0)
cout<<endl;
}
return 0;
uj5u.com熱心網友回復:
供參考:#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int i,j,k;
int lett_l[26]={0};//小寫
int lett_c[26]={0};//大寫
char s[60];
cout<<"輸入字串:"<<endl;
cin>>s; //gets(s); //輸入
j = strlen(s); //字串長度
cout<<"各字母個數統計結果為:"<<endl;
for (i=0;i<j;i++)
{
if(s[i]>='a'&&s[i]<='z')
lett_l[s[i]-'a']++;
else
if(s[i]>='A'&&s[i]<='Z')
lett_c[s[i]-'A']++;
//cout<<lett[1]; //B的輸出出現例外
//cout<<lett[23]<<endl; //X的輸出出現例外
}
for(k=0;k<26;k++)
{
char d='A'+k;
char l='a'+k;
if(lett_c[k]!=0 || lett_l[k]!=0){
cout<<d<<":"<<lett_c[k]<<", "<<l<<":"<<lett_l[k]<<endl;
//if((k+1)%10==0)
// cout<<endl;
}
}
return 0;
}
uj5u.com熱心網友回復:
那請問我的那個程式是什么導致錯誤啊uj5u.com熱心網友回復:
大寫、小寫字母的統計,放在同一陣列里統計,就重疊了,大寫的'A'統計一次,碰到小寫的'a'又統計一次,最后輸出的是大寫+小寫的字數值,就分不清了哪個是哪個了。還有比如統計時的回圈次數,應該是實際輸入字串的長度,代碼里是60陣列長度,還有其他問題,見2#樓代碼注釋。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/276770.html
標籤:C++ 語言
上一篇:關于網路編程定時器使用
