鱼C论坛

 找回密码
 立即注册
查看: 1059|回复: 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[j]);//输入数据
       
       
        for(i=0;i<N;i++)
        {   
            sum=0.0;
                for(j=0;j<M;j++)
                {  
                    if(a[j]>0)
                        {
                           sum+=a[j];
                        }
                }
                printf("%f ",sum);
                printf("\n");
        }//输出每一行大于零的数的和。
       
   
}
//我只能写出找每一行大于零的数之和的代码,而且还有点错,只有第三行可以实现。
//还有这道题目的后半部分不知道怎么写了。
//求助哇https://fishc.com.cn/static/imag ... 080925104604637.gif
最佳答案
2021-1-14 19:32:01
  1. #include<stdio.h>
  2. #define N 3
  3. #define M 4
  4. int main()
  5. {
  6.         float a[N][M], b[N], max, sum = 0;
  7.         int i, j;
  8.         printf("输入3行4列的数组:\n");

  9.         for (i = 0;i < N;i++)
  10.         {
  11.                 for (j = 0;j < M;j++)
  12.                 {
  13.                         scanf("%f", &a[i][j]);   // 此处错误,是二维数组
  14.                         if (a[i][j] > 0)
  15.                         {
  16.                                 sum += a[i][j];
  17.                         }
  18.                 }
  19.                 b[i] = sum;                  // 将所求该行之和赋给一维数组
  20.                 sum = 0;                     // 为下一行求和而清0
  21.         }

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

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

使用道具 举报

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

  2. #define M 4
  3. #define N 3

  4. int main()
  5. {
  6.         float a[M][N] , b[M] , sum                     ;
  7.         int i , j                                      ;
  8.         printf("输入 %d 行 %d 列的数组:\n" , M , N)   ;
  9.         for(i = 0 ; i < M ; i ++) {
  10.                 for(sum = j = 0 ; j < N ; j ++) {
  11.                         scanf("%f" , & a[i][j])        ;
  12.                         if(a[i][j] > 0) sum += a[i][j] ;
  13.                 }
  14.                 b[i] = sum                             ;
  15.         }
  16.         for(j = 0 , i = 1 ; i < M ; i ++) {
  17.                 if(b[i] > b[j]) j = i                  ;
  18.         }
  19.         printf("%d\n" , j)                             ;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

  9.         for (i = 0;i < N;i++)
  10.         {
  11.                 for (j = 0;j < M;j++)
  12.                 {
  13.                         scanf("%f", &a[i][j]);   // 此处错误,是二维数组
  14.                         if (a[i][j] > 0)
  15.                         {
  16.                                 sum += a[i][j];
  17.                         }
  18.                 }
  19.                 b[i] = sum;                  // 将所求该行之和赋给一维数组
  20.                 sum = 0;                     // 为下一行求和而清0
  21.         }

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 10:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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