C 嵌套for循环结束时间早于预期
我的代码:C 嵌套for循环结束时间早于预期,c,function,for-loop,nested-loops,C,Function,For Loop,Nested Loops,我的代码: #include <stdio.h> #include <math.h> void block(int r, char a, char b); int main(){ block(2, '+', '-'); } void block(int r, char a, char b){ int i; char x = a; char y = b; for (i = 1; i <= r; i++){ if ( i%2 == 1)
#include <stdio.h>
#include <math.h>
void block(int r, char a, char b);
int main(){
block(2, '+', '-');
}
void block(int r, char a, char b){
int i;
char x = a;
char y = b;
for (i = 1; i <= r; i++){
if ( i%2 == 1){
for (i = 1; i <= r; i++){
printf("%c", x);
}
for (i = 1; i <= r; i++){
printf("%c", y);
}
} else
{
for (i = 1; i <= r; i++){
printf("%c", x);
}
for (i = 1; i <= r; i++){
printf("%c", y);
}
}
printf("\n");
}
return;
}
我得到的是:
++--
第一行之后不会打印任何内容。例如,对于r=5,它正确地打印第一行++----但不打印解决方案的其余行
正确的解决方案:
+++++-----
-----+++++
+++++-----
-----+++++
+++++-----
感谢@rustyx
这最终对我起了作用
#include <stdio.h>
#include <math.h>
void block(int r, char a, char b);
int main(){
block(5, '+', '-');
}
void block(int r, char a, char b){
int i;
char x = a;
char y = b;
for (i = 1; i <= r; i++){
if ( i%2 == 1){
int j;
for (j = 1; j <= r; j++){
printf("%c", x);
}
for (j = 1; j <= r; j++){
printf("%c", y);
}
}
else{
int k;
for (k = 1; k <= r; k++){
printf("%c", y);
}
for (k = 1; k <= r; k++){
printf("%c", x);
}
}
printf("\n");
}
return;
}
您对所有循环使用相同的循环计数器…因为您在嵌套循环中重用了
i
。另请参阅答案中的提示。。。如果您在的中本地声明了计数器,那么就可以了。您可能希望阅读以下内容:请尝试一些更一致的缩进。编辑问题中的那个可能。。。
#include <stdio.h>
#include <math.h>
void block(int r, char a, char b);
int main(){
block(5, '+', '-');
}
void block(int r, char a, char b){
int i;
char x = a;
char y = b;
for (i = 1; i <= r; i++){
if ( i%2 == 1){
int j;
for (j = 1; j <= r; j++){
printf("%c", x);
}
for (j = 1; j <= r; j++){
printf("%c", y);
}
}
else{
int k;
for (k = 1; k <= r; k++){
printf("%c", y);
}
for (k = 1; k <= r; k++){
printf("%c", x);
}
}
printf("\n");
}
return;
}
+++++-----
-----+++++
+++++-----
-----+++++
+++++-----