为 C++ 编写不递增的 Taste 测试程序
Posted
技术标签:
【中文标题】为 C++ 编写不递增的 Taste 测试程序【英文标题】:Writing a Taste test program for C++ not incrementing 【发布时间】:2015-01-30 18:31:28 【问题描述】:我正在为一个班级编写一个口味测试程序,它会在我的 if 语句之前运行良好。但是,一旦我进入我的 if 语句,它就不会增加 i,所以它永远不会离开 while 循环。
#include <iostream>
using namespace std;
void main()
int i = 0;
int q = 0;
int p = 0;
int c = 0;
char preference;
int x = 0;
cout << "How many taste tests would you like to do?" << endl;
cin >> x;
while (i<x)
cout << "Do you prefer Coke, Pepsi, or are they the same? Use c for coke, p for pepsi, and q for the same\n";
cin >> preference;
if (preference == 'q' || preference == 'Q')
q = q + 1;
i++;
if (preference == 'p' || preference == 'P')
p = p + 1;
i++;
if (preference == 'c' || preference == 'C')
c = c + 1;
i++;
if (p>q)
cout << "Pepsi wins" << endl;
if (c>p)
cout << "Coke wins" << endl;
if (c == p)
cout << "Tie" << endl;
【问题讨论】:
使用调试器,单步执行以cin >> preference;
开头的代码,看看单步执行代码时会发生什么。
我认为你正在尝试做类似if(preference=='q' || preference=='Q')
你没有把'
放的东西
他们在 CS 课程中教授调试吗?好像没有。
您的变量p
、P
、q
等是0
,因此在编译时,它不会测试是否存在您认为的匹配。也确定我以前见过这种错误,但不确定我是否能找到重复的。
【参考方案1】:
我认为您正在尝试检查确定的字符是否被cin >> preference
点击但您正在测试int
vars,所以如果我按'q'
//if(preference==q || preference==Q) // 'q'==0 || 'p'==0
if(preference=='q' || preference=='Q') // 'q'=='q' || 'q'=='Q'
所以添加''
希望对你有帮助
【讨论】:
【参考方案2】:将代码中的以下几行更改为预期的行为。
//if(preference==q || preference==Q)
if(preference=='q' || preference=='Q'
//if(preference==p || preference==P)
if(preference=='p' || preference=='P')
//if(preference==c || preference==C)
if(preference=='c' || preference=='C')
【讨论】:
以上是关于为 C++ 编写不递增的 Taste 测试程序的主要内容,如果未能解决你的问题,请参考以下文章