2012-07-01 44 views
0

我有一段代码(我是学生),理论上“应该”工作,但微软的Visual Studio 2010似乎与srand有关,因为它没有像其他保留名称一样高亮显示。MS VS 2010 srand()没有编译?

如果我从Auto_Complete_Matrix中删除srand,那么代码将会毫无问题地编译。

功能Auto_Complete_Matrix

错误2错误C2143:错误德sintaxis:缺少 ';'在'type'c:\ users \ jorgee!\ desktop \ uade \ program之前。 1 \ proyectos \ tp3-matrices \ ejercicio 2 \ main.c 46 1 Ejercicio 2

我已经包含了stdlib和时间库。

非常感谢您的帮助。

/* 2. Realizar una función que determine si una matriz cuadrada de dimensión N 
es simétrica con respecto a su diagonal principal. */ 


#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <time.h> 
#include <stdlib.h> 

#define FIL 5 
#define COL 5 

int True_False(char *message); 
int Auto_Complete_Matrix(int matrix[ FIL ][ COL ]); 
int Manual_Complete_Matrix(int matrix[ FIL ][ COL ]); 
void Print_Matrix(int matrix[ FIL ][ COL ]); 

int main() { 
    int matrix[ FIL ][ COL ]; 
    if(True_False("Desea autocompletar la Matriz con números al azar? <Si/No> \n\n")) { 
     Auto_Complete_Matrix(matrix); 
    } 
    else { 
     Manual_Complete_Matrix(matrix); 
    } 
    Print_Matrix(matrix); 
    system("pause"); 
} 

int True_False(char *message) { 
    char Answer[3]; 
    fputs(message, stdout); 
    fgets(Answer, 3, stdin); 
    if (Answer[0] == 1) { 
     return 1; 
    } 
    if (strncmp(Answer, "Si", 2) == 0 || strncmp(Answer, "si", 2)) { 
     return 1; 
    } 
    return 0; 
} 

int Auto_Complete_Matrix (int matrix[ FIL ][ COL ]) { 

    srand(time(0)); 
    int i, j; 

    for (i = 0; i < FIL; i ++) { 
     for (j = 0; j < COL; j ++) { 
      matrix[i][j] = rand() % (100 - 0 + 1) + 0; 
     } 
    } 
    return 0; 
} 

int Manual_Complete_Matrix(int matrix[ FIL ][ COL ]) { 

    int i, j; 

    for (i = 0; i < FIL; i++) { 
     for (j = 0; j < COL; j++) { 
      while(fscanf(stdin, "%d", matrix[i][j]) != 1) { 
       fflush(stdin); 
       continue; 
      } 
     } 
    } 
} 

void Print_Matrix(int matrix[ FIL ][ COL ]) { 
    int i, j; 
    for(i = 0; i < FIL; i++) { 
     for(j = 0; j < COL; j++) { 
      printf("%5d", matrix[i][j]); 
     } 
     puts("\n"); 
    } 
} 

回答

1

在编译为C(而不是C++)的文件时,则必须在闭合范围的顶部声明的所有变量(即,在这种情况下,周围的大括号)。在这里,你在'int i,j'声明语句之前调用一个函数(srand)。

+0

该死的noob错误...我知道,但由于某种原因,我忘记了srand。 非常感谢 – JorgeeFG

+0

@Jorge在上面的打印输出中很难说清楚,但是如果您查看错误提到的行号,我希望它指出变量声明行有问题,而不是srand调用线。仔细查看错误消息中的细节将对您长期有帮助:) – reuben