c++ - (C++ 数组问题)我想通过在 DoWhile 过程中输入的数字代码打印出我订购的食物
问题描述
我将输入:( 数字是食品代码,Y/N 是是/否表示 do-while)
1
Y
2
Y
3
N
那么我的预期输出将是
Chicken
Fries
Hotdog
请查看我的代码,它不会打印任何内容。我的想法是每次我输入一个数字时,它都会触发开关功能,然后一个具有准备值的变量(例如:order2 = fries)将存储在数组中。所以当循环它时,我会输入多个订单,我想把它们打印出来(见我上面的预期输出)
#include <iostream>
using namespace std;
int main() {
int ordercode;
int i;
int limit;
char yesno;
char allorder[10][100];
string order1="Chicken";
string order2="Fries";
string order3="Hotdog";
do
{
limit++;
i++;
cout<<" Enter order ";
cin>>ordercode;
switch(ordercode){
case 1:
order1 == allorder[i];
break;
case 2:
order2 == allorder[i];
break;
case 3:
order3 == allorder[i];
break;
}
cout<<"Will you order again?";
cin>>yesno;
}
while(yesno == 'Y');
for(i = 0; i<limit; i++)
{
cout <<allorder[i];
cout<<"\n";
}
}
解决方案
您没有对 i 进行零初始化。简单地写
int i;
不一定将 i 设置为零。当您尝试使用 i 作为数组的索引时,这可能会导致分段错误—— i 可以是任何东西,因此它可能会超出范围。你需要写
int i = 0;
对限制做同样的事情。
还,
allorder[i] = order1;
应该是那条线。此外,如果您按一个索引对其进行索引,为什么要将 allorder 声明为 10x100,我?删除其中一个维度。此外,将 allorder 设置为字符串数组,而不是字符数组,因为您将字符串分配给它的元素。
您已经在使用 C++,因此当存在替代品时,没有理由使用旧的 C 构造。使用向量,而不是字符或字符串数组。您可以在很多不同的地方查看如何使用这些 C++ 功能,这些功能比您现在使用的更灵活、更强大。站点 cppreference.com 和 cplusplus.com 是我使用的两个大站点。
哦,使用缩进!请!:)
推荐阅读
- sql - 如何找到一个表与不同表的关系?
- javascript - javascript 的 getElementsByClassName 长度不能以角度工作
- flutter - 如何从集成测试中选择颤振时间选择器中的时间
- python-3.x - 在测试运行期间从 Chrome 捕获日志。Python
- node.js - 即使我安装了 cors 并且设置了标头,也会出现 CORS 错误
- php - 谷歌“安全浏览查找 API”返回空数组
- angular - 错误 TS2339:“任何”类型上不存在属性“flatMap”
- json - Mongoose 在 Array 中选择具有特定属性的对象
- graphql - HotChocolate(GraphQL)模式优先处理复杂类型
- python - 如何安排每天在 Azure ML SDK 中运行的实验