要求更多元素而不是要求

时间:2017-09-06 21:36:48

标签: c++

所以,我已经使这个代码在数组上输入一些值,然后加倍然后打印。问题是,据我所知,代码中没有错误,但是当我运行它时,它让我要求输入一个超出我要求的值(在这种情况下,当我需要时它会问我5个值)有人能帮帮我吗? (抱歉英语不好:P)

#include <stdio.h>
#include <cstdlib>
#define lim 4

void input(int arr[], int size);
void multiply(int arr[], int size);
void print(int arr[], int size);

int main(){
    int array[lim];

    printf("Insert numbers in array: \n \n");
    input(array,lim);


    multiply(array,lim);

    printf("Printing values after multiplying: \n \n");
    print(array,lim);

    system("pause");
    return 0;
}

void input(int arr[], int size){
    for (int i = 0;i < size; i++){
        scanf("%d \n", &arr[i]);
    }
}

void multiply(int arr[], int size){
    for (int i = 0; i < size; i++){
        arr[i] *= 2;
    }
}

void print(int arr[], int size){
    for(int i = 0;i < size; i++){
        printf("%d \n", arr[i]);
    }
}

1 个答案:

答案 0 :(得分:0)

scanf()函数在尝试解析字符以外的内容(%c%[…],{{{{}}之前,会自动删除空白 1}}),所以你不必跳过它们,就像你尝试%n一样。

只需阅读数字而不关心它们。

%d \n

您也在进行编码,有不同的(更简单的)IO操作,首先您必须包含scanf("%d", &arr[i]); // ^^^^

然后,为了阅读,请使用<iostream>

std::cin

并通过int i{0}; std::cin >> i; 打印

std::cout

Here您可能会获得有关他们的详细信息。