取两个基本长度输入并连续绘制两个三角形,其余三角形连续绘制两个三角形基本长度的输入。但是我的代码只适用于一个三角形(为了清楚起见,空格用.
填充。)
#include <stdio.h>
int main()
{
int x,sum=1,i,a,b,z;
scanf("%d", &x);
z=x;
for(i=0;i<x;i++)
{if (sum>x)
break;
for (b=1;b<z;b++)
printf(" ");
z=z-1;
for (a=1;a<=sum;a++)
printf("*");
printf("\n");
sum=sum+2;
}
return 0;
}
此输出
....................*
...................***
..................*****
.................*******
................*********
...............***********
..............*************
.............***************
............*****************
...........*******************
..........*********************
,输入为7和21的预期输出为:
.................*..........
................***.........
...............*****........
..............*******.......
.............*********......
............***********.....
...........*************....
...*......***************...
..***....*****************..
.*****..*******************.
****************************
答案 0 :(得分:0)
这是一个非常困难的任务,特别是对于开端人员(像我:))。
如果我理解正确,那么您需要以下内容。考虑到我使用的是支持C99的编译器。
#include <stdio.h>
#include <string.h>
int main(void)
{
while ( 1 )
{
size_t n = 0;
size_t m = 0;
printf( "Enter the base length of the first triangle: " );
scanf( "%zu", &n );
if ( n == 0 ) break;
printf( "Enter the base length of the second triangle: " );
scanf( "%zu", &m );
if ( m == 0 ) break;
puts( "" );
char left[n + 1];
char right[m + 1];
memset( left, '*', n );
memset( right, '*', m );
left[n] = '\0';
right[m] = '\0';
size_t max = n < m ? m : n;
for ( size_t i = 0; i < max; i++ )
{
printf( "%-*s %*s\n", n, left, m, right );
if ( i < n ) left[n - i - 1] = '\0';
if ( i < m ) right[m - i - 1] = '\0';
}
}
return 0;
}
如果您在帖子的评论中指出输入7和21,那么输出将显示为
******* *********************
****** ********************
***** *******************
**** ******************
*** *****************
** ****************
* ***************
**************
*************
************
***********
**********
*********
********
*******
******
*****
****
***
**
*
修改:您应该最初正确地表达您的问题。在点击你的帖子之后,我发现它已基本改变了。
答案 1 :(得分:0)
#include <stdio.h>
#include <string.h>
int main(void){
int n;
int small, big;
printf("Input length of total: ");
scanf("%d", &n);//check omit, two input ? your's one.
small = n / 4;
big = small * 3;
int total = small + big;
int height = (big - 1) / 2 + 1;
char canvas[height][total];
memset(canvas, '0', sizeof(canvas));
int i, v, h;
for(i=0, v = height; i<height; ++i){
int len;
--v;
len = small - i * 2;
if(len > 0)
memset(&canvas[v][i], '*', len);
len = big - i * 2;
if(len > 0)
memset(&canvas[v][small + i], '*', len);
}
putchar('\n');
for(v = 0; v < height; ++v){
for(h = 0; h < total; ++h)
putchar(canvas[v][h]);
putchar('\n');
}
return 0;
}