C编程利用二维数组求方阵主次对角线之和; 急,求C语言帝帮忙
2个回答
展开全部
#include <stdio.h>
#define n 3
int main(void)
{
int i, j, sum;
int a[n][n];
printf("Please input a array\n");
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++)
{
printf("%3d", a[i][j]);
}
printf("\n");
}
sum = 0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if((i==j) || (i+j==n-1))
{
sum += a[i][j];
}
}
}
printf("主对角线和次对角线之和是:%d\n", sum);
return 0;
}
如果不是的话你可以给我留言,要是对的话记得给我加分, 呵呵
#define n 3
int main(void)
{
int i, j, sum;
int a[n][n];
printf("Please input a array\n");
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++)
{
printf("%3d", a[i][j]);
}
printf("\n");
}
sum = 0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if((i==j) || (i+j==n-1))
{
sum += a[i][j];
}
}
}
printf("主对角线和次对角线之和是:%d\n", sum);
return 0;
}
如果不是的话你可以给我留言,要是对的话记得给我加分, 呵呵
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我是自己推出公式来的..分两种情况,奇数数组和偶数数组,奇数数组主次对角线之和要减去中间的一个多余的元素,偶数无多余的元素,主次对角线元素之和等于一排元素的个数*两个对角之和除2,可以写成:
if (b%2!=0)
c=b*( a[0, b-1]+ a[ b-1,0])/2+ b*(a[0,0]+ a[ b-1, b-1])/2-( a[0,0]+ a[ b-1, b-1])/2; ( b为你定义的数组的元素个数,c为存放主次对角线之和的容器,a为多维数组;当二维数组元素的数量为奇数时,主次对角线之和相加再减去中间多余的一个元素)
else
c=b*( a[0, b-1]+ a[ b-1,0])/2+ b*(a[0,0]+ a[ b-1, b-1])/2; (当元素的数量为偶数,中间无重叠的元素,直接相加即可)
printf.......
我是学c#的,如果你没有看懂我的想法的话你就直接把上面代码带到你原来的代码中就行了 不懂问我
if (b%2!=0)
c=b*( a[0, b-1]+ a[ b-1,0])/2+ b*(a[0,0]+ a[ b-1, b-1])/2-( a[0,0]+ a[ b-1, b-1])/2; ( b为你定义的数组的元素个数,c为存放主次对角线之和的容器,a为多维数组;当二维数组元素的数量为奇数时,主次对角线之和相加再减去中间多余的一个元素)
else
c=b*( a[0, b-1]+ a[ b-1,0])/2+ b*(a[0,0]+ a[ b-1, b-1])/2; (当元素的数量为偶数,中间无重叠的元素,直接相加即可)
printf.......
我是学c#的,如果你没有看懂我的想法的话你就直接把上面代码带到你原来的代码中就行了 不懂问我
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询