顺序表中的元素遍历为什么只输出第一个元素啊

C++顺序表中的元素遍历为什么只输出第一个元素啊?P1是头文件里的
明明都是照着书本上写的,为什么运行的还是错的
我真的哭死

img

img

img

你i=2,从第2个元素开始输出
而且你cin只读取了一个元素,你输入也要循环啊

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7781805
  • 这篇博客你也可以参考下:八大经典排序算法的理解、动图演示和C++方法实现
  • 除此之外, 这篇博客: 求矩阵的鞍点 C++实现中的 在矩阵中,一个元素在所在行中是最大值,在所在列是最小值,则被称为鞍点。编写程序,求所给矩阵的鞍点。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    (设该矩阵元素都是整数。)

    注:
    一个矩阵可能没有鞍点,
    也可能有多个鞍点。

    适用于初学者:

    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
        int m, i, j, r, c, ma = 0, mi = 1000000, sum = 0;
        //设置一个行列式允许的最大输入的行列数
        cout << "input the max size of the matrix: " << endl;
        cin >> m;
        const int MAX_SIZE = m;
        int matrix[MAX_SIZE][MAX_SIZE];
        cout << "input the number of rows and columns: " << endl;
        cin >> r >> c;
        //定义两个数组来储存最大最小值
        int maximum[r] = {0}, minimum[c] = {0};
        int answer_min[r][c] = {0}, answer_max[r][c] = {0};
        //判断输入是否合法
        if (r > MAX_SIZE || c > MAX_SIZE) cout << "outnumber the max size" << endl;
        else {
            //输入行列式
            for (i = 0; i < r; ++i) {
                for (j = 0; j < c; ++j) {
                    cout << "matrix[" << i << "][" << j << "]=";
                    cin >> matrix[i][j];
                    answer_max[i][j] = -1000000;
                    answer_min[i][j] = 1000000;
                }
            }
            //获取每行的最大值
            for (i = 0; i < r; ++i) {
                for (j = 0; j < c; ++j) {
                    if (ma < matrix[i][j]) {
                        ma = matrix[i][j];
                    }
                }
                maximum[i] = ma;
                ma = -1000000;
            }
            //获取每行最大值的列数
            for (i = 0; i < r; ++i) {
                for (j = 0; j < c; ++j) {
                    if (maximum[i] == matrix[i][j]) {
                        answer_max[i][j] = matrix[i][j];
                    }
                }
    
            }
            cout << endl;
            //获取每列的最小值
            for (j = 0; j < c; ++j) {
                for (i = 0; i < r; ++i) {
                    if (mi > matrix[i][j]) {
                        mi = matrix[i][j];
                    }
                }
                minimum[j] = mi;
                mi = 1000000;
            }
            //获取每列最小值的行数
            for (j = 0; j < c; ++j) {
                for (i = 0; i < r; ++i) {
                    if (minimum[j] == matrix[i][j]) {
                        answer_min[i][j] = matrix[i][j];
                    }
                }
            }
            //判断是否为鞍点
            for (i = 0; i < r; ++i) {
                for (j = 0; j < c; ++j) {
                    if (answer_max[i][j] == answer_min[i][j]) {
                        cout << "(" << i + 1 << " , " << j + 1 << ") = " << answer_max[i][j] << " is a  saddle point."
                             << endl;
                        sum += 1;
                    }
                }
    
            }
            if (sum==0) cout<<"There's no saddle point.";
        }
        return 0;
    }
    
    
  • 您还可以看一下 朱有鹏老师的朱老师C++课程第3部分3.4.模板特化与类型萃取课程中的 3.4.1.从案例中理解什么是模板特化1小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^