C语言:编写程序,求一个n×n矩阵对角线元素之和。

输入:有多组数据。每组数据的第1行为一个整数n(3<n<10),然后连续n行为n×n矩阵。输出:每个矩阵的主对角和副对角线上元素的和。#include<stdio.h>#... 输入:有多组数据。
每组数据的第1行为一个整数n(3<n<10),然后连续n行为n×n矩阵。
输出:每个矩阵的主对角和副对角线上元素的和。
#include<stdio.h>
#define N 10
int main()
{ int i,j,n,s;
int a[N][N];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
printf("%d ",a[i][j]);
}
printf("\n");
}
}
while(n%2==0)
{ for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j) s+=a[i][j];
for(i=0,j=n;i<n,j<n;i++)
s+=a[i][j];
j--;
printf("%d\n",s);
}
while(n%2!=0)
{ for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j) s+=a[i][j];
for(i=0,j=n;i<n,j<n;i++,j--)
s+=a[i][j];
s=s-a[n/2+1][n/2+1];
printf("%d\n",s);
}

return 0;
}请帮我看一下哪里错了!!!急!!第二个while语句之前应该是没有问题的。
展开
 我来答
问明6E
高粉答主

2019-05-20 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.9万
展开全部

代码:

#include&lt;iostream&gt;

using namespace std;

int main()

{

int sum=0;

int n=0;

int**array;//指向整型的指针的指针.

cout&lt;&lt;"请输入矩阵的维数:"&lt;&lt;endl;

cin&gt;&gt;n;

array=new int*[n];//存放指针的数组.

for(int k=0;k&lt;n;k++)

{

array[k]=new int[n];//指向一个整型数组.

}

cout&lt;&lt;"请输入n*n个值:"&lt;&lt;endl;

for(int i=0;i&lt;n;i++)

{

for(int j=0;j&lt;n;j++)

{

cin&gt;&gt;array&lt;i&gt;[j];

cout&lt;&lt;array&lt;i&gt;[j]&lt;&lt;"";

}

cout&lt;&lt;endl;

}

for(int i=0;i&lt;n;i++)

sum+=array&lt;i&gt;&lt;i&gt;;

cout&lt;&lt;"两条对角线元素之和为:"&lt;&lt;sum&lt;&lt;endl;

system("pause");

return 0;

}

扩展资料:

函数名:system

功能:发出一个DOS命令

用法:int system(char*command);

程序例:

#include&lt;stdlib.h&gt;

#include&lt;stdio.h&gt;

int main(void)

{

printf("About to spawn and run a DOS command\n");

system("dir");

return 0;

}

如:system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。

例如,用system("color 0A");其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:

0=黑色1=蓝色2=绿色3=湖蓝色4=红色5=紫色6=黄色7=白色8=灰色9=淡蓝色A=淡绿色B=淡浅绿色C=淡红色D=淡紫色E=淡黄色F=亮白色

(注意:Microsoft Visual C++6.0支持system)

颜色属性由两个十六进制数字指定--第一个对应于背景,第二个对应于前景。每个数字

可以为以下任何值:

0=黑色8=灰色

1=蓝色9=淡蓝色

2=绿色A=淡绿色

3=浅绿色B=淡浅绿色

4=红色C=淡红色

5=紫色D=淡紫色

6=黄色E=淡黄色

7=白色F=亮白色

参考资料:

百度百科——system(函数)

小夏聊生活
高能答主

2019-12-07 · 专注于分享生活知识,热爱生活
小夏聊生活
采纳数:448 获赞数:114614

向TA提问 私信TA
展开全部

求一个n×n矩阵对角线元素之和的源代码如下

public class lianxi28 { 

public static void main(String[] args) {

System.out.println("请输入九个整数:");

Scanner in = new Scanner(System.in);

int[][] a = new int[3][3];

for(int i=0;i<3;i++){

for(int j=0;j<3;j++){

a[i][j]=in.nextInt();

}

}

System.out.println("你输入的n×n矩阵是:");

for(int i=0;i<3;i++){

for(int j=0;j<3;j++){

System.out.print(a[i][j]+" ");

}

System.out.println();

}

System.out.println();

int sum=0;

for(int i=0;i<3;i++){

for(int j=0;j<3;j++){

if(i==j){

sum=sum+a[i][j];

}

System.out.println(sum);

}

扩展资料

1、用arrange生成一个数组,元素为0,1,...,8,然后利用reshape生成一个n×n的矩阵。

2、利用for循环将该矩阵的主对角线上的元素相加,然后输出结果。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2017-12-17 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6645万
展开全部
#include "stdio.h"
#define N 10
int main(int argv,char *argc[]){
int i,j,n,s;
int a[N][N];
printf("Input n(int 3<n<10, letter end)...\n");
while(s=0,scanf("%d",&n)==1){
if(n<4 || n>9){
printf("Input error, exit...\n");
return 0;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
printf("%d\t",a[i][j]);
if(i==j || i==n-j-1)//输入时这里顺便就求和了
s+=a[i][j];
}
printf("\n");
}
printf("The result: %d\n",s);
printf("\nInput n(int 3<n<10, letter end)...\n");
}
return 0; 
}

运行样例:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuzhouliuying
高粉答主

2017-12-17 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:5.4万
采纳率:86%
帮助的人:2.5亿
展开全部

直接给程序吧:

#include <stdio.h>
#define N 10
int main(){
int i,j,n=1,k=0,s=0,a[100],b[10][10];
while(n)
{
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&b[i][j]);
if(i==j||i+j==n-1)
s+=b[i][j];
}
a[k]=s;k++;s=0;
}
for(i=0;i<k-1;i++)
printf("%d\n",a[i]);
return 0;
}

以上为本题的程序代码。C语言中,并不是某一句或几句只要不报错,就一定正确,也不是只要通过编译就正确,语句符合C语言要求是基本要求,关键是算法无误。往往初学者感觉写得差不多了,其实基本全错。

你的程序,分类讨论很怪异,而且没有针对每个输入,最后统一输出,而且,s是计算对角线元素值,计算完一组后要输出,s归零,然后计算下一组。所以,不要纠结哪一句错了,也不要说到哪里都是正确的,你完全无法保证你程序的正确。结构本身有问题,算法有问题。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丿艾瑞灬莉娅
2017-12-17 · TA获得超过916个赞
知道小有建树答主
回答量:926
采纳率:78%
帮助的人:430万
展开全部

我先问你 while(n%2==0)是要干什么

你while()里面写这个就实现功能了啊

    while(scanf("%d",&n) != EOF)
    {
        s = 0;        //    s 初始化为 0 
        for(i = 0; i < n; i++)
        { 
            for(j = 0; j < n; j++)
            {
                scanf("%d", &a[i][j]);
                if(i == j)
                    s += a[i][j]; 
                //printf("%d ",a[i][j]);
            }
            //printf("\n");
        }
        printf("sum = %d\n", s);
    }
追问
当n为偶数的时候
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式