鱼C论坛

 找回密码
 立即注册
查看: 1190|回复: 2

[已解决]C语言数组

[复制链接]
发表于 2021-1-13 21:52:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/* 有一个M行N列符浮点型矩阵,先通过屏幕输入数据。
然后针对每一行,对大于零的数据求和。将结果存入一个一维数组。
再找出该一维数组中最大的元素,输出该最大值和所在位置。 */
#include<stdio.h>
#define N 3
#define M 4
int main()
{
        float a[M][N],max,sum;
        int i,j;
        printf("输入3行4列的数组:\n");
       
        for(i=0;i<N;i++)
        for(j=0;j<M;j++)
        scanf("%f",&a[i][j]);//输入数据
       
       
        for(i=0;i<N;i++)
        {   
            sum=0.0;
                for(j=0;j<M;j++)
                {  
                    if(a[i][j]>0)
                        {
                           sum+=a[i][j];
                        }
                }
                printf("%f ",sum);
                printf("\n");
        }//输出每一行大于零的数的和。
       
   
}
//我只能写出找每一行大于零的数之和的代码,而且还有点错,只有第三行可以实现。
//还有这道题目的后半部分不知道怎么写了。
//求助哇https://fishc.com.cn/static/imag ... 080925104604637.gif
最佳答案
2021-1-14 19:32:01
#include<stdio.h>
#define N 3
#define M 4
int main()
{
        float a[N][M], b[N], max, sum = 0;
        int i, j;
        printf("输入3行4列的数组:\n");

        for (i = 0;i < N;i++)
        {
                for (j = 0;j < M;j++)
                {
                        scanf("%f", &a[i][j]);   // 此处错误,是二维数组
                        if (a[i][j] > 0)
                        {
                                sum += a[i][j];
                        }
                }
                b[i] = sum;                  // 将所求该行之和赋给一维数组
                sum = 0;                     // 为下一行求和而清0
        }

        max = b[0];
        for (i = 0;i < N;i++)
        {
                printf("%.2f ", b[i]);         // 输出一维数组(此处是两位小数,可按题目要求修改为几点几)
                if (max < b[i])
                {
                        max = b[i];
                        j = i;                   // 记录最大值的位置
                }
        }
        printf("\n");
        printf("%d \n", j + 1);          // 输出最大值的位置(不加1就是按b数组序号)

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-14 00:42:44 | 显示全部楼层
#include<stdio.h>

#define M 4
#define N 3

int main()
{
        float a[M][N] , b[M] , sum                     ;
        int i , j                                      ;
        printf("输入 %d 行 %d 列的数组:\n" , M , N)   ;
        for(i = 0 ; i < M ; i ++) {
                for(sum = j = 0 ; j < N ; j ++) {
                        scanf("%f" , & a[i][j])        ;
                        if(a[i][j] > 0) sum += a[i][j] ;
                }
                b[i] = sum                             ;
        }
        for(j = 0 , i = 1 ; i < M ; i ++) {
                if(b[i] > b[j]) j = i                  ;
        } 
        printf("%d\n" , j)                             ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-14 19:32:01 | 显示全部楼层    本楼为最佳答案   
#include<stdio.h>
#define N 3
#define M 4
int main()
{
        float a[N][M], b[N], max, sum = 0;
        int i, j;
        printf("输入3行4列的数组:\n");

        for (i = 0;i < N;i++)
        {
                for (j = 0;j < M;j++)
                {
                        scanf("%f", &a[i][j]);   // 此处错误,是二维数组
                        if (a[i][j] > 0)
                        {
                                sum += a[i][j];
                        }
                }
                b[i] = sum;                  // 将所求该行之和赋给一维数组
                sum = 0;                     // 为下一行求和而清0
        }

        max = b[0];
        for (i = 0;i < N;i++)
        {
                printf("%.2f ", b[i]);         // 输出一维数组(此处是两位小数,可按题目要求修改为几点几)
                if (max < b[i])
                {
                        max = b[i];
                        j = i;                   // 记录最大值的位置
                }
        }
        printf("\n");
        printf("%d \n", j + 1);          // 输出最大值的位置(不加1就是按b数组序号)

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 04:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表