云枭女 发表于 2021-1-13 21:52:46

C语言数组

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

jackz007 发表于 2021-1-14 00:42:44

#include<stdio.h>

#define M 4
#define N 3

int main()
{
      float a , b , 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)      ;
                        if(a > 0) sum += a ;
                }
                b = sum                           ;
      }
      for(j = 0 , i = 1 ; i < M ; i ++) {
                if(b > b) j = i                  ;
      }
      printf("%d\n" , j)                           ;
}

风过无痕1989 发表于 2021-1-14 19:32:01

#include<stdio.h>
#define N 3
#define M 4
int main()
{
        float a, b, 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);   // 此处错误,是二维数组
                        if (a > 0)
                        {
                                sum += a;
                        }
                }
                b = sum;                  // 将所求该行之和赋给一维数组
                sum = 0;                     // 为下一行求和而清0
        }

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

}
页: [1]
查看完整版本: C语言数组