visual-studio-2010 - MS VS 2010 srand()无法编译?

我有一段代码(我是学生)在理论上“应该”工作,但是Microsoft的Visual Studio 2010似乎有点麻烦,因为它没有像其他保留名称一样突出显示。

如果我从Auto_Complete_Matrix中删除srand,则代码将毫无问题地进行编译。

函数Auto_Complete_Matrix

错误2错误C2143:sintaxis错误:缺少';'在“类型” 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");
    }
}

最佳答案

在编译为C(而不是C++)的文件中,必须在封闭范围的顶部(即本例中的大括号)声明所有变量。在这里,您要在'int i,j'声明语句之前调用一个函数(srand)。

https://stackoverflow.com/questions/11278652/

相关文章:

scala - 为什么在 Scala 中压缩比 zip 快?

android - 修复了C代码中的错字,仍然无法构建

xcode - 项目清理后,Cocos2d/box2d项目将无法编译

android - 使用PendingIntent的编译错误

compilation - 在我的编译器中完全可以正常工作,但在将其提交到在线社区时会出现编译错误

flash - 无法解析 to a component imple

ruby-on-rails - 使用Mysql在共享服务器中部署Rails应用程序时出错

python - 错误 : invalid mode ('r' ) - Cannot conduct

ruby-on-rails - SCSS编译错误

winapi - InterlockedPushListSList丢失。它在哪里?