函数中的第二个参数始终为 0
The second parameter in a function is always 0
基本上,我需要得到一个二维数组整行的总和或平均值。
首先我需要获取我需要使用的行,然后 'S' 求总和或 'M' 求平均值(葡萄牙语为 Média)。之后我需要读取整个数组,最后我只需要执行请求的操作。
double soma_linha_matriz(double matriz[LINHA][COLUNA], int l)
{
int i;
double soma;
soma = 0;
for(i = 0; i < COLUNA; i++)
{
soma = soma + matriz[l][i];
}
return soma;
}
出于某种原因,即使我在主函数中进行了 scanf,'l' 在这里始终为零:
int main()
{
double matriz[LINHA][COLUNA], resultado;
int i, j, l;
char sm;
scanf("%d", &l);
scanf("%s", &sm);
for(i = 0; i < LINHA; i++)
{
for(j = 0; j < COLUNA; j++)
{
scanf("%lf", &matriz[i][j]);
}
}
if(sm == 'S')
{
resultado = soma_linha_matriz(matriz, l);
printf("%.1lf", resultado);
}
else if(sm == 'M')
{
resultado = media_linha_matriz(matriz, l);
printf("%.1lf", resultado);
}
return 0;
}
我尝试了很长时间来纠正它,但我不完全知道为什么会这样...
有人能帮忙吗?
scanf("%s", &sm) 读取一个字符串,而不是一个字符。根据文档,它总是存储一个空终止符(除了匹配的字符之外,总是存储一个空字符(因此参数数组必须至少有 width+1 个字符的空间) - https://en.cppreference.com/w/c/io/fscanf) 并将其存储到您的 'l' 变量中。
这种情况也是典型的堆栈溢出错误。
基本上,我需要得到一个二维数组整行的总和或平均值。
首先我需要获取我需要使用的行,然后 'S' 求总和或 'M' 求平均值(葡萄牙语为 Média)。之后我需要读取整个数组,最后我只需要执行请求的操作。
double soma_linha_matriz(double matriz[LINHA][COLUNA], int l)
{
int i;
double soma;
soma = 0;
for(i = 0; i < COLUNA; i++)
{
soma = soma + matriz[l][i];
}
return soma;
}
出于某种原因,即使我在主函数中进行了 scanf,'l' 在这里始终为零:
int main()
{
double matriz[LINHA][COLUNA], resultado;
int i, j, l;
char sm;
scanf("%d", &l);
scanf("%s", &sm);
for(i = 0; i < LINHA; i++)
{
for(j = 0; j < COLUNA; j++)
{
scanf("%lf", &matriz[i][j]);
}
}
if(sm == 'S')
{
resultado = soma_linha_matriz(matriz, l);
printf("%.1lf", resultado);
}
else if(sm == 'M')
{
resultado = media_linha_matriz(matriz, l);
printf("%.1lf", resultado);
}
return 0;
}
我尝试了很长时间来纠正它,但我不完全知道为什么会这样...
有人能帮忙吗?
scanf("%s", &sm) 读取一个字符串,而不是一个字符。根据文档,它总是存储一个空终止符(除了匹配的字符之外,总是存储一个空字符(因此参数数组必须至少有 width+1 个字符的空间) - https://en.cppreference.com/w/c/io/fscanf) 并将其存储到您的 'l' 变量中。
这种情况也是典型的堆栈溢出错误。