锻炼自学帮助

时间:2010-08-31 05:47:22

标签: c++

我已经开始学习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语句和逻辑运算符会更容易,但我只能使用:

  1. 循环
  2. 关系表达
  3. char arrays
  4. 不允许分支语句(即if,case / switch)和逻辑运算符。

    任何人都可以给我一些提示,让我朝着正确的方向前进吗?

    编辑:澄清。输入必须是一个字符串。所以,一个输入的几个单词。

5 个答案:

答案 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函数检查字符串是否相等。那应该没问题。