编写程序二并运行:求一个4×4矩阵两条对角线上所有元素之和。

编写程序二并运行:求一个4×4矩阵两条对角线上所有元素之和。说明:4×4矩阵中的16个数据可采用赋初值的方式,也可采用从键盘输入的方式输入数据。#include<stdi... 编写程序二并运行:求一个4×4矩阵两条对角线上所有元素之和。 说明: 4×4矩阵中的16个数据可采用赋初值的方式,也可采用从键盘输入的方式输入数据。
#include<stdio.h>
int main()
{
ints,a[4][4],i=0,j=0;
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(i=j)
s=s+a[i][j];
if(i+j==3)
s=s+a[i][j];
printf("%d\n",s);
return 0;
}
请问错在哪里
展开
 我来答
坂本大佬get
2019-09-20 · TA获得超过2806个赞
知道答主
回答量:5
采纳率:0%
帮助的人:1050
展开全部

提供的代码主要以以下两点错误:

1、如果要采用赋值的方式去初始化4*4的矩阵,需要在两层for循环中写入scanf语句,而不是单独一行写“scanf("%d",&a[i][j]);”这样只会录入一个元素。

2、if(i=j)错误,应该为“==”。在c语言的编写中最好使用{}来调理层次关系。


修改后的代码如下:

#include<stdio.h>
int main()
{
int s,a[4][4],i=0,j=0;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
scanf("%d",&a[i][j]);
}
}

for(i=0;i<4;i++){

for(j=0;j<4;j++){
if(i==j)
s=s+a[i][j];
if(i+j==3)
s=s+a[i][j];

}
}

printf("%d\n",s);
return 0;
}
运行结果如下图所示

拓展资料

C语言循环控制语句的使用与对比

同一个问题,往往既可以用 while语句解决,也可以用 do-while或者for语句来解决,但在实际应用中,应根据具体情况来选用不同的循环语句。选用的一般原则是:

(1) 如果循环次数在执行循环体之前就已确定,一般用 for语句。如果循环次数是由循环体的执行情况确定的,一般用 while语句或者do- while语句。

(2) 当循环体至少执行一次时,用 do-while语句,反之,如果循环体可能一次也不执行,则选用while语句。

C++/C循环语句中,for语句使用频率最高,while语句其次,do语句很少用。

三种循环语句for、while、do-while可以互相嵌套自由组合。但要注意的是,各循环必须完整,相互之间绝不允许交叉。

参考资料来源:百度百科-C语言循环控制语句

Just丶2012
2014-12-09
知道答主
回答量:20
采纳率:0%
帮助的人:11.8万
展开全部
第四行,ints改成int s,少一个空格,而且输入也不对,scanf要放在for循环里面,还要给s赋初值0,好多错==
追问
scanf是什么意思,取地址是取我们输入的数字吗?不好意思,我是新手,所以才要来问问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yk_02_27
推荐于2017-10-01 · TA获得超过343个赞
知道小有建树答主
回答量:118
采纳率:100%
帮助的人:59.4万
展开全部
#include<stdio.h>
int main()
{
    int s=0,a[4][4],i,j;
    for(i=0;i<4;i++)
    for(j=0;j<4;j++){
        scanf("%d",&a[i][j]);
        if(i==j)
            s=s+a[i][j];
        if(i+j==3)
            s=s+a[i][j];
     }
    printf("%d\n",s);
    return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式