试图编写一个用C语言输出棋盘的代码

试图编写一个用C语言输出棋盘的代码,c,for-loop,printf,C,For Loop,Printf,我试图编写一个代码,通过使用for循环输出带有星号的棋盘式效果。我似乎无法让它工作。这是我的密码。非常感谢您的帮助 #include <stdio.h> int main (void) { int a; int b; for(a=1; a<=10; a+=2) { printf("* * * * * * * * * *"); } for (b=2; b<=10; b+=2) { printf(

我试图编写一个代码,通过使用for循环输出带有星号的棋盘式效果。我似乎无法让它工作。这是我的密码。非常感谢您的帮助

#include <stdio.h>

int main (void) 
{   
   int a;
   int b;

   for(a=1; a<=10; a+=2)
   { 
      printf("* * * * * * * * * *");
   }

   for (b=2; b<=10; b+=2)
   { 
    printf(" * * * * * * * * * ");
   }

   return 0; 
}
#包括
内部主(空)
{   
INTA;
int b;

对于(a=1;a尝试使用单个循环和
a%2
在两种类型的行之间交替:

#include <stdio.h>

int main (void) 
{   
  for (int a = 1; a <= 10; a += 1)
  { 
    if (a % 2 == 0)
      printf(" * * * * * * * * * \n");
    else
      printf("* * * * * * * * * *\n");
  }
  return 0;
}
#包括
内部主(空)
{   

对于(int a=1;a您需要交替每一行

#include <stdio.h>

int main (void) {   
    int a;

    for(a=1; a<=10; a+=2) { 
        printf("* * * * * * * * * *\n");
        printf(" * * * * * * * * * \n");
    }
    return 0;
}
#包括
int main(void){
INTA;

对于(a=1;a您正在打印支票板的所有奇数行,然后是所有偶数行。此外,您还错过了回车。您只能尝试使用一个循环

  #include <stdio.h>

  int main (void) 
  {   

     for(int a=1; a<=10; a+=2)

     {   
       printf("* * * * * * * * * *\n")
       printf(" * * * * * * * * * \n") 
     }

     return 0;

  }
#包括
内部主(空)
{   

对于(inta=1;a,这里是我的解决方案,试图使它尽可能简单

#include<stdio.h>

int main() {
    // We want 10 checkerboard lines, so we iterate from 0 through 9
    for(int a = 0; a < 10; ++a) {
        // We want to change the pattern any other line, an easy way to do this is to 
        // branch on whether the iterator index, a, is even (a%2 = 0), or odd (a%2 != 0).
        if(a%2){
            // If a is odd we print the shifted pattern, with a newline
            printf(" * * * * * * * * * \n");
        }else {
            // if a is even, we print the normal pattern
            printf("* * * * * * * * * *\n");
        }
    }
}
#包括
int main(){
//我们需要10行棋盘格,所以我们从0迭代到9
对于(int a=0;a<10;++a){
//我们想改变任何其他行的模式,一个简单的方法是
//分支取决于迭代器索引a是偶数(a%2=0)还是奇数(a%2!=0)。
如果(a%2){
//如果a是奇数,我们打印移位的图案,并换行
printf(“***\n”);
}否则{
//如果a是偶数,则打印正常模式
printf(“***\n”);
}
}
}

虽然打印固定大小的电路板没有问题,但为什么要限制自己输出字符串文字呢?计算机是以灵活的方式解决问题的。如果您不想要9行10/9星号,而是想要将电路板的大小增加一倍呢?或者,再添加一列和两行?您将无法更改字符串循环条件下的文字

让计算机根据简单的行数输入来计算打印什么?现在这个数字必须是奇数,所以如果输入偶数行,你可以决定加一或减一,但除此之外,编写一个算法来处理其余的行数

#include <stdio.h>
#include <stdlib.h>

#define ROWS 9
#define COLS ROWS

int main (int argc, char **argv) {

    int rows = argc > 1 ? atoi (argv[1]) : ROWS,
        cols = rows & 1 ? rows : (rows += 1);    /* must be odd */

    for (int i = 0; i < rows; i++) {    /* output rows */
        if ((i & 1) == 0)
            putchar ('*');
        for (int j = 0; j < cols; j++)  /* output cols */
            fputs (" *", stdout);
        putchar ('\n');
    }

    return 0;
}
双尺寸板:

$ ./bin/checkers 19
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *

当你设计你的代码时,尽可能使它变得健壮和灵活。当你可以用一种灵活的解决方案来完成同样的事情时,不要限制你的代码。

你遇到的问题是什么?要解释你的代码背后的逻辑吗?你可以考虑从实际编译的代码开始。缺少一些
a%2
a&1
(或
!(a&1)
匹配偶数检查)相比成本相当高。@DavidC.Rankin编译器现在将优化
x%2
,这在现实世界中没有什么区别,而且对于初学者来说,模方法比使用二进制运算符更清晰
$ ./bin/checkers 19
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *