C++:計算使用者輸入的字元數。

2007-07-16 5:58 pm
產生一個程式使用do-while迴圈計算使用者輸入的字元數(不包括空白)。當程式遇到輸入第一個#字元時就停止。
我目前只會寫出這些:
#include<iostream>
using namespace std;
int main()
{
char letter=0;
int number=0;
cout<<"Enter characters:";
cin>>letter;
do
{
if(letter!='#')
{
number++;
cin>>letter;
}
else
exit(1);
}while(letter!='#');
cout<<"你輸入了"<<number<<"個字元"<<endl;
return 0;
}

這程式有幾個錯誤,比如當我輸入ABCDE時,之後必須再輸入 #才能跳開迴圈,最後才顯示說輸入了5個字元。
誰能幫我修改程式以合乎題意呢?或者是你用自己的方法寫出程式。

回答 (3)

2007-07-16 6:39 pm
✔ 最佳答案
這是比較簡單的寫法(有限制字元數)……
如果沒有限制字元數,必須利用「鏈結串列」或是逐步配置記憶體來記錄使用者輸入的字元。
#include <iostream>
#include <cstdlib>
#define MAX 100 //限制字元數為 100 個
using namespace std;
int main(int argc, char *argv[])
{
char ch[MAX];
int i;
for(i=0;i<MAX;i++)
{
cout<<"Input a character: ",cin>>ch[i];
if(ch[i]=='#')
{
break;
}
}
cout<<"You input "<<i<<" characters."<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
2007-07-26 1:01 am
把月狗的程式加入空白的判段. 程式下

if( (ch=getche())!='#' &&
!isspace(ch) ) // 空白的判段
number++;
2007-07-17 6:14 am
這是我在Dev-C 編譯過可執行的程式
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main() {
char ch=0;
int number=0;

printf("Enter characters: ");
do {
if( (ch=getche())!='#' )
number++;
} while( ch!='#' );

printf("\n你輸入了 %d 個字元\n", number);
system("PAUSE");
return 0;
}

你用cin的時候, 必需要等到按下Enter程式才會讀到你輸入的字串, 使用getch()則每次輸入就會被程式讀到



2007-07-26 09:20:53 補充:
對喔, 是我漏看了, 謝謝喵喵咪


收錄日期: 2021-04-27 17:15:07
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070716000016KK02336

檢視 Wayback Machine 備份