在C中打印奇数散列倒三角形
我试图打印出一个倒三角散列在C中打印奇数散列倒三角形,c,C,我试图打印出一个倒三角散列 ./upside_down_oddnumber ########### ####### ### 我迄今为止的工作- int main(void) { int row, column; int size; printf("Enter size: "); scanf("%d", &size); row = 1; while (row <= size) { column = 1; while (column &l
./upside_down_oddnumber
###########
#######
###
我迄今为止的工作-
int main(void) {
int row, column;
int size;
printf("Enter size: ");
scanf("%d", &size);
row = 1;
while (row <= size) {
column = 1;
while (column <= size) {
if (row == (4 * size) -1 || row == column) {
printf("#");
} else {
printf(" ");
}
column++;
}
printf("\n");
row++;
}
return 0;
}
int main(无效){
int行,列;
整数大小;
printf(“输入大小:”);
scanf(“%d”,大小(&S);
行=1;
while(row问题在于if语句。
第一部分row==(4*size)-1
永远不会为真,因为该行永远不会比size大,所以4*size总是比row大,因此该语句永远不会为真。
第二节row==column
当然会给您一行。
你应该重新考虑你的算法。首先检查问题背后的算法:
4*size-1
是#
顶部行的长度,即打印输出的宽度
- 每行都有一个空格偏移量
- 对于初始行,空格数从零开始,增加2
这三个观察值应足以构成一个程序。为保持一致性,行号和列号应以零开始。每行的长度应为宽度
个字符。使用以下公式确定要打印的字符:
if (column >= offset && column < width-offset) {
printf("#");
} else {
printf(" ");
}
if(列>=偏移量和列<宽度偏移量){
printf(“#”);
}否则{
printf(“”);
}
或者你可以这样做
for(i=size; i>0; --i)
{
for(j=0; j<(4*size-1 - (4*i-1))/2; ++j)
{
printf(" ");
}
for(j=0; j<4*i-1; ++j)
{
printf("%c", '#');
}
printf("\n");
}
而不是循环来打印空格
%*s
中的*
用于指定要打印的字符串的宽度。预期结果是什么?@KrzysztofSzewczyk是一个倒散列三角形,但每行都有奇数降序值。
printf("%*s", (4*size-1 - (4*i-1))/2, "");