vb 在picture打印数字三角形,1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
2个回答
展开全部
如果是在特定picture,神马自己的jpg,bmp上作图,那就不要看下去了昌瞎。
假如思路要这样的话:49/2 取整加1(也可以直接数出来25个数字);一般的,我们把三角形正放,可知有以下几点常识:
1,最上一个角必然是一个数字;
2,每行数蔽悔字逐渐增多,最后一行刚好分配完;
3,打印的每一行平行,成三角的话(只有两行不在此列)每行上的数字个数为等差数列,设方差为a,则每行数字的个数如下:
1
1 + a
1 + 2a
......
1 + na
其中总数为25;公式为 n +1+ a*n*(n+1)/2 = 25。
显然如果只有一行是不能称之为三角形的n>1。可得a<7;即a可为1,2,3,4,5,6;逐个试之,仅a为2可得n为整数5。
结果为:
count
1 line1 1
3 5 7 line2 3
9 11 13 15 17 line3 5
19 21 23 25 27 29 31 line4 7
33 35 37 39 41 43 45 47 49 line5 9
sum 25
其中三角行可调整为等腰三角形。
代码如下:
int line = 1;
for( int i = 0; i <25; i++ )
{
fprintf( stdout, 'i*2 + 1 ' );
if( 1+2*(line-1) == (i+1)/2 )
{
fprintf(stdout, '\n');
line++;
}
}
说真的,以题目这么宽松,两行也要算的。
count
1 line1 1个数字
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 line2 24 个数字
如果1下面必须有数字,(打印格式一般是这样的),则凑不成等腰三角形了。
代码如下:
fprintf( stdout, '1\n ' );
for( int i = 0; i <宏迅正25; i++ )
{
fprintf( stdout, 'i*2 + 1 ' );
}
fprintf(stdout, '\n');
假如思路要这样的话:49/2 取整加1(也可以直接数出来25个数字);一般的,我们把三角形正放,可知有以下几点常识:
1,最上一个角必然是一个数字;
2,每行数蔽悔字逐渐增多,最后一行刚好分配完;
3,打印的每一行平行,成三角的话(只有两行不在此列)每行上的数字个数为等差数列,设方差为a,则每行数字的个数如下:
1
1 + a
1 + 2a
......
1 + na
其中总数为25;公式为 n +1+ a*n*(n+1)/2 = 25。
显然如果只有一行是不能称之为三角形的n>1。可得a<7;即a可为1,2,3,4,5,6;逐个试之,仅a为2可得n为整数5。
结果为:
count
1 line1 1
3 5 7 line2 3
9 11 13 15 17 line3 5
19 21 23 25 27 29 31 line4 7
33 35 37 39 41 43 45 47 49 line5 9
sum 25
其中三角行可调整为等腰三角形。
代码如下:
int line = 1;
for( int i = 0; i <25; i++ )
{
fprintf( stdout, 'i*2 + 1 ' );
if( 1+2*(line-1) == (i+1)/2 )
{
fprintf(stdout, '\n');
line++;
}
}
说真的,以题目这么宽松,两行也要算的。
count
1 line1 1个数字
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 line2 24 个数字
如果1下面必须有数字,(打印格式一般是这样的),则凑不成等腰三角形了。
代码如下:
fprintf( stdout, '1\n ' );
for( int i = 0; i <宏迅正25; i++ )
{
fprintf( stdout, 'i*2 + 1 ' );
}
fprintf(stdout, '\n');
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询