C 我的计数器3如何正确递增循环?
所以我不确定计数器3 while循环是如何结束的。我试图将它增加C 我的计数器3如何正确递增循环?,c,C,所以我不确定计数器3 while循环是如何结束的。我试图将它增加+1,但这会打印太多的*行。随机添加counter3=counter3+input,正确结束循环。这是怎么可能的,因为这样一来,循环似乎会在第一次之后结束。一个任务是获取用户输入的整数,并使用while循环生成一个*大小的空框。因此,如果用户输入5,则框应为7x7。我用()表示有问题的部分。代码如下: //Homework 3 - Question 8 //main.c #include <stdio.h> int
+1
,但这会打印太多的*行。随机添加counter3=counter3+input
,正确结束循环。这是怎么可能的,因为这样一来,循环似乎会在第一次之后结束。一个任务是获取用户输入的整数,并使用while循环生成一个*大小的空框。因此,如果用户输入5,则框应为7x7。我用()表示有问题的部分。代码如下:
//Homework 3 - Question 8
//main.c
#include <stdio.h>
int main(void) {
int input, input1, counter = 0, counter2 = 0, counter3 = 0, counter4 = 0, counter5 = 0;
printf("Enter an integer between 1 and 20: ");
scanf("%d", &input);
while (counter < (input + 2) ){
printf("* ");
counter += 1;
}
**while (counter3 < input)** {
counter2 = 0;
while (counter2 < input ){
printf("\n* ");
counter4 = 0;
while (counter4 < input){
printf(" ");
counter4 +=1;
}
printf("*");
counter2 +=1;
}
**counter3 = counter3 + input;**
}
printf("\n");
while (counter5 < (input + 2) ){
printf("* ");
counter5 += 1;
}
printf("\n");
return 0;
}
//作业3-问题8
//main.c
#包括
内部主(空){
int输入,input1,计数器=0,计数器2=0,计数器3=0,计数器4=0,计数器5=0;
printf(“输入一个介于1和20之间的整数:”);
scanf(“%d”,输入(&I));
同时(计数器<(输入+2)){
printf(“*”);
计数器+=1;
}
**而(计数器3<输入)**{
计数器2=0;
而(计数器2<输入){
printf(“\n*”);
计数器4=0;
而(计数器4<输入){
printf(“”);
计数器4+=1;
}
printf(“*”);
计数器2+=1;
}
**计数器3=计数器3+输入;**
}
printf(“\n”);
同时(计数器5<(输入+2)){
printf(“*”);
计数器5+=1;
}
printf(“\n”);
返回0;
}
因为不需要带计数器3的循环。您可以删除有问题的行(带有while的封闭}
,程序将保持不变。while(counter3
只运行一次,它不会循环,可以删除
#include <stdio.h>
int main(void) {
int input, input1, counter = 0, counter2 = 0, counter3 = 0, counter4 = 0, counter5 = 0;
printf("Enter an integer between 1 and 20: ");
scanf("%d", &input);
while (counter < (input + 2) ){
printf("* ");
counter += 1;
}
counter2 = 0;
while (counter2 < input ){
printf("\n* ");
counter4 = 0;
while (counter4 < input){
printf(" ");
counter4 +=1;
}
printf("*");
counter2 +=1;
}
printf("\n");
while (counter5 < (input + 2) ){
printf("* ");
counter5 += 1;
}
printf("\n");
return 0;
}
#包括
内部主(空){
int输入,input1,计数器=0,计数器2=0,计数器3=0,计数器4=0,计数器5=0;
printf(“输入一个介于1和20之间的整数:”);
scanf(“%d”,输入(&I));
同时(计数器<(输入+2)){
printf(“*”);
计数器+=1;
}
计数器2=0;
而(计数器2<输入){
printf(“\n*”);
计数器4=0;
而(计数器4<输入){
printf(“”);
计数器4+=1;
}
printf(“*”);
计数器2+=1;
}
printf(“\n”);
同时(计数器5<(输入+2)){
printf(“*”);
计数器5+=1;
}
printf(“\n”);
返回0;
}
我试图将它增加+1,但这会打印太多的*行
这怎么可能,因为它看起来像一个循环
将在第一次之后结束
这根本不是真的。
counter3
被初始化为0,您将其值增加1。假设input>0
,那么counter3
将保持为真,直到counter3==input
循环将终止。它与您添加的代码一起工作的原因是现在您正在增加counter3
的值,使其在第一次迭代时大于input
的值,因此counter3
语句现在为false
,循环终止。在编程中需要学习的第一个规则是
您正在尝试读取一个数字,然后通过n+2
平方的*
s打印一个n+2
所以您只需要两个循环,一个外部循环为每个迭代打印一行,一个内部循环为每个迭代打印一行
int input = 0, counter = 0, counter1 = 0;
scanf("%d", &input);
// Increase input by 2 to get the true size of the square
input += 2;
// outer loop to print rows
while (counter < input)
{
// inner loop to print '*'s
counter1 = 0;
while (counter1 < input)
{
// print your '*' here, with any needed spaces
counter1++;
}
// end of row, print your newline character here
counter++;
}
将计数器变量的初始化和增量放在同一行上执行完全相同的操作。为什么不为(int counter=0;counter
?为了代码的可读性,这些都是循环的美。@KamilCuk任务是使用,而循环显示很多次你都在期待*。
?“太多”有点含糊不清。明白了。谢谢!
for (counter = 0; counter < input; counter++)
{
for (counter1 = 0; counter1 < input; counter1++)
{