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);
}
}
菱形可以看成是两个三角形这样就简单多了,其实在输入上都没有难度,主要是在输出上做点手脚呵呵
只能通过手动输出了事先在纸上画出来
然后应用数学上菱形的那些数学特性计算上下线两边的取点位置
最后推倒出通用公式然后使用循环输出
程序大概思想就是这样和输出一个正三角形差不多
计算好字符串,把它分成一行一行的输出,就像织毛衣一样
我说一下第二个,其实第一个和第二个思路是一样的
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)都会减少两个列,并且减少的两个列关于中间对称,你可以自己算算是不是这个道理还有没有其他不懂得?
虽然这不是我写的,但我还是能看懂点
你可以自己用算术推导一下每行的空格,*的个数
然后就是朴素的模拟
在图形中画十字分成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点空着的你可以看做也有东西,比如说是空格,你就可找他们共同的点,如果符合了就打印*不符合不用管,就可以了
下一篇 > :相机扫描手机屏幕怎么设置,miui相机扫一扫在哪里
还没有评论,快来抢沙发吧!
最新发现
相关资讯
相机扫描手机屏幕怎么设置,miui相机扫一扫在哪里
当初就是冲这个目的戳的扫描全能王打开应用,选择相机图标旁边的图片按钮,选择本地或照片流里的,选择具体的照片,点击右上方的完成,生成新文档
2024-04-26 20:03:51
导航时黑屏导航,汽车导航黑屏.怎么整.
如果长按开机键〉5秒钟,但屏幕不亮且电源指示灯(绿灯)未亮或亮一下马上熄灭,说明产品电池没电请使用标配适配器充电后使用上面的方法还是不行的话,建议送修,一般是装地图时出现问题,也不排除电池故障典型的导
2024-04-26 20:01:57
换固态硬盘装win7系统教程,固态硬盘怎么装win7
第1次用固态硬盘容易出错,它和机械硬盘还是有点不同(我的第1块SSD被我当普通硬盘用,速度没提升多少,还常常死机,最惨的是,只用了1年就嗝屁了)SSD功耗小,噪声小,读写快,这是它的优点,缺点是要驱动和优化,使用
2024-04-26 20:01:02
谱线分析算法,怎么计算谱线的peak
当上述两种方法均无法确定未知试样中某些谱线属于何种元素时,可以采用波长比较法即准确测出该谱线的波长,然后从元素的波长表中查出未知谱线相对应的元素进行定性
2024-04-26 19:56:55
手机主板上的锡,手机维修,为什么要植锡,植锡有什么用
5,多股铜线吸锡拆卸法:就是利用多股铜芯塑胶线,去除塑胶外皮,使用多股铜芯丝(可利用短线头)使用前先将多股铜芯丝上松香酒精溶液,待电烙铁烧热后将多股铜芯丝放到集成块引脚上加热,这样引脚上的锡焊就会被铜丝
2024-04-26 19:54:26
新闻热榜
热门游戏
精彩专题