2 wsunny111 WSunny111 于 2017.01.03 12:53 提问

初学者请教C语言代码问题

1到16按任意顺序全部输入,并矩形4*4矩形输出,且计算出每行每列以及两个对角线的加和。请问下面的代码哪里错误?
运行结果:图片说明
#include
#define N 16
int main()
{
int a[N],i,r1,r2,r3,r4,c1,c2,c3,c4,d1,d2;
printf("Enter the numbers from 1 to 16 in any order:");
for(i=0;i<16;i++)
{
scanf("%d",&a[i]);
}

for(i=0;i<4;i++)
{
    printf("%d ",a[i]);
    r1+=a[i];
}
printf("\n");
for(i=4;i<8;i++)
{
    printf("%d ",a[i]);
    r2+=a[i];
}
printf("\n");
for(i=8;i<12;i++)
{
    printf("%d ",a[i]);
    r3+=a[i];
}
printf("\n");
for(i=12;i<16;i++)
{
    printf("%d ",a[i]);
    r4+=a[i];
}
printf("\n");



for(i=0;i<16;i+=4)
{
    c1+=a[i];
}
for(i=1;i<16;i+=4)
{
    c2+=a[i];
}
for(i=0;i<16;i+=4)
{
    c3+=a[i];
}
for(i=0;i<16;i+=4)
{
    c4+=a[i];
}


for(i=0;i<16;i+=4)
{
    d1+=a[i];
    i+=1;
}
for(i=3;i<16;i+=4)
{
    d2+=a[i];
    i+=1;
}
printf("Row sums:%d %d %d %d\n",r1,r2,r3,r4);
printf("Column sums:%d %d %d %d\n",c1,c2,c3,c4);
printf("Diagonal sums:%d %d\n",d1,d2);

}

3个回答

miaochunlei
miaochunlei   2017.01.03 15:26
已采纳

#include

#define N 16

int main()
{
int a[N] = {0};
int i = 0;
int r1 = 0;
int r2 = 0;
int r3 = 0;
int r4 = 0;
int c1 = 0;
int c2 = 0;
int c3 = 0;
int c4 = 0;
int d1 = 0;
int d2 = 0;
printf("Enter the numbers from 1 to 16 in any order:");
for(i=0;i<16;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<4;i++)
{
printf("%d ",a[i]);
r1+=a[i];
}
printf("\n");
for(i=4;i<8;i++)
{
printf("%d ",a[i]);
r2+=a[i];
}
printf("\n");
for(i=8;i<12;i++)
{
printf("%d ",a[i]);
r3+=a[i];
}
printf("\n");
for(i=12;i<16;i++)
{
printf("%d ",a[i]);
r4+=a[i];
}
printf("\n");

for(i=0;i<16;i+=4)
{
    c1+=a[i];
}
for(i=1;i<16;i+=4)
{
    c2+=a[i];
}
for(i=2;i<16;i+=4)//0改为2
{
    c3+=a[i];
}
for(i=3;i<16;i+=4)//0改为3
{
    c4+=a[i];
}


for(i=0;i<16;i+=4)
{
    d1+=a[i];
    i+=1;
}
for(i=3;i<16-3;i+=4)//16改为16-3
{
    d2+=a[i];
    i-=1;           //-=改为+=
}
printf("Row sums:%d %d %d %d\n",r1,r2,r3,r4);
printf("Column sums:%d %d %d %d\n",c1,c2,c3,c4);
printf("Diagonal sums:%d %d\n",d1,d2);

}

WSunny111
WSunny111 非常感谢!
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2017.01.03 13:19
 int a[N],i,r1,r2,r3,r4,c1,c2,c3,c4,d1,d2;
r1=r2=r3=r4=c1=c2=c3=c4=d1=d2=0; //你忘记初始化了。

for(i=0;i<16;i+=4)
{
    c3+=a[i];
}
for(i=0;i<16;i+=4)
{
    c4+=a[i];
}
这里i应该分别是2 3开始循环

对角线没算对
for(i=0;i<4;i++)
{
    d1+=a[i * 4 + 4];
        d2 = a[i*4+(4-i)];
}
WSunny111
WSunny111 非常感谢!
一年多之前 回复
u012976158
u012976158   2017.01.03 18:43

你没有对接收求和的变量进行初始化,再有你在求对角线和的时候求得不对

我给你提个思路 要比你这简单

你定义一个二维数组 也就是矩阵, 之后用两层循环 遍历 输入并存储 之后通过两层循环遍历 并初始化变量求值 此时要简单得多 尤其是在求对角线时

WSunny111
WSunny111 非常感谢!
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
请教C语言问题
请教C语言问题
求一份适合初学C语言的小游戏代码,在线等,挺急的
刚刚学C语言,老师出题设计一个小游戏,越简单越好,最好简单到一个主函数两个子函数
C语言编程代码,适合初学者
初学者学习C语言,看不懂代码,一段简单的代码可以查看,有助于学习
BCH编译码c语言实现
本资源给出了bch码的编译码的c语言代码,可以通用
C语言自学(适合初学者)
适合初学者的纯C学习,认真学习,搞懂里面的东西,你就入门啦(二级c语言什么的都是浮云)
C语言基础代码训练(适合初学者)
一些简单的C语言上手代码,非常适合与初学者,希望对大家有帮助
C编写的小游戏-适合初学者
在VC下编译成功并运行的C语言小游戏,对于学习C语言来说,仔细研读代码,会有不少收获。TXT文件里的代码可以直接拷贝到VC中,WIN32控制台程序,也就是DOS下运行的
适合C/C++初学者阅读的源码
学编程语言还是要读源码,看看ChinaUnix上的推荐。老手也一样可以学到东西。导读:   QUOTE:   原帖由 huaxue于 2006-9-26 22:09 发表   可以提供STL的源代码地址么   ^_^谢谢   http://www.research.att.com/~bs/ C++老巢   http://www.research.att.com/~bs/C++.html 有关C+
问题请教工程,问题请教工程
问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,问题请教工程,
最适合初学者学习的数据结构书(C语言版)(1)
现在的初学者有个误区,非要学严大妈的那本数据结构,我想说,你能看懂吗,这是面向研究生的书籍,有一定的基础才能看懂的,里面的算法没有原码,分析了了。本书是面向初学者设计的,里面有详细的分析,有完整的原码,这本书已经在严大妈的书的垄断下在书店已经看不到了,希望大家好好珍惜,一起进步。