【发布时间】:2015-01-10 14:19:26
【问题描述】:
当我尝试比较两个矩阵时,我遇到了一个大问题。每次我运行程序时,它都会打印并设置两个矩阵具有相同的值。但是您可以在下面的代码中看到,我放置了 2 个带有随机数的不同矩阵,但它在两个矩阵中始终打印相同的数字...失败在哪里?
#include <stdio.h>
#include <time.h>
void further(int matrix[][3]);
void check(int mat[][3], int another[][3]);
int main (){
int mat[3][3];
int another[3][3];
further(mat);
further(another);
check(mat,another);
system("pause");
return 0;
}
void further(int matrix[][3]){
srand(time(NULL));
int i,j,aux;
for(i=0; i<3; i++){
for(j=0; j<3;j++){
aux=rand()%10;
matrix[i][j]=aux;
}
}
}
void check(int mat[][3], int another[][3]){
int i,j,aux;
aux = 0;
for(i=0; i<3 && aux == 0; i++){
for(j=0; j<3 && aux == 0; j++){
if(mat[i][j] != another[i][j]){
aux = 1;
}
}
}
for(i=0; i<3; i++){
for(j=0; j<3; j++){
printf("%i ",mat[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0; i<3; i++){
for(j=0; j<3; j++){
printf("%i ",another[i][j]);
}
printf("\n");
}
if(aux==0){
printf("Those matrix are equal.\n\n");
}
else{
printf("Those matrix are NOT equal.\n\n");
}
}
【问题讨论】:
-
我猜 user3121023 是对的。我认为你两次得到相同的随机数序列(因为 rand() 是一个伪随机生成器,你可能在
srand(time(NULL))中使用相同的种子对其进行初始化) -
OT:还要注意
time_t不一定需要是整数。它很可能是一个指针或一个结构,或者......在 POSUX 系统上,但是time_t保证是一种算术类型。