0

好的,所以我创建了一个程序,该程序成功创建了一个二维数组并将随机数存储在数组中,并确定使用数组和 for 循环语句创建的随机数的最高、最低和平均值。但是我有一种感觉,我的代码有问题,但无法弄清楚。我相信这与我使用的 for 循环语句有关。

这是代码:

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

#define ROW 3
#define COLUMN 5

int main( void )
{

    int randnum_array [ROW] [COLUMN];
    int highrn = 0 , lowrn = 9999999 , total = 0 , nextvalue = 0;
    int r = 0 , c = 0 , lr = 0 , lc = 0 , hr = 0 , hc = 0;
    float average = 0.0;
    srandom ( (unsigned) time (NULL) ); 

    printf( "\n Welcome User, this program creates an array random numbers "
    "and stores them into each \n of the 11 elements of the rand_num "
    "array. The program then displays the \n highest, lowest, "
    "and average of the numbers created.\n\n" ) ;

    printf("   Contents of randnum_array:\n\n");

    for (r = 0; r < ROW ; r++)
    {
        for (c = 0; c < COLUMN ; c++)
        {
            nextvalue = random ( ) % 10001;
            printf("     Value in randnum_array row %d column %d is: %d\n", r+1 , c+1 , nextvalue);
            randnum_array [r] [c] = nextvalue;

            if (nextvalue > highrn) 
            {
                highrn = nextvalue;
                hr = r;
                hc = c;
            }

            if (nextvalue < lowrn) 
            {
                lowrn = nextvalue;
                lr = r;
                lc = c;
            }

            total = total + nextvalue;
        }
    }

    average = (float)total / (ROW * COLUMN);

    printf("\n   The lowest value is %d in row %d column %d.", lowrn , lr+1 ,
        lc+1 ) ;

    printf("\n   The highest value is %d in row %d column %d.", highrn , hr+1 , 
        hc+1) ;

    printf("\n   The average of all of the numbers in the randnum_array"
        " is: %-7.3f", average ) ;

    printf("\n\n Thank you for using this program\n\n" ) ;

    return ( 0 ) ;

}

这是输出:

 Welcome User.

 Contents of randnum_array:

 Value in randnum_array row 1 column 1 is: 2375
 Value in randnum_array row 1 column 2 is: 102
 Value in randnum_array row 1 column 3 is: 1754
 Value in randnum_array row 1 column 4 is: 6464
 Value in randnum_array row 1 column 5 is: 3237
 Value in randnum_array row 2 column 1 is: 3495
 Value in randnum_array row 2 column 2 is: 2221
 Value in randnum_array row 2 column 3 is: 5663
 Value in randnum_array row 2 column 4 is: 885
 Value in randnum_array row 2 column 5 is: 8442
 Value in randnum_array row 3 column 1 is: 4465
 Value in randnum_array row 3 column 2 is: 4561
 Value in randnum_array row 3 column 3 is: 9182
 Value in randnum_array row 3 column 4 is: 1781
 Value in randnum_array row 3 column 5 is: 7478

 The lowest value is 102 in row 1 column 2.
 The highest value is 9182 in row 3 column 3.
 The average of all of the numbers in the randnum_array is: 4140.333

 Thank you for using this program

任何人都可以给我一些关于代码可能有什么问题的建议,或者它是否可以。一切正常,但由于我之前从未使用过 2D 数组,因此我不太确定自己在做什么。

4

1 回答 1

1

用 0 初始化值,并在第一次迭代中将值设置为第一个

int highrn = 0 , lowrn = 0;
for (r = 0; r < ROW ; r++)
    {
        for (c = 0; c < COLUMN ; c++)
        {
            nextvalue = random ( ) % 10001;
            printf("     Value in randnum_array row %d column %d is: %d\n", r+1 , c+1 , nextvalue);
            randnum_array [r] [c] = nextvalue;

            if( r==0 && c==0 ) {
                 hihgrn = lowrn = nextvalue;
                 hr = hc = lr = lc = 0;
            }
            else {
              // otherwise - perform your checks
            }
于 2013-10-29T09:44:05.663 回答