#include
int main()
{
int a[5][5];
int i,j,k=1,sum=0;
for(i=1; i<=5; i++)
{
k=1;
for(j=1; j<=5; j++)
{
if(j>i)
{
printf("%d ",k+1);
k++;
}
else
printf("1 ");
}
printf("\n");
}
for(i=1; i<6; i++)
{
for(j=1; j<6; j++)
{
if(j==1||i==1||j==5||i==5)
continue;
else
sum+=a[i][j];
}
}
printf("sum=%d",sum);
return 0;
}
这个程序是要算出来 方阵中所有不靠边元素之和 但是不知道为什么答案就是不对
if(j==1||i==1||j==5||i==5)
目测5个元素的数组下标是0-4而不是1-5
你这个程序写的格式太乱了,建议你把格式带好,
还有虽然if else后面单句可以不带括号,但是不建议这样做,
这样做并会显得你懂得多、显得你代码简练,
程序员是个严谨的职业。。。。
带好格式自己找错误。。。
或者你把格式调好再问,回答问题的人还要从你乱七八糟的代码里面帮你找错。
这是一个问题人的礼貌和程序员的基本。
c语言数组索引越界不报错的嘛。。。。。
首先,你的A从头到尾没有赋值
其次,索引第一个应该是0,最后一个是4,而不是1和5
数组下标应为0到4,而不是1到5
骚年,你int a[5][5]是不错,这样得到的确实是5乘5的数组,但是下标却是从0到4
也就是a[0][0]……a[4][4]
你把最后的代码改一下:
for(i=0; i<5; i++)
{
for(j01; j<5; j++)
{
** if(j==0||i==0||j==4||i==4)**
continue;
else
sum+=a[i][j];
}
}