首页 > 试题广场 >

请认真考虑下面的程序: #include using n

[问答题]
请认真考虑下面的程序:
#include <iostream>
using namespace std;
int main()
{
     char ch;
     int ct1, ct2;
     ct1 = ct2 = 0;
     while ((ch = cin.get()) != '$')
     {
            cout << ch;
            ct1++;
            if (ch = '$')
                ct2++;
             cout << ch;
      }
      cout <<"ct1 = " << ct1 << ", ct2 = " << ct2 << "\n";
      return 0;
} 
假设输入如下(请在每行末尾按回车键):
Hi!
Send $10 or $20 now!

则输出将是什么(还记得吗,输入被缓冲)?
推荐
由于程序使用ch = '$',而不是ch == '$',因此输入和输出将如下:
Hi!
H$i$!$
$Send $10 or $20 now!
S$e$n$d$ $ct1 = 9, ct2 = 9

在第二次打印前,每个字符都被转换成$字符。另外,表达式ch=$的值为$字符的编码因此它是非0值,因而为true;所以每次ct2将被加1。
发表于 2018-05-07 21:19:07 回复(0)