我已经开始学习C ++并正在编写C ++ Primer Plus书中的一些练习。
在第5章中,其中一个练习是:
编写一个使用数组的程序 char和一个循环来读取一个单词 输入完成单词的时间。 然后程序应报告 输入的字数(不计算在内) 完成)。示例运行可能如下所示:
Enter words (to stop, type the word done): anteater birthday category dumpster envy finagle geometry done for sure You entered a total of 7 words.
您应该包含cstring标头 文件并使用strcmp()函数 进行比较测试。
很难搞清楚这一点。如果我可以使用if语句和逻辑运算符会更容易,但我只能使用:
不允许分支语句(即if,case / switch)和逻辑运算符。
任何人都可以给我一些提示,让我朝着正确的方向前进吗?
编辑:澄清。输入必须是一个字符串。所以,一个输入的几个单词。
答案 0 :(得分:2)
使用此伪代码:
while (input != done)
do things
end-while
答案 1 :(得分:2)
编辑:oops,spec说要读入一个char数组...我不打扰编辑,这真的很愚蠢。 std::string
也包含一个char数组!
cin.exceptions( ios::badbit ); // avoid using if or && to check error state
int n;
string word;
for ( n = 0; cin >> word, strcmp( word.c_str(), "done" ) != 0; ++ n ) ;
我更喜欢
string word;
int n;
for ( n = 0; cin && ( cin >> word, word != "done" ); ++n ) ;
答案 2 :(得分:1)
提示:循环也可以作为条件......
答案 3 :(得分:0)
integer count
char array input
count = 0
read input
while(input notequal "done")
count++
read input
done
print count
input notequal "done"
部分可以
以strcmp(input,"done")
完成。如果
返回值为0
是手段
输入与"done"
cin
答案 4 :(得分:0)
您应该首先为char数组定义最大len。那么do while循环就足够了。您可以使用strcmp函数检查字符串是否相等。那应该没问题。