我试图编写一个代码,通过使用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;
}
答案 0 :(得分:3)
您需要交替每一行
#include <stdio.h>
int main (void) {
int a;
for(a=1; a<=10; a+=2) {
printf("* * * * * * * * * *\n");
printf(" * * * * * * * * * \n");
}
return 0;
}
答案 1 :(得分:2)
尝试使用单个循环并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;
}
答案 2 :(得分:2)
以下是我的解决方案,尽量保持简单
#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");
}
}
}
答案 3 :(得分:1)
你正在打印所有奇数行,然后是你的检查板的所有偶数行。而且你错过了回车。你可以尝试只用一个循环。
#include <stdio.h>
int main (void)
{
for(int a=1; a<=10; a+=2)
{
printf("* * * * * * * * * *\n")
printf(" * * * * * * * * * \n")
}
return 0;
}
答案 4 :(得分:0)
虽然打印固定尺寸的电路板没有任何问题,但为什么要限制自己输出 string-literal ?计算机是以灵活的方式解决问题。如果不想要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;
}
(注意:你应该使用strtol
代替atoi
并对输入进行错误检查,你应该检查给出的参数是否为非负数并且限制它可以说101或其他东西可能适合你的终端宽度/高度,但那些留给你。)
示例使用/输出
$ ./bin/checkers
* * * * * * * * * *
* * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * * * * * * * *
双尺寸板:
$ ./bin/checkers 19
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
关键在于设计代码,使其尽可能健壮且灵活。当您能够以提供灵活解决方案的方式完成同样的事情时,不要限制您的代码。