小小黑¥¥¥
2021-02-22 23:19
采纳率: 100%
浏览 29

c语言中随机生成的数存放在数组中,为什么不能被其他数替换掉?

 

  • 收藏

3条回答 默认 最新

  • 小白小白你好菜 2021-02-23 00:12
    已采纳

    你的二维数组的第一维大小为4,那么你的下标上限应该为3,在你交换位置的那段循环代码里面,a[N][k]下标越界,把N改成N-1就行了。

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #define N 4
    int main()
    {
        int i, j, ch[6] = {0}, ab[6] = {0}, k, a[N][6];
        srand(time(0));                         /*设置时间种子*/
        printf("原数组:\n");
        for(i = 0; i < N; i++){
    		for(j = 0; j < 6; j++){
    			a[i][j] = 1 + rand()%99;              /*产生1到99的数给数组a*/
             	printf("%3d",a[i][j]);
            }
            printf("\n");
        }
        printf("\n");
        for(k = 0; k < 6; k++)                       /*交换位置第一和最后*/
        {
    
            ch[k] = a[0][k];
            ab[k] = a[N-1][k];
            printf("%3d", ch[k]);
            a[N-1][k] = ch[k];
            a[0][k] = ab[k];
            printf("%-5d", a[0][k]);
        }
        printf("\n");
        printf("第一行和最后一行交换位置后的数组:\n");
        for(i = 0; i < N; i++){
            for(j = 0; j < 6; j++)
                printf("%3d", a[i][j]);
            printf("\n");
        }
        return 0;
    }
    1 打赏 评论
  • 小小黑¥¥¥ 2021-02-22 23:20
    #include<stdio.h>
    #include<time.h>
    #define N 4
    void main()
    {
        int i,j,ch[6]={0},ab[6]={0},k,a[N][6];
        srand(time(0));                         /*设置时间种子*/
        printf("原数组:\n");
        for(i=0;i<N;i++)
            {for(j=0;j<6;j++)
            {a[i][j]=1+rand()%99;              /*产生1到99的数给数组a*/
             printf("%3d",a[i][j]);
            }
            printf("\n");
            }
            printf("\n");
        for(k=0;k<6;k++)                       /*交换位置第一和最后*/
        {
    
            ch[k]=a[0][k];
            ab[k]=a[N][k];
            printf("%3d",ch[k]);
            a[N][k]=ch[k];
            a[0][k]=ab[k];
            printf("%-5d",a[0][k]);
        }
            printf("\n");
        printf("第一行和最后一行交换位置后的数组:\n");
        for(i=0;i<N;i++)
        {
            for(j=0;j<6;j++)
                printf("%3d",a[i][j]);
            printf("\n");
        }
    }
    
    打赏 评论
  • 小白小白你好菜 2021-02-23 00:15

    打赏 评论

相关推荐 更多相似问题