我如何使 char # repeat 使其在 c 中显示给定的数字?
How would I make the char # repeat such that it will show the given figure in c?
我想为CS50课程中的一个练习制作一个程序,要求用户输入图形的高度,然后制作一个图形,类似于:
#
##
###
####
#####
######
#######
########
考虑到用户输入高度 8。
我有代码:
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int height;
do
{
height = get_int("Enter The Height: ");
}
while (!(2 <= height && height<=8));
for (int row = 1; row <= height; row++)
{
for (int column = 1; column <= height; column++)
{
printf("#");
}
printf("\n");
}
}
但它打印了这个:
###
###
###
当我给身高3时
我是C语言的初学者,不会理解高级概念,所以我请求一个简单的解释。
给你。
#include <stdio.h>
int main(void)
{
const char c = '#';
while ( 1 )
{
printf( "Enter The Height (0 - exit): " );
int n;
if ( scanf( "%d", &n ) != 1 || n <= 0 ) break;
putchar( '\n' );
for ( int i = 0; i < n; i++ )
{
printf( "%*c", n - i, c );
for ( int j = 0; j < i; j++ ) putchar( c );
putchar( '\n' );
}
putchar( '\n' );
}
return 0;
}
程序输出可能看起来像
Enter The Height (0 - exit): 10
#
##
###
####
#####
######
#######
########
#########
##########
Enter The Height (0 - exit): 9
#
##
###
####
#####
######
#######
########
#########
Enter The Height (0 - exit): 8
#
##
###
####
#####
######
#######
########
Enter The Height (0 - exit): 7
#
##
###
####
#####
######
#######
Enter The Height (0 - exit): 6
#
##
###
####
#####
######
Enter The Height (0 - exit): 5
#
##
###
####
#####
Enter The Height (0 - exit): 4
#
##
###
####
Enter The Height (0 - exit): 3
#
##
###
Enter The Height (0 - exit): 2
#
##
Enter The Height (0 - exit): 1
#
Enter The Height (0 - exit): 0
至于你的代码,那么你总是输出相同数量的符号 '#'
,没有缩进。
for (int column = 1; column <= height; column++)
{
printf("#");
}
您可以按以下方式更改循环
for (int row = 1; row <= height; row++)
{
for (int column = 1; column <= height; column++)
{
putchar( column < height - row + 1 ? c2 : c1 );
}
printf("\n");
}
其中 c1
等于 '#'
,c2
等于 ' '
。
这是另一个演示程序
#include <stdio.h>
int main(void)
{
const char c1 = '#', c2 = ' ';
while ( 1 )
{
printf( "Enter The Height (0 - exit): " );
int height;
if ( scanf( "%d", &height ) != 1 || height <= 0 ) break;
putchar( '\n' );
for (int row = 1; row <= height; row++)
{
for (int column = 1; column <= height; column++)
{
putchar( column < height - row + 1 ? c2 : c1 );
}
printf("\n");
}
putchar( '\n' );
}
return 0;
}
它的输出可能看起来像
Enter The Height (0 - exit): 9
#
##
###
####
#####
######
#######
########
Enter The Height (0 - exit): 0
越短越好。
#include <stdio.h>
int main(void) {
int height = 5;
char blocks[height];
memset(blocks, '#', height);
for(int i=0; i<height; ++i)
{
printf("%*.*s\n", height, i+1, blocks);
}
return 0;
}
我想为CS50课程中的一个练习制作一个程序,要求用户输入图形的高度,然后制作一个图形,类似于:
#
##
###
####
#####
######
#######
########
考虑到用户输入高度 8。
我有代码:
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int height;
do
{
height = get_int("Enter The Height: ");
}
while (!(2 <= height && height<=8));
for (int row = 1; row <= height; row++)
{
for (int column = 1; column <= height; column++)
{
printf("#");
}
printf("\n");
}
}
但它打印了这个:
###
###
###
当我给身高3时
我是C语言的初学者,不会理解高级概念,所以我请求一个简单的解释。
给你。
#include <stdio.h>
int main(void)
{
const char c = '#';
while ( 1 )
{
printf( "Enter The Height (0 - exit): " );
int n;
if ( scanf( "%d", &n ) != 1 || n <= 0 ) break;
putchar( '\n' );
for ( int i = 0; i < n; i++ )
{
printf( "%*c", n - i, c );
for ( int j = 0; j < i; j++ ) putchar( c );
putchar( '\n' );
}
putchar( '\n' );
}
return 0;
}
程序输出可能看起来像
Enter The Height (0 - exit): 10
#
##
###
####
#####
######
#######
########
#########
##########
Enter The Height (0 - exit): 9
#
##
###
####
#####
######
#######
########
#########
Enter The Height (0 - exit): 8
#
##
###
####
#####
######
#######
########
Enter The Height (0 - exit): 7
#
##
###
####
#####
######
#######
Enter The Height (0 - exit): 6
#
##
###
####
#####
######
Enter The Height (0 - exit): 5
#
##
###
####
#####
Enter The Height (0 - exit): 4
#
##
###
####
Enter The Height (0 - exit): 3
#
##
###
Enter The Height (0 - exit): 2
#
##
Enter The Height (0 - exit): 1
#
Enter The Height (0 - exit): 0
至于你的代码,那么你总是输出相同数量的符号 '#'
,没有缩进。
for (int column = 1; column <= height; column++)
{
printf("#");
}
您可以按以下方式更改循环
for (int row = 1; row <= height; row++)
{
for (int column = 1; column <= height; column++)
{
putchar( column < height - row + 1 ? c2 : c1 );
}
printf("\n");
}
其中 c1
等于 '#'
,c2
等于 ' '
。
这是另一个演示程序
#include <stdio.h>
int main(void)
{
const char c1 = '#', c2 = ' ';
while ( 1 )
{
printf( "Enter The Height (0 - exit): " );
int height;
if ( scanf( "%d", &height ) != 1 || height <= 0 ) break;
putchar( '\n' );
for (int row = 1; row <= height; row++)
{
for (int column = 1; column <= height; column++)
{
putchar( column < height - row + 1 ? c2 : c1 );
}
printf("\n");
}
putchar( '\n' );
}
return 0;
}
它的输出可能看起来像
Enter The Height (0 - exit): 9
#
##
###
####
#####
######
#######
########
Enter The Height (0 - exit): 0
越短越好。
#include <stdio.h>
int main(void) {
int height = 5;
char blocks[height];
memset(blocks, '#', height);
for(int i=0; i<height; ++i)
{
printf("%*.*s\n", height, i+1, blocks);
}
return 0;
}