多维数组:实验7-2-1 求矩阵各行元素之和--实验7-2-2 矩阵运算--实验7-2-4 计算天数

实验7-2-1 求矩阵各行元素之和
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间

以空格分隔。

输出格式:
每行输出对应矩阵行元素之和。

输入样例:
3 2
6 3
1 -8
3 12

输出样例:
9
-7
15

#include<stdio.h>
int main(){
      int m,n,i,j;
      int sum=0;
      scanf("%d %d",&m,&n);
      int a[m][n];
      for(i=0;i<m;i++){
            sum=0;
            for(j=0;j<n;j++){
                  scanf("%d",&a[i][j]);
                  sum=sum+a[i][j];
            }
            printf("%d \n",sum);
      }
      return 0;
}

实验7-2-2 矩阵运算
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例:
35

#include<stdio.h>
int main(){
      int n,i,j;
      int sum1=0;
      int sum4=0;
      scanf("%d ",&n);
      int a[n][n];
      for(i=0;i<n;i++){
            for(j=0;j<n;j++){
                  scanf("%d",&a[i][j]);
                  sum1=sum1+a[i][j];
            }
      }
      printf("%d \n",sum1);         //计算出来所有元素的和;
      int sum2=0;
      int sum3=0;
      for(i=0;i<n;i++){
                  sum2=sum2+a[i][n-1];
                  sum3=sum3+a[n-1][i];
      }
      int T=sum2+sum3-a[n-1][n-1]-a[n-1][0]-a[0][n-1];
      printf("%d %d %d\n",sum2,sum3,T);
      int k=0;
      for(i=n-1;i>=0;i--){
                  sum4=sum4+a[i][k];
            k++;
      }
      printf("%d \n",sum4);
      int total=sum1-(T+sum4);
      printf("%d \n",total);
      return 0;
}

实验7-2-3 求矩阵的局部极大值 (15分)

给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

输入样例1:
4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1

#include<stdio.h>
int main(){
      int m,n,i,j;
      int flag=0;
      scanf("%d %d",&m,&n);
      int a[m][n];
      for(i=0;i<m;i++){
            for(j=0;j<n;j++){
                  scanf("%d",&a[i][j]);
            }
      }
      for(i=1;i<m-1;i++){
            for(j=1;j<n-1;j++){
                  if(i!=0&&j!=0&&i!=n-1&&j!=n-1){
                        if((a[i][j]>a[i][j-1])&&(a[i][j]>a[j][i-1])&&
                           (a[i][j]>a[i][j+1])&&(a[i][j]>a[i+1][j])){
                              printf("%d %d %d\n",a[i][j],i+1,j+1);
                              flag=1;
                        }
                  }
            }
      }
      if(flag==0){
            printf("none,%d %d\n",i+1,j+1);
      }
      return 0;
}

实验7-2-4 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:
在一行输出日期是该年中的第几天。

输入样例1:
2009/03/02

输出样例1:
61

#include<stdio.h>

int main(){
      int date1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
      int date2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
      int year,month,day,i;
      int span=0;
      scanf("%d/%d/%d",&year,&month,&day);
      if((year%4==0&&year%100!=0)||year%400==0){
            for(i=month-2;i>=0;i--){
                  span=span+date2[i];
            }
      }
      else{
            for(i=month-2;i>=0;i--){
                  span=span+date1[i];
            }
      }
      int total=span+day;
      printf("%d\n",total);
      
}

发布了54 篇原创文章 · 获赞 0 · 访问量 998

猜你喜欢

转载自blog.csdn.net/hellobettershero/article/details/103942996