Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何让数组存储用户在C中通过do while循环输入的最多10个元素?_C++_C_Arrays - Fatal编程技术网

C++ 如何让数组存储用户在C中通过do while循环输入的最多10个元素?

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

因此,要求用户输入一个数字,之后,用户将能够选择是否要输入另一个数字以存储到最多包含10个数字的数组中。因此,当用户输入NO或阵列已满时,程序功能将停止。 所以我想展示的是这样的东西:

该程序中的数组能够存储10个数字

请输入一个数字:22

另一个?是/否:是

请输入号码:29

另一个?是/否:否

阵列现在已关闭/已满

这是我的程序功能

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个整数后停止: