利用for循环 做出一个4*4的循环数组;
发布网友
发布时间:2023-07-27 04:45
我来回答
共3个回答
热心网友
时间:2024-12-12 17:46
调试了一下,问题在第二重循环的控制不好,导致数组操作越界。
修改代码和注释如下:
#include<stdio.h>
int main()
{
int s[4][4];
int a;
int x;
int y;
int sum=1;
//for(a=0;a<=2;a++) 多了等号
for(a=0;a<2;a++)
{
//for(x=a;a<4;x++) 下边界也要收缩,变量使用错误,导致越界
for(x=a;x<4-a;x++)
{
s[x][a]=sum++;
}
//for(y=a+1;y<4;y++)h 下边界也要收缩,拼写错误
for(y=a+1;y<4-a;y++)
{
s[4-a-1][y]=sum++;
}
//for(x=4-a-2;x<=2;x--) 下边界条件错误,导致越界
for(x=4-a-2;x>=a;x--)
{
s[x][4-a-1]=sum++;
}
for(y=4-a-2;y>a;y--)
{
s[a][y]=sum++;
}
}
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
printf("%6d\t",s[x][y]);
}
printf("\n\n");
}
return 0;
}
在VC6调试通过,如下图:
供参考。
热心网友
时间:2024-12-12 17:47
#include<stdio.h>
int main()
{
int s[4][4];
int a;
int x;
int y;
int sum=1;
for(a=0;a<2;a++)
{
for(x=a;x<4-a;x++)
{
s[x][a]=sum++;
}
for(y=a+1;y<4-a;y++)
{
s[4-a-1][y]=sum++;
}
for(x=4-a-2;(x<4-a-1) && (x>=a);x--)
{
s[x][4-a-1]=sum++;
}
for(y=4-a-2;y>a;y--)
{
s[a][y]=sum++;
}
}
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
printf("%6d\t",s[x][y]);
}
printf("\n\n");
}
return 0;
}
这是修改之后的,你可以对比一下,另外你可能粘的有问题,编译都不过的。。。
热心网友
时间:2024-12-12 17:47
C语言的数组概念的学习,通过for循环输出打印数组