我目前正在编写一个简单的函数来计算两个向量的和。由于我是 C 的新手,我想我会为我的向量生成一些“伪随机”值,并随机化它们的长度——这超出了本练习的需要。
基本上,我刚开始编写代码,想看看我的数组的值是什么。
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int vectorSum(int x[], int y[], int n, int sum[]) {
}
void display_Array(int *a, int len){
//Declerations
int i;
for(i=0; i<len; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
//Implement a nice randomizing function...Fisher-Yates shuffle
int main(void){
//Generate a random length for the array
srand(time(NULL));
int N = (rand()*rand())%100;
//Declarations
int *x = (int *) malloc(N * sizeof(*x)); //Because I don't know how large my array is ahead of time
int *y = (int *) malloc(N * sizeof(*y));
int i;
//Fill the arrays
for(i=0; i<10; ++i) {
x[i] = (rand()*rand())%100000;
y[i] = (rand()*rand())%100000;
}
display_Array(x, N);
getchar();
//Main execution...
}
请注意,此代码还远未完成 - 请随意批评。我知道它远未完善。然而,我注意到了一些奇怪的事情。我的输出通常会遵循这种模式:
w, x, y...z, 0, 0, 0, 0, 0, 0, 0, 0.
通常情况下,我的数组中的最后一个值是 0。并非总是如此,但往往不是。此外,这种模式通常以倍数出现。比如最后两个值是0、0,那么我再运行一次程序,最后四位是0、0、0、0,以此类推。
那么,为什么会发生这种情况?我有我的怀疑,但我想听听其他人的想法。