嵌套的 for 循环结束得比预期的早
nested for loops ending sooner than expected
我的代码:
#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;
}
得出这个结果:
+++++-----
-----+++++
+++++-----
-----+++++
+++++-----
我的代码:
#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;
}
得出这个结果:
+++++-----
-----+++++
+++++-----
-----+++++
+++++-----