rah*_*123 0 c arrays matrix infinite-loop multidimensional-array
#include <stdio.h>
int main()
{
int arr[20]={7,9,7,8,6,5,3,45,4,4,4,4,4,4,4,4,4,4,4,4};
int i,j;
for(i=0;i<3;i++)
{
while(i=0)
{
for(j=0;j<5;j++)
{
printf("%d",arr[j]);
}
printf("\n");
}
continue;
while(i=1)
{
for(j=0;j<5;j++)
{
printf("%d",arr[5+j]);
}
printf("\n");
}
continue;
while(i=2)
{
for(j=0;j<5;j++)
{
printf("%d",arr[10+j]);
}
printf("\n");
}
continue;
while(i=3)
{
for(j=0;j<5;j++)
{
printf("%d",arr[15+j]);
}
printf("\n");
}
continue;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请格式化您的代码.它将帮助我们(以及您)更快地看到代码的作用以及它应该做什么.
您重新格式化的代码如下所示:
#include <stdio.h>
int main()
{
int arr[20] =
{ 7, 9, 7, 8, 6, 5, 3, 45, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 };
int i, j;
for (i = 0; i < 3; i++) {
while (i = 0) {
for (j = 0; j < 5; j++) {
printf("%d", arr[j]);
}
printf("\n");
}
continue;
while (i = 1) {
for (j = 0; j < 5; j++) {
printf("%d", arr[5 + j]);
}
printf("\n");
}
continue;
while (i = 2) {
for (j = 0; j < 5; j++) {
printf("%d", arr[10 + j]);
}
printf("\n");
}
continue;
while (i = 3) {
for (j = 0; j < 5; j++) {
printf("%d", arr[15 + j]);
}
printf("\n");
}
continue;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有三件事情在这里跳出来:
while (i = 0) ...将零分配给i然后测试该值.零值为false,while未输入循环.while和if.while是一个循环,但你想在这里进行一次检查.continue在每个街区之后.这意味着你跳过循环体的其余部分并直接进入外循环的更新部分,i++.(在这种情况下,这continue是一种祝福,因为它while (i = 1)是一个无限循环.)您的代码显示"展开开关反模式":当使用外循环的控制变量轻松计算偏移时,您可以编写具有不同硬编码偏移的四个循环i:
#include <stdio.h>
int main()
{
int arr[20] =
{ 7, 9, 7, 8, 6, 5, 3, 45, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 };
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 5; j++) {
printf("%4d", arr[5*i + j]);
}
printf("\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(我已将限制修改为i4.确实,如果从零开始计数,则最高有效行数为3,而不是4,但是已经小于已经处理的数量.不需要再次手动减去一个.我还添加了一个字段宽度,printf以便nubers不会相互碰撞.)