首页 > 解决方案 > 期望:代码打印出x(您输入的)出现在矩阵中的次数...实际:代码打印出值的数量

问题描述

期望:代码打印出 x(您输入的)出现在矩阵中的次数...实际:代码打印出值的数量 嘿伙计们,对于你们中的一些人来说,这个问题可能是愚蠢的,但我刚刚开始学习 C++最近所以请,同情:((我为我的英语不好道歉

#include <iostream>
using namespace std;

int NhapMang(int A[100][100], int &n)
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            {
                cout << "Nhap A[" << i << "][" << j << "]: ";
                cin >> A[i][j];
            }
    }
    return 0;
}
int XuatMang(int A[100][100], int &n)
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            cout << A[i][j] << " ";
        }
        cout << "\n";
    }
    return 0;
}
int SoLanXuatHien(int A[100][100], int &n, int &x)
{
    int dem=0;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            if(A[i][j]==x);
            {
                dem++;
            }
        }
    }
    return dem;
}

int main()
{
    int n, A[100][100],x;
    cout << "moi nhap n: ";
    cin >> n;
    NhapMang(A,n);
    XuatMang(A,n);
    cout << "moi nhap x: ";
    cin >> x;
    cout << "\nso lan xuat hien: \n";
    cout << SoLanXuatHien(A,n,x);
    return 0;
}

矩阵:1 2 3 4 5 6 7 8 9 x:4

预期:1 实际:9

标签: c++matrix

解决方案


问题是这条线

if(A[i][j]==x);

在 C++ 中,即使是简单的分号也被视为语句。它实际上相当于:

if (A[i][j] == x)
    ;

在您的情况下,因为您没有在语句周围加上大括号,所以您的代码将与此等效:

....
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        if(A[i][j]==x) {

        }

        {
            dem++; // dem will be incremented every time loop iterates. That's why you got 9
        }
    }
}

删除分号,一切都会正常工作。

更正的代码:

#include <iostream>
using namespace std;

int NhapMang(int A[100][100], int &n)
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            {
                cout << "Nhap A[" << i << "][" << j << "]: ";
                cin >> A[i][j];
            }
    }
    return 0;
}
int XuatMang(int A[100][100], int &n)
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            cout << A[i][j] << " ";
        }
        cout << "\n";
    }
    return 0;
}
int SoLanXuatHien(int A[100][100], int &n, int &x)
{
    int dem=0;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            if(A[i][j]==x)
            {
                dem++;
            }
        }
    }
    return dem;
}

int main()
{
    int n, A[100][100],x;
    cout << "moi nhap n: ";
    cin >> n;
    NhapMang(A,n);
    XuatMang(A,n);
    cout << "moi nhap x: ";
    cin >> x;
    cout << "\nso lan xuat hien: \n";
    cout << SoLanXuatHien(A,n,x);
    return 0;
}

推荐阅读