C++ 如何让数组存储用户在C中通过do while循环输入的最多10个元素?
因此,要求用户输入一个数字,之后,用户将能够选择是否要输入另一个数字以存储到最多包含10个数字的数组中。因此,当用户输入NO或阵列已满时,程序功能将停止。 所以我想展示的是这样的东西: 该程序中的数组能够存储10个数字 请输入一个数字:22 另一个?是/否:是 请输入号码:29 另一个?是/否:否 阵列现在已关闭/已满 这是我的程序功能C++ 如何让数组存储用户在C中通过do while循环输入的最多10个元素?,c++,c,arrays,C++,C,Arrays,因此,要求用户输入一个数字,之后,用户将能够选择是否要输入另一个数字以存储到最多包含10个数字的数组中。因此,当用户输入NO或阵列已满时,程序功能将停止。 所以我想展示的是这样的东西: 该程序中的数组能够存储10个数字 请输入一个数字:22 另一个?是/否:是 请输入号码:29 另一个?是/否:否 阵列现在已关闭/已满 这是我的程序功能 void getInput(int array[N], char choice) { int i; printf("The array in thi
void getInput(int array[N], char choice)
{
int i;
printf("The array in this program is capable of storing 10 numbers\n\n");
i=0;
do
{
printf("Please enter a number: ");
scanf("%d", &array[i]);
printf("Another? (Y/N): \n");
scanf("%c", &choice);
if(choice == 'Y' || choice == 'y'){
i++;
}
else if(choice == 'N' || choice == 'n' || array[i] == array[10]){
break;
}
}while(choice == 'Y' || choice == 'y' && choice != 'N' || choice != 'n');
printf("Array is now closed/full\n");
return;
}
简单,只要改变这个
if(choice == 'N' || choice == 'n' || array[i] == array[10])
对此
if(choice == 'N' || choice == 'n' || i == 9)
记住索引在c中是基于0的,所以数组[10]是不受限制的
我在代码中还看到许多其他错误
您多次评估输入以检查选项,这是不需要的。
如果在输入数字后按enter键,则第二次扫描将吃掉上一步中的左侧\n。
您的else if条件可能会检查数组的结尾,但仅当选择!='Y'&选择!='是的。
getInput函数签名没有意义。相反,您可以传递数组的元素计数,并在函数中本地声明选项。
这是您的程序的固定版本
void getInput(unsigned int count, int array[count])
{
unsigned int i;
char choice;
printf("The array in this program is capable of storing %d numbers\n", count);
i = 0;
do
{
printf("Please enter a number: ");
scanf("%d", &array[i++]);
printf("Another? (Y/N): \n");
scanf(" %c", &choice);
} while ((choice == 'Y' || choice == 'y') && (i < count));
if (i == count)
printf("Array is now closed / full\n");
return;
}
需要为数组参数指定数组大小:void getInput数组[10],char choice@πάνταῥεῖ 当然,不能像那样获得数组大小,它会衰减为int*指针,需要通过模板和引用模板void getInput&array[N],char choice传递它。或者我误解了你的意思C++和自然答案的每个都可以非常不同。一般来说,您应该只标记正在编译的语言。@vsoftco我也考虑过模板解决方案。引用是我一直缺少的。scanf扫描一个字符将消耗\n我看不出它被处理掉了,不是吗?@Gopi此程序还有许多其他问题,如果输入了Y或Y,则永远不会计算条件,请查看else。你可以写一份关于这个程序失败原因的详细报告,我授权你也使用我的观察结果,这是一种只读取10个值的方法,但是这个程序仍然会因为其他原因失败。还有,你为什么要删除答案,只是修改一下。我想知道为什么需要提示用户输入y或n,只需继续输入数字并在10个整数后停止: