首页教程使用技巧正文

菱形c语言思路,怎么用C语言输出一个菱形

发布时间:2024-04-23 11:44:54 来源:其它 作者:未知

1,*菱形怎样用c语言编程输出?

1,*菱形怎样用c语言编程输出?

voidfour()//菱形

{

intx;

printf(\t\t\t**\t菱形\t**\n);

printf(\t\t\t请您输入需要的尺寸:);

scanf(%d,amp;x);

for(inti1;ilt;x;i++)

{

for(intj1;jlt;x-i;j++)

printf();

for(j1;jlt;2*i-1;j++)

printf(*);

printf(\n);

}

for(i1;ilt;x-1;i++)

{

for(intj1;jlt;i;j++)

printf();

for(j1;jlt;2*x-(2*i+1);j++)

printf(*);

printf(\n);

}

}

菱形可以看成是两个三角形这样就简单多了,其实在输入上都没有难度,主要是在输出上做点手脚呵呵

只能通过手动输出了事先在纸上画出来

然后应用数学上菱形的那些数学特性计算上下线两边的取点位置

最后推倒出通用公式然后使用循环输出

程序大概思想就是这样和输出一个正三角形差不多

计算好字符串,把它分成一行一行的输出,就像织毛衣一样

2,关于用C语言打印菱形图形的算法思路?

2,关于用C语言打印菱形图形的算法思路?

我说一下第二个,其实第一个和第二个思路是一样的

1.外面的for循环,用i控制行数,输入整数为n,则整个图形的行数为2*n-1,列数也是一样的,你可以看看,就是说行数和列数是一样的,所以内层循环和外层循环都是2*n-1,不信的话,你可以查查图形的行列数

2.in是控制下半个部分因为0lt;jlt;2*n-1,就是说j可以大于n-1,也可以小于n-1n-1是真个图形最中间的那一列,整个图形关于这一列对称当in时,道理是一样的,随着i的增大,每一行都会少两个数字,并且少的数字位置关于中间这一列对称所以要abs(n-1-j)lt;2*n-1-i,igt;n时,i每增大1,2*n-1-i都会减少1,abs(n-1-j)都会减少两个列,并且减少的两个列关于中间对称,你可以自己算算是不是这个道理还有没有其他不懂得?

虽然这不是我写的,但我还是能看懂点

你可以自己用算术推导一下每行的空格,*的个数

然后就是朴素的模拟

3,c语言打出菱形

3,c语言打出菱形

在图形中画十字分成4份,以其中的一部分考虑

#includelt;stdio.hgt;

#defineM4/*可以自定义菱形的大小*/

intmain(intargc,char**argv)

{

inti,j,k;

for(i0;ilt;M;i++)/*上半部分的行数*/

{

for(j0;jlt;M-1-i;j++)/*打印空格的个数,我是以0开始的*/

printf();

for(k0;klt;2*i;k++)/*,假如除去空格外都打印*,则以2*i+1打印*个数,这是每一行的特点*/

{

if(k0||k2*i)/*然后只选择你要打印的*位置的个数*/

printf(*);

else

printf();/*之间的全为空格*/

}

printf(\n);

}

for(i0;ilt;(M-1);i++)/*下半部分比上班部分少一行*/

{

for(j0;jlt;i;j++)

printf();

for(k0;klt;2*(M-1)-2*i;k++)/*判断k时没有合并式子,仅供学习探究,这点判断很重要,留作你自己思考了*/

{

if(k0||k2*(M-1)-2*i)/*同上分析*/

printf(*);

else

printf();

}

printf(\n);

}

return0;

}

for(inti-3to3;i++){

for(intj-3to3;j++){

if(abs(i)+abs(j)3){

printf*;

}

}

}

具体语法有可能不对,时间长了记不清了,但意思就是这样的

你可以根据他的ID,也就是他所在的坐标点算,中间是0,0点空着的你可以看做也有东西,比如说是空格,你就可找他们共同的点,如果符合了就打印*不符合不用管,就可以了

文章TAG: 语言 c语言 思路 菱形 输出 菱形c语言思路

还没有评论,快来抢沙发吧!

最新发现

相关资讯

新闻热榜

热门游戏

精彩专题