Tian_hitsz 2023-03-28 10:26 采纳率: 54.5%
浏览 20
已结题

C语言遇到没见过的报错,求解决

代码初学者,今天写了一个循环语句超多的程序,然后vs就给我报错了,不知道是什么意思,也不知道如何解决,望大家能指正,代码贴在下图中:
并附上题目:

img

img

img

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#pragma pack(1)
int main() {
    int m, N;
    int i, j, k, l, o, mul, sum;
    mul = 1;
    sum = 0;
    printf("将生成一个N*m的二维数组A和一个m*N的二维数组B,请您按先后输入m与N的值:");
    scanf_s("%d,%d", &m, &N);

    int arrayA[100][100] = { 0 };
    int arrayB[100][100] = { 0 };
    int arrayC[100][100] = { 0 };
    printf("请您一行行的输入二维数组A中元素的值:\n");
    for (i = 0; i <= N - 1; i++) {
        printf("第%d行:", i + 1);
        for (j = 0; j <= m - 1; j++) {
            scanf_s("%d", &arrayA[i][j]);
        }
    }
    printf("请您一行行的输入二维数组B中元素的值:\n");
    for (i = 0; i <= m - 1; i++) {
        printf("第%d行:", i + 1);
        for (j = 0; j <= N - 1; j++) {
            scanf_s("%d", &arrayB[i][j]);
        }
    }
    for (i = 0; i <= N - 1; i++) {
        for (j = 0; j < m - 1; j++) {
            k = j + 1;
            for (; k <= m - 1; k++) {
                if (arrayA[i][j] >= arrayA[i][k]) {
                    l = arrayA[i][k];
                    arrayA[i][k] = arrayA[i][j];
                    arrayA[i][j] = l;
                }
            }
        }
    }
    for (i = 0; i <= m - 1; i++) {
        for (j = 0; j < N - 1; j++) {
            k = j + 1;
            for (; k <= N - 1; k++) {
                if (arrayB[i][j] >= arrayB[i][k]) {
                    l = arrayB[i][k];
                    arrayB[i][k] = arrayB[i][j];
                    arrayB[i][j] = l;
                }
            }
        }
    }
    for (i = 0; i <= N - 1; i++) {
        for (o = 0; 0 <= N - 1; o++) {
            for (j = 0; j <= m - 1; j++) {
                mul = arrayA[i][j] * arrayB[j][o];
                sum += mul;
            }
            arrayC[i][o] = sum;
        }
    }
    printf("下面是数组相乘后得到的二维数组C:\n");
    for (i = 0; i <= N - 1; i++) {
        printf("第%d行:", i);
        for (j = 0; j <= N - 1; j++) {
            printf("%d", arrayC[i][j]);
        }
        printf("\n");
    }
    printf("验证部分:下面是经过排序后的数组A:\n");
    for (i = 0; i <= N - 1; i++) {
        for (j = 0; j <= m - 1; j++) {
            printf("%d", arrayA[i][j]);
        }
        printf("\n");
    }
    printf("下面是经过排序后的数组B:\n");
    for (i = 0; i <= m - 1; i++) {
        for (j = 0; j <= N - 1; j++) {
            printf("%d", arrayB[i][j]);
        }
        printf("\n");
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 於黾 2023-03-28 10:35
    关注

    0 <= N - 1;
    这里你写的是数字0,不是字母o
    是个恒真表达式
    所以是个标准死循环
    o越界之后肯定报错了呀

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 3月28日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?