求大神帮我解决一个关于C语言的问题。在ACM上反馈出错。
/*题目描述输入5×5阶的矩阵,编程实现:(1)求两条对角线上的各元素之和。(2)求两条对角线上行、列下标均为偶数的各元素之积。输入格式输入一个n(n<15)接下来输入n...
/*题目描述
输入5×5阶的矩阵,编程实现:
(1)求两条对角线上的各元素之和。
(2)求两条对角线上行、列下标均为偶数的各元素之积。
输入格式
输入一个n (n<15)
接下来输入n行n列 一个矩阵
输出
输出结果1和结果2,空格分隔。
样例输入
3
1 1 1
1 1 1
1 1 1
样例输出
5 1
*/
#include<stdio.h>
void Read(int a[][25],int n);
int Sum (int n,int a[][25]);
long Mark(int n,int a[][25]);
void Print (int sum,long mark);
int main()
{
int a[25][25];
int n,sum;
long mark;
while(scanf("%d",&n)!=EOF)
{
Read(a,n);
sum = Sum(n,a); // 求两条对角线上各元素和
mark = Mark(n,a); // 求两条对角线上行、列下标均为偶数的各元素之积。
Print (sum,mark);
}// 打印
return 0;
}
void Read(int a[][25],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
}
int Sum (int n,int a[][25])// 求两条对角线上各元素和
{
int i,sum=0;
if(n%2==0)
{
for(i=0;i<n;i++)
{
sum = sum +a[i][i] +a[i][n-1-i];
}
}
else
{
for(i=0;i<n;i++)
{
sum = sum +a[i][i] + a[i][n-1-i];
}
sum = sum-a[n/2][n/2];
}
return sum;
}
long Mark(int n,int a[][25]) // 求两条对角线上行、列下标均为偶数的各元素之积。
{
int i,j;
long mark = 1;
for(i=1;i<n;i++)
{
if(i%2 == 0)
{
for(j=1;j<n;j++)
{
if(j%2 == 0)
{
mark = mark*a[i][j];
}
}
}
}
return mark;
}
void Print (int sum,long mark)
{
printf("%d ",sum);
printf("%ld\n",mark);
}
/*
测试文件:/test.out 结果:答案错误
=======原因======
当参考答案输出:
2673
-------时---------
你的程序输出:
17107200
=================
测试文件:/sample.out 结果:答案正确
*/ 展开
输入5×5阶的矩阵,编程实现:
(1)求两条对角线上的各元素之和。
(2)求两条对角线上行、列下标均为偶数的各元素之积。
输入格式
输入一个n (n<15)
接下来输入n行n列 一个矩阵
输出
输出结果1和结果2,空格分隔。
样例输入
3
1 1 1
1 1 1
1 1 1
样例输出
5 1
*/
#include<stdio.h>
void Read(int a[][25],int n);
int Sum (int n,int a[][25]);
long Mark(int n,int a[][25]);
void Print (int sum,long mark);
int main()
{
int a[25][25];
int n,sum;
long mark;
while(scanf("%d",&n)!=EOF)
{
Read(a,n);
sum = Sum(n,a); // 求两条对角线上各元素和
mark = Mark(n,a); // 求两条对角线上行、列下标均为偶数的各元素之积。
Print (sum,mark);
}// 打印
return 0;
}
void Read(int a[][25],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
}
int Sum (int n,int a[][25])// 求两条对角线上各元素和
{
int i,sum=0;
if(n%2==0)
{
for(i=0;i<n;i++)
{
sum = sum +a[i][i] +a[i][n-1-i];
}
}
else
{
for(i=0;i<n;i++)
{
sum = sum +a[i][i] + a[i][n-1-i];
}
sum = sum-a[n/2][n/2];
}
return sum;
}
long Mark(int n,int a[][25]) // 求两条对角线上行、列下标均为偶数的各元素之积。
{
int i,j;
long mark = 1;
for(i=1;i<n;i++)
{
if(i%2 == 0)
{
for(j=1;j<n;j++)
{
if(j%2 == 0)
{
mark = mark*a[i][j];
}
}
}
}
return mark;
}
void Print (int sum,long mark)
{
printf("%d ",sum);
printf("%ld\n",mark);
}
/*
测试文件:/test.out 结果:答案错误
=======原因======
当参考答案输出:
2673
-------时---------
你的程序输出:
17107200
=================
测试文件:/sample.out 结果:答案正确
*/ 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询