我正试图从一个数组中减去一个给定的数字,然后将结果存储在一个完全不同的数组中。是否可以在不使用指针的情况下编写代码?
我正在尝试使用for循环和/或do/while循环来编写代码。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int num[100];
int i ;
int size;
int sub;
int diff[100];
printf("Enter the size of the array: ");
scanf("%d", &size);
for(i=0;i<size; i++){
printf("Enter the element %d :", i+1);
scanf("%d", &num[i]);
}
printf(" Enter the number to substract: n");
scanf("%d", &sub);
for (i=0;i<size; i++)
{
y = num[i]- sub;
scanf("%d", &diff[y]);
}
for (y=0; y<size; y++)
{
printf("%d", diff[y]);
}
}
扫描结果后,我尝试了不同的方法来初始化并将值存储在第二个数组中,但都没有成功。我在这里犯了什么错误?
y = num[i] - sub;
这很好,因为它是给定源数组元素的相减结果。
scanf("%d", &diff[y]);
这没有意义,因为它试图读取用户的输入。不仅如此,它还使用减法的结果作为目标数组的索引。
只需将减法的结果分配给相应的目标数组成员:
diff[i] = num[i] - sub;
在您的问题中,您试图将值扫描到另一个数组,但正确的形式是将值分配到新的数组位置。
例如,在第一个For循环中,使用i
变量作为位置,并在diff[i]
:上分配num[i] - sub
for (i = 0; i < size; i++)
{
diff[i] = num[i] - sub;
}
而不是:
for (i=0;i<size; i++)
{
y = num[i]- sub;
scanf("%d", &diff[y]);
}