c - 无法通过函数打印矩阵元素
问题描述
我无法通过函数打印矩阵的元素。
下面是我写的代码。请通过解决方案回复来帮助我。
main() {
int m[10][10], r, c, m_sum;
add_elements(m, r, c);
print_elements(m, r, c, m_sum);
}
add_elements(int m[10][10], int r, int c, int m_sum){
int i, j;
printf("Enter the number of rows: ");
scanf("%d", &r);
printf("\nEnter the number of rows: ");
scanf("%d", &c);
for(i=1; i<=r; i++){
for(j=1;j<=c; j++){
scanf("%d", &m[i][j]);
m_sum = m_sum + m[i][j];
}
}
}
print_elements(int m[10][10], int r, int c, int m_sum){
int i, j;
printf("\n\nThe matrix is: \n\n");
for(i=1; i<=r; i++){
for(j=1;j<=c; j++){
printf("%d", m[i][j]);
printf("\t");
}
printf("\n");
}
printf("\n\nThe sum of the elements are : %d", m_sum);
}
解决方案
这是正确打印矩阵和总和的工作代码。
#include<stdio.h>
add_elements(int m[10][10], int *r, int *c, int *m_sum)
{
int i, j;
printf("Enter the number of rows: ");
scanf("%d", r);
printf("\nEnter the number of rows: ");
scanf("%d", c);
for(i=0; i<*r; i++){
for(j=0;j<*c; j++){
scanf("%d", &m[i][j]);
*m_sum = *m_sum + m[i][j];
}
}
}
print_elements(int m[10][10], int r, int c, int m_sum)
{
int i, j;
printf("\n\nThe matrix is: \n\n");
for(i=0; i<r; i++){
for(j=0;j<c; j++){
printf("%d", m[i][j]);
printf("\t");
}
printf("\n");
}
printf("\n\nThe sum of the elements are : %d", m_sum);
}
int main()
{
int m[10][10], r, c, m_sum=0;
add_elements(m, &r, &c,&m_sum);
print_elements(m, r, c, m_sum);
}
修复了一些错误:
- 函数应该在调用之前声明,也就是在调用之前
main()
- C 中的数组索引是 from
0
ton-1
,而不是 from1
ton
m_sum
未初始化为0
- 添加元素的参数数量不同
- 从to函数返回后
r
,c
和的值m_sum
没有得到更新。所以,我将它们作为指向函数的指针传递。add_elements()
main(
推荐阅读
- svg - 使用 safari 时,svg 文本元素 transform-origin 不同
- git - Docker Compose using with git clone
- php - 由命名参数和函数调用中的参数解包生成的错误在 PHP-8 中不抛出 ErrorException
- javascript - 如何在javascript中发送和检索json中的十进制值?
- laravel - 安装包 composer 需要 yajra/laravel-oci8 但有一些错误
- php - FixedColumns DataTables 未对齐并在一列中重复每一行
- python - Python selenium 脚本打包
- python - Python BS4刮表,标签中有多个值
- sql - Oracle Sql Developer 导入的 Oracle dmp
- reactjs - Cookie 在 React 的 Web 视图中不起作用