Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 嵌套for循环结束时间早于预期_C_Function_For Loop_Nested Loops - Fatal编程技术网

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;
}
+++++-----
-----+++++
+++++-----
-----+++++
+++++-----