我试图打印这个大X模式:
x x
x x
x x
x x
x
x x
x x
x x
x x
我无法弄清楚算法来制作它。我刚刚开始进行C编程并陷入困境。
到目前为止我所拥有的是
#include <stdio.h>
int main()
{
int j,i;
char ch[] = "$";
for(int j = 5; j >= 0 ; --j)
{
for(i = 5; i>=0; --i)
{
if(j%2 == 1)
{
printf("%s",ch);
}
}
printf("\n");
}
return 0;
}
我也想出了这个模式,
0 5 0
1 3 1
2 1 2
3 0 3
2 1 2
1 3 1
0 5 0
边缘的数字是*应该出现的位置。中间的数字是空格应该出现的位置。我错过了什么?
答案 0 :(得分:2)
为了一点乐趣:
int main (void)
{
int i;
int w = 7;
for (i=1;i<=w*(w+1);i++)
printf (
"%c",
i % (w+1) == 0 ? '\n' :
i % (w) == 0 || i % (w+2) == 1 ? '*' : ' ');
}
答案 1 :(得分:2)
对于十字架上面的一个好的解决方案的轻微扩展最终不仅仅是跨越x&#39;
#include <stdio.h>
int main(){
int n = 4 - 1;
char ch[] = "x";
int i = 0, dx = 1;
printf ("\n __\n ||----------------------------\n");
do {
printf (" %s %*s%*.*s %*c\n", "||", 4*i+1, ch, 8*(n-i), 8*(n-i), ch, 4*i+1, '|');
if ((i += dx)==n)
dx = -dx;
} while (i>=0);
printf (" ||----------------------------\n");
for (i = 0; i < 10; i++)
printf (" ||\n");
printf ("------\n\n");
return 0;
}
<强>输出:强>
$ ./bin/flag
__
||----------------------------
|| x x |
|| x x |
|| x x |
|| x |
|| x x |
|| x x |
|| x x |
||----------------------------
||
||
||
||
||
||
||
||
||
||
------
答案 2 :(得分:1)
#include <stdio.h>
int main(){
int n = 5 - 1;
char ch[] = "x";
int i = 0, dx = 1;
do{
printf("%*s%*.*s\n", i+1, ch, 2*(n-i),2*(n-i), ch);
if((i += dx)==n)
dx = -dx;
}while(i>=0);
return 0;
}
for(;;){
printf("%*s%*.*s\n", i+1, ch, 2*(n-i),2*(n-i), ch);
if((i += dx)==n)
dx = -dx;
else if(i < 0)
break;
}
int n = 5 - 1;
char ch[] = "x";
int i = 0;
for(; i < n ; ++i){
printf("%*s%*.*s\n", i+1, ch, 2*(n-i),2*(n-i), ch);
}
for(; i >=0 ; --i){
printf("%*s%*.*s\n", i+1, ch, 2*(n-i),2*(n-i), ch);
}
答案 3 :(得分:0)
这是您的程序,只需进行最少的修改即可完成您的工作:
#include <stdio.h>
int main()
{
int j,i;
char ch[] = "x"; // (1)
int sz = 8; // (2)
for( j = sz; j >= 0 ; --j)
{
for(i = sz; i>=0; --i)
{
if(sz-j == i || i == j)// (3)
{
printf("%s",ch);
} else {
printf(" "); // (4)
}
}
printf("\n");
}
return 0;
}
说明:
(1)首先,如果你想要x,你应该打印x:)
(2)使用变量作为大小,这样你就可以玩它......
(3)你必须每行打印两个x,即在内环中的两个位置。
这些位置位于两个对角线上,其中x == y(此处为i == j),或x == 8 - y(此处为i == sz -j)
(4)你必须打印一个空格