如何使用C仅使用for/while循环和if/else语句(无数组)绘制#螺旋 [英] How to draw a spiral of # with only for/while loops and if/else statements (without arrays) using C
问题描述
所以我对C还是很陌生,想知道如何创建以下螺旋形状:
so I'm very new to C and am wondering how I could create the following spiral shape:
这是我的滑稽尝试.
#include <stdio.h>
int main(void) {
int size;
int i,j;
printf("Enter size: ");
scanf("%d", &size);
for (i = 0, j = 0; i < size - 4; i++, j+=2) {
int row = 1;
while (row <= size) {
int column = 1;
while (column <= size) {
if ((row == 1 + j && column > j && column < size - j)||
(row == size - (j) && column > j && column < size - j) ||
(column == size - (j) && row > j && row <= size - j) ||
(column == 1 + j && row > (2+j) && row < size - j)) {
printf("*");
}
else {
printf("-");
}
column++;
}
row++;
printf("\n");
}
}
return 0;
}
任何帮助将不胜感激!
推荐答案
我很喜欢这个问题,遇到了一些麻烦.但是,足够多的混乱使模式显而易见.结果如下:
I enjoyed this problem and ran into some troubles coming up with an approach. Enough messing around makes the pattern obvious, though; here's the result:
#include <stdio.h>
#define BLANK " "
#define FILLED "# "
void spiral(int size) {
int i, j;
if (!(size & 1)) { size++; }
int half = size / 2 + 1;
/* top */
for (i = 0; i < half; i++) {
if (i & 1) {
for (j = 0; j < size; j++) {
if (!(j & 1) && (j < i - 1 || j >= size - i)) {
printf(FILLED);
}
else {
printf(BLANK);
}
}
}
else {
for (j = 0; j < size; j++) {
if ((j & 1) && (j < i - 1 || j >= size - i)) {
printf(BLANK);
}
else {
printf(FILLED);
}
}
}
puts("");
}
/* bottom half */
for (; i < size; i++) {
if (i & 1) {
for (j = 0; j < size; j++) {
if (!(j & 1) && (j < size - i || j > i)) {
printf(FILLED);
}
else {
printf(BLANK);
}
}
}
else {
for (j = 0; j < size; j++) {
if ((j & 1) && (j < size - i || j > i)) {
printf(BLANK);
}
else {
printf(FILLED);
}
}
}
puts("");
}
}
int main() {
int i;
for (i = 1; i < 35; i += 2 ) {
spiral(i);
puts("\n");
}
return 0;
}
输出:
#
# # #
#
# # #
# # # # #
#
# # # #
# #
# # # # #
# # # # # # #
#
# # # # # #
# # #
# # # # #
# #
# # # # # # #
# # # # # # # # #
#
# # # # # # # #
# # #
# # # # # #
# # # #
# # # # # # #
# #
# # # # # # # # #
# # # # # # # # # # #
#
# # # # # # # # # #
# # #
# # # # # # # #
# # # # #
# # # # # # #
# # # #
# # # # # # # # #
# #
# # # # # # # # # # #
# # # # # # # # # # # # #
#
# # # # # # # # # # # #
# # #
# # # # # # # # # #
# # # # #
# # # # # # # #
# # # # # #
# # # # # # # # #
# # # #
# # # # # # # # # # #
# #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # #
# # #
# # # # # # # # # # # #
# # # # #
# # # # # # # # # #
# # # # # # #
# # # # # # # # #
# # # # # #
# # # # # # # # # # #
# # # #
# # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # #
# # # # # # #
# # # # # # # # # #
# # # # # # # #
# # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
说明:
让i
代表当前行索引,j
代表当前列索引.
Explanation:
Let i
represent the current row index and j
represent the current column index.
将问题分成两半.由于左半部分和右半部分是对称的,因此下半部分更容易实现,因此偶数行和奇数行都在交替的列索引if j < size - i || j > i
上打印其各自的模式.
Split the problem into two halves. The bottom half is easier because the left and right halves are symmetrical, so both even and odd rows print their respective pattern on alternating column indices if j < size - i || j > i
.
上半部分有点棘手:模式相同,除了左侧比右侧落后1之外,这意味着我们需要从左侧减去1:if j < i - 1 || j >= size - i
.
The top half is a little trickier: the pattern is the same, except the left side lags behind the right side by 1, meaning we need to subtract 1 from the left side: if j < i - 1 || j >= size - i
.
请注意,此代码可以使用一些清除方法来减少重复;我将其保留为冗长的名称,以便清楚地了解其工作原理.我还自由地调整了要打印的字符,因为原始字符在眼睛上很难看-使用#define
s或在函数中添加参数很容易进行调整.
Note that this code could use some cleanup to reduce repetition; I left it verbose so that it's clear how it works. I also took the liberty of adjusting the characters to print because the original is harder on the eyes--this is easily adjusted using the #define
s or adding parameters to the function.
这是 repl .
这篇关于如何使用C仅使用for/while循环和if/else语句(无数组)绘制#螺旋的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!