我有问题,有时候我们都会做。 我的程序(我将用于学术目的)没有运行,我是编程新手。我应该修改什么?
我无法纠正错误:
#include <stdio.h>
using namespace std;
//Maximul din triunghiul de deasupra diagonalelor unei matrice
int maximdiag(int x[5][5])
{
int i, j, m = 5, max = 0;
//elementele din triunghiul de deasupra diagonalelor
for (i = 0; i < (m - 1) / 2; i++)
for (j = i + 1; j < m - 1 - i; j++)
{
if (x[i][j] >= max)
max = x[i][j];
}
return max;
}
void main()
{
int a[5][5], z, n = 5, i, j;
//citire de la tastatura matrice
for (i = 0; i < 5; i++)
for (j = 0; j < 5; j++)
{
printf("x[%i][%i]= ",i, j);
scanf_s("%i", &a[i][j]);
}
//apelare functie
//z = maximdiag(a[5][5]);
printf("Valoarea maxima din triunghiul de deasupra diagonalelor este a[%i][%i]= ", maximdiag(a[5][5]));
_getch();
}
答案 0 :(得分:1)
maximdiag(a[5][5])
用索引maximdiag
(不存在)中的数组a
的元素调用[5][5]
。
要将数组传递给函数,只需调用:maximdiag(a)
。
您还向带有格式字符串的printf
传递了一个参数,该字符串需要2个参数。大概纠正后的代码应该是这样的:
printf("Valoarea maxima din triunghiul de deasupra diagonalelor este a[%i][%i]=%i ", i, j, maximdiag(a))
尽管i
和j
的值只是5,所以如果要获取最大值的索引,则需要从maximdiag
函数返回它们:>
int maximdiag(int x[5][5], int& maxI, int& maxJ)
{
int i, j, m = 5, max = 0;
//elementele din triunghiul de deasupra diagonalelor
for (i = 0; i < (m - 1) / 2; i++)
for (j = i + 1; j < m - 1 - i; j++)
{
if (x[i][j] >= max)
{
max = x[i][j];
maxI = i;
maxJ = j;
}
}
return max;
}
int maxI;
int maxJ;
int max = maximdiag(a, maxI, maxJ);
printf("Valoarea maxima din triunghiul de deasupra diagonalelor este a[%i][%i]=%i ", maxI, maxJ, max);