-1

我正在尝试调用存储的值temp[z],然后使用函数显示它。这是代码:

/* File: StudentID_Surname.c  - e.g. 1234567_Wilson.c
 * This program finds the range between highest and lowest value of a 2-D array */

#include <stdio.h>

#define NROW 3
#define NCOL 3

/* Write a function
     void disp_arr(int a[NROW][NCOL]) { ... }
    where a[][] is the 2-D array
    Print the entire array to the screen. */

disp_arr( int temp );

int main(void)
{
    /* declare needed variables or constants, e.g. */
    int ar[NROW][NCOL];
    int rows, cols;
    int z = 0;
    int temp[z] = {1,2,3,4,5,6,7,8,9}; /* Storing 9 numbers */

    /* prompt for the user to enter nine positive integers to be stored into the array */

    for ( rows = 0 ; rows < 3 ; rows++ )
    {
        for ( cols = 0 ; cols < 3 ; cols++ )
            {
                printf(  "Please enter 9 positive integers : " );

                scanf( "%d", &ar[rows][cols] );

                /* Store values in the temp[z] = {1 2 3 4 5 6 7 8 9}*/
                temp[z] = ar[rows][cols];

                z += 1; /* Increase the array in temp[z] */
            }
        printf("\n");
    }

    /* Call disp_arr to display the 3 x 3 board */
    disp_arr( temp[z] );



}/* end main */

disp_arr( int storedValue )
{
    int x,y;
    for (  x = 0 ; x < 3 ; x++ )
    {
        for (  y = 0 ; y < 3 ; y++ )
        {
            printf( "%d\t", storedValue );
        }
        printf("\n%d");
    }


    return storedValue;
}

当我尝试执行代码时,我的编译器给了我附件中显示的错误。我猜代码int temp[z] = {1,2,3,4,5,6,7,8,9};是它的来源。

谁能给我一些指示?

4

3 回答 3

1

int temp[z]正在尝试创建VLAC89不支持可变长度数组。您的编译器可能不支持 VLA - 请查看手册。另一个问题是您的数组大小是错误的int z = 0;。因此,您会收到警告:

数组初始值设定项中的多余元素

因为您的数组包含 9 个元素,而您已初始化z0. 您应该z至少初始化为9. 此外,您在循环中会越界

 temp[z] = ar[rows][cols]; // ---> z goes out of bounds here 

z在循环开始0之前初始化并检查数组边界。还printf("\n%d");需要一个参数,例如printf("\n%d", someint);- 如果您只想打印一个新行,然后%d像这样删除printf("\n");

于 2013-11-11T13:25:19.590 回答
0

在您的主代码中,您尝试 1)创建一个大小为零的数组,因为 z = 0 2)int z 应该是常量,以便它可以用于创建数组

我认为这会做到

    int ar[NROW][NCOL];
    int rows, cols;
    const int z = 9; 
    //int temp[z] = {1,2,3,4,5,6,7,8,9}; /* Storing 9 numbers */
    //commented the above line and changed the code
    int temp[z] ;
    memset( temp, 0, z*sizeof(int) );

    /* prompt for the user to enter nine positive integers to be stored into the array */
    int index = 0;
    for ( rows = 0 ; rows < 3 ; rows++ )
    {
        for ( cols = 0 ; cols < 3 ; cols++ )
            {
                printf(  "Please enter 9 positive integers : " );

                scanf( "%d", &ar[rows][cols] );

                /* Store values in the temp[z] = {1 2 3 4 5 6 7 8 9}*/
                temp[index] = ar[rows][cols];

                index += 1; /* Increase the array in temp[z] */
            }
        printf("\n");
    }

    /* Call disp_arr to display the 3 x 3 board */
    disp_arr( temp[z] );
于 2013-11-11T14:05:06.913 回答
0

您的代码中有非常基本的错误

1.int temp[z] = {1,2,3,4,5,6,7,8,9}; 应该

国际温度[9]

2.disp_arr(int storedValue)

disp_arr(int* 存储值)

3.disp_arr(温度[z]);

disp_arr(温度)

4.printf("请输入9个正整数:"); 应该移到嵌套 for 循环之前

于 2013-11-11T13:56:25.013 回答