(1):
题目描述
现有一个n*n(n最大为10)的整数矩阵,n的值通过键盘输入确定,设计一个程序输入矩阵中的各元素值,计算矩阵中两条对角线上所有元素的和并输出。
输入
输入有多组样例。
首先输入一个n,
然后输入一个n*n的矩阵。
输出
输出和。
提示:当n为奇数时两条对角线存在一个交叉元素,在计算时需避免交叉元素的重复计算。
样例输入
<span style="color:#333333">2
1 2
3 4
3
1 2 3
1 2 3
1 2 3
</span>
样例输出
<span style="color:#333333">10
10</span>
T:
#include<stdio.h>
int main()
{
int a[10][10],n,i,j,sum;
while(scanf("%d",&n)!=EOF&&n<=10)
{ sum=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
if(i==j||i+j==n-1)---------------------当n为奇数时,,交叉元素同时满足"i==j||i+j==n-1"。但因为只循环一次,所以程序并没有重复计算交叉元素。
{
sum=sum+a[i][j];
}
}
}
printf("%d\n",sum);
}
return 0;
}
answer:
3
1 2 3
4 5 6
7 8 9
25
(2):C语言输入一个n×n的整数矩阵,分别计算两个对角线的和
#include<stdio.h>
int main()
{
int a[10][10],n,i,j,sum,sum1,sum2;
while(scanf("%d",&n)!=EOF&&n<=10)
{ sum=0,sum1=0,sum2=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
if(i==j)
{
sum1=sum1+a[i][j];
}
if(i+j==n-1)
{
sum2=sum2+a[i][j];
}
}
}
printf("%d\n",sum1);
printf("%d\n",sum2);
}
return 0;
}
answer:
3
1 2 3
4 5 6
7 8 9
15
15
(3):MxN矩阵周边元素之和。
#include<stdio.h>
int main()
{
int a[10][10],n,i,j,sum;
while(scanf("%d",&n)!=EOF&&n<=10)
{ sum=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
if(i==0||j==0||i==n-1||j==n-1)
{
sum=sum+a[i][j];
}
}
}
printf("%d\n",sum);
}
return 0;
}
(4):矩阵转置
#include<stdio.h>
int main()
{
int a[10][10],n,i,j,t,b[10][10];
while(scanf("%d",&n)!=EOF&&n<=10)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==n-1)
printf("%d\n",a[j][i]);
else printf("%d",a[j][i]);
}
}
}
return 0;
}
(5):求矩阵最大值,并输出其行号和列号。
#include<stdio.h>
int main()
{
int a[10][10],n,i,j,max,h,l;
while(scanf("%d",&n)!=EOF&&n<=10)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
max=a[0][0];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(max<a[i][j])
{
max=a[i][j];
h=i;
l=j;
}
}
}
printf("%d\n",max);
printf("%d %d\n",h,l);
}
return 0;
}