要求比要求更多的元素

For asking more elements than required

本文关键字:元素      更新时间:2023-10-16

所以,我做了这个代码来输入数组上的一些值,加倍然后打印。问题是,据我所知,代码中没有错误,但是当我运行它时,它会让我要求输入一个超出我要求的值的值(在这种情况下,当我需要 5 个值时,它会询问我 4 个值。有人可以帮助我吗? (对不起英语不好: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]);
}
}

scanf()函数在尝试解析字符(%c%[…]%n)以外的内容之前自动删除空格,因此您不必像尝试%d n那样跳过它们。

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

scanf("%d", &arr[i]);
//    ^^^^

此外,您正在用C ++编码,有不同的(更简单的)IO操作,首先您必须包含<iostream>

然后,对于阅读,您使用std::cin

int i{0};
std::cin >> i;

并通过std::cout打印

std::cout << i;

在这里,您可以获得有关它们的扩展信息。