break in side for loop - 在 break 语句之后不在 for 循环之外打印任何内容
break in side for loop -after break statement not printing anything outside the for loop
为什么下面的 for 循环在第 1 次迭代后不执行
谁能帮我解决这个问题。
提前致谢。
输出:
Enter the Range of Numbers
Enter the First Number: 2
Enter the Last Number: 30
The non-prime numbers between 2 and 30 are:
.start for loop...............i=2
.p....=3
end of for loop: i....=2
.start for loop...............i=3
在此之后,FOR 循环不再执行。为什么?
#include <stdio.h>
int main(void)
{
int start, end, i, remain, k, p, count = 0;
printf("\nEnter the Range of Numbers\n\n");
printf("Enter the First Number: ");
scanf("%d", &start);
printf("Enter the Last Number: ");
scanf("%d", &end);
int flag;
printf("The non-prime numbers between %d and %d are:\n", start, end);
for (i = start; i <= end; i++)
{
printf("\n.start for loop...............i=%d\n", i);
// p = 2;
for (p = 2; p<i;)
{
remain = i%p;
if (remain == 0)
break;
//p++;
}
p++;
printf("\n.p....=%d \n", p);
if (i == p)
// if(remain==0)
{
printf("%d ", i);
count++;
}
printf("\n end of for loop: i....=%d\n", i);
}
printf("\n............\n");
}
你的循环代码
for (p = 2; p<i;)
{
remain = i%p;
if (remain == 0)
break;
//p++;
}
不完整。
p
在 for
语句中不可更改,在正文中 p++
被注释。因此,您可能会遇到无限循环。
考虑以下更改:
remain = 1;
for (p = 2; p<i && remain; p++)
{
remain = i % p;
}
甚至(没有remain
)
for (p = 2; p < i && i%p; p++);
让我们考虑 p = 2
和 i = 5
。那么在这个循环中会发生什么
for (p = 2; p<i;)
{
remain = i%p;
if (remain == 0)
break;
//p++;
}
第 1 行 >> 运行 for 循环。
第 2 行 >> remain = i%p
。 i = 5 & p = 2. 所以剩下 = 5%2 = 1.
第三行 >> remain 不为零。所以 if(remain == 0)
return 错误。
然后它从第一行再次开始工作。所以这个循环就像一个无限循环。
试试这个代码:
int start, end, i, remain, k, p, count = 0;
printf("\nEnter the Range of Numbers\n\n");
printf("Enter the First Number: ");
scanf_s("%d", &start);
printf("Enter the Last Number: ");
scanf_s("%d", &end);
int flag;
printf("The non-prime numbers between %d and %d are:\n", start, end);
for (i = start; i <= end; i++)
{
//printf("\n.start for loop...............i=%d\n", i);
for (p=1;p<i;p++)
{
if (p > 1 && i%p == 0)
{
printf("%d ", i);
count++;
break;
}
}
//printf("\n end of for loop: i...............d\n", i);
}
printf("\n............\n");
它保留了我假设您正在尝试做的事情。我已经评论了打印语句的噪音,并且 count++
似乎没有在任何地方使用过。您可以将 for
循环减少到:
printf("The non-prime numbers between %d and %d are:\n", start, end);
for (i = start; i <= end; i++)
{
for (p=1;p<i;p++)
{
if (p > 1 && i%p == 0)
{
printf("%d ", i);
break;
}
}
}
printf("\n............\n");
为什么下面的 for 循环在第 1 次迭代后不执行 谁能帮我解决这个问题。 提前致谢。
输出:
Enter the Range of Numbers
Enter the First Number: 2
Enter the Last Number: 30
The non-prime numbers between 2 and 30 are:
.start for loop...............i=2
.p....=3
end of for loop: i....=2
.start for loop...............i=3
在此之后,FOR 循环不再执行。为什么?
#include <stdio.h>
int main(void)
{
int start, end, i, remain, k, p, count = 0;
printf("\nEnter the Range of Numbers\n\n");
printf("Enter the First Number: ");
scanf("%d", &start);
printf("Enter the Last Number: ");
scanf("%d", &end);
int flag;
printf("The non-prime numbers between %d and %d are:\n", start, end);
for (i = start; i <= end; i++)
{
printf("\n.start for loop...............i=%d\n", i);
// p = 2;
for (p = 2; p<i;)
{
remain = i%p;
if (remain == 0)
break;
//p++;
}
p++;
printf("\n.p....=%d \n", p);
if (i == p)
// if(remain==0)
{
printf("%d ", i);
count++;
}
printf("\n end of for loop: i....=%d\n", i);
}
printf("\n............\n");
}
你的循环代码
for (p = 2; p<i;)
{
remain = i%p;
if (remain == 0)
break;
//p++;
}
不完整。
p
在 for
语句中不可更改,在正文中 p++
被注释。因此,您可能会遇到无限循环。
考虑以下更改:
remain = 1;
for (p = 2; p<i && remain; p++)
{
remain = i % p;
}
甚至(没有remain
)
for (p = 2; p < i && i%p; p++);
让我们考虑 p = 2
和 i = 5
。那么在这个循环中会发生什么
for (p = 2; p<i;)
{
remain = i%p;
if (remain == 0)
break;
//p++;
}
第 1 行 >> 运行 for 循环。
第 2 行 >> remain = i%p
。 i = 5 & p = 2. 所以剩下 = 5%2 = 1.
第三行 >> remain 不为零。所以 if(remain == 0)
return 错误。
然后它从第一行再次开始工作。所以这个循环就像一个无限循环。
试试这个代码:
int start, end, i, remain, k, p, count = 0;
printf("\nEnter the Range of Numbers\n\n");
printf("Enter the First Number: ");
scanf_s("%d", &start);
printf("Enter the Last Number: ");
scanf_s("%d", &end);
int flag;
printf("The non-prime numbers between %d and %d are:\n", start, end);
for (i = start; i <= end; i++)
{
//printf("\n.start for loop...............i=%d\n", i);
for (p=1;p<i;p++)
{
if (p > 1 && i%p == 0)
{
printf("%d ", i);
count++;
break;
}
}
//printf("\n end of for loop: i...............d\n", i);
}
printf("\n............\n");
它保留了我假设您正在尝试做的事情。我已经评论了打印语句的噪音,并且 count++
似乎没有在任何地方使用过。您可以将 for
循环减少到:
printf("The non-prime numbers between %d and %d are:\n", start, end);
for (i = start; i <= end; i++)
{
for (p=1;p<i;p++)
{
if (p > 1 && i%p == 0)
{
printf("%d ", i);
break;
}
}
}
printf("\n............\n");