http://www.cnblogs.com/liutogo/archive/2013/05/31/3110394.html

输出空心菱形是c语言初学者经常遇到的问题,由于涉及c语言的基础知识较多,也是经常在考试中出现的题型。

第一个程序是我自己想的,要是要找方便记忆的简便方法,请直接跳过前半部分,看后半部分的其他代码,我觉得这些代码的思想很好

在写程序之前要仔细观察空心菱形的规律。先分析,不要急于写程序。

将问题化整为零:

1、输入行数

printf("please input n:");

scanf("%d",&n);

3、在输出n行的空心菱形时,发现第一行和最后一行与其他行有些区别,可以使用单独的语句将此两行输出,为了使代码整洁,使用子函数完成。

void star_end(int n)

{

int i;

for(i=1;i<=(n-1)/2;i++)

printf(" ");

printf("*");

printf("\n");

}

传递参数:要完成的菱形行数n

使用循环输出空格数:(n-1)/2

2、以9行的空心菱形为例,讨论中间部分的情况:

上图中部黑色数列为中间每行的空格数,用右侧红色数列为表示黑色数列(见箭头)。

使用一数列a,将a初始化,使a为上图右侧的的红色数列形式。

int a[20];

for(i=1;i<=(m+1)/2;i++)

a[m-i+1]=a[i]=i;

例如:n=7时 a[1]-a[7]为 1 2 3 4 3 2 1

此时左侧的红色数列可表示为 (m+1)/2-a[i]

3、使用循环输出每行的” ”与”*”

for(i=1;i<=m;i++)

{

for(j=1;j<=(m+1)/2-a[i];j++)

printf(" ");

printf("*");

for(j=1;j<=2*a[i]-1;j++)

printf(" ");

printf("*");

printf("\n");

}

对于每行,

先输出(m+1)/2-a[i]个” ”,

再输出一个”*”,

再输出2*a[i]-1个” ”,

再输出一个”*”

完整程序:

#include

void star_end(int n);

main()

{

int n,m,i,j,a[20];

printf("please input n:");

scanf("%d",&n);

m=n-2;

for(i=1;i<=(m+1)/2;i++)

a[m-i+1]=a[i]=i;

star_end(n);

for(i=1;i<=m;i++)

{

for(j=1;j<=(m+1)/2-a[i];j++)

printf(" ");

printf("*");

for(j=1;j<=2*a[i]-1;j++)

printf(" ");

printf("*");

printf("\n");

}

star_end(n);

}

void star_end(int n)

{

int i;

for(i=1;i<=(n-1)/2;i++)

printf(" ");

printf("*");

printf("\n");

}

其他算法:(这些思想很好)

一、//空心菱形图,原理是建立坐标系,原点为菱形中心

#include

void main()

{

int y,x,n,k;

printf("please input number of rows:");

scanf("%d",&n);

k=n/2;

for(y=-k;y<=k;y++)

{

for(x=-k;x<=k;x++)

{

if((x==y+k)||(x==y-k)||(x==k-y)||(x==-k-y))

printf("%c",'*');

else

printf(" ");

}

printf("\n");

}

}

二、以上程序可使用math.h中的abs()函数,用于求绝对值。

Abs函数  描述  返回数字的绝对值。  语法  Abs(number)

代码简化为

#include

#include

main()

{

int i,j,n,k;

printf("Please input the number of rows:");

scanf("%d",&n);

k=n/2;

for(i=-k;i<=k;i++)

{

for(j=-k;j<=k;j++)

{

if(abs(i)+abs(j)==k)

printf("*");

else

printf(" ");

}

printf("\n");

}

}

/************水平有限,仅供参考,欢迎批评指正****************/

转载于:https://www.cnblogs.com/liutogo/archive/2013/05/31/3110394.html

标签:输出,int,空心,菱形,printf,input,C语言

来源: https://blog.csdn.net/weixin_30455365/article/details/96695127

输出每行坐标的的c语言算法,C语言输出空心菱形的实现相关推荐

  1. c语言打印空心数字图形,(完整word版)C语言编写打印实心和空心菱形【源码】

    <(完整word版)C语言编写打印实心和空心菱形[源码]>由会员分享,可在线阅读,更多相关<(完整word版)C语言编写打印实心和空心菱形[源码](13页珍藏版)>请在人人文库 ...

  2. 加法接力赛C语言算法,C语言循环结构

    <C语言循环结构>由会员分享,可在线阅读,更多相关<C语言循环结构(47页珍藏版)>请在人人文库网上搜索. 1.UML和需求建模,第六章,循环控制,UML和需求建模,主要内容, ...

  3. 田忌赛马c语言算法,C语言里关于田忌赛马的问题

    C语言里关于田忌赛马的问题0 limmettle2014.10.24浏览83次分享举报 这是题目 题目描述 赛马是一古老的游戏,早在公元前四世纪的中国,处在诸侯割据的状态,历史上称为"战国时 ...

  4. 学校门口的树C语言算法,C语言校园导游程序设计汇报.doc

    C语言校园导游程序设计汇报 <应用程序设计 课程设计>报告 班级: 学号: 姓名: 指导教师: 成绩评定: 目录 题目: 设计一个校园导游程序,为来访的客人提供各种信息查询服务 一.需求分 ...

  5. 必背C语言算法 C语言小写转大写

    算法思想 在计算机中,大小写字母的ASCII值差32,字符a的ASCII值为97,字符A的ASCII值为65. 程序代码 #include <stdio.h> int main() {ch ...

  6. mm1模型的c语言算法,C语言动画程序源码(1).pdf

    C 语言动画程序 #include #include #include #include #define pi 3.1415926535 double ca3mm1(double m1,double ...

  7. 必背C语言算法 C语言求自然底数e

    自然底数 e=2.718281828-,e 的计算公式如下: e=1+1/1!+1/2!+1/3!+- 要求当最后一项的值小于 10-10 时结束. 算法思想 使用循环实现累加求和,并在求和后计算下一 ...

  8. 残缺棋盘问题c语言算法,c语言算法--分而治之算法---残缺棋盘

    残缺棋盘(defective chessboard)是一个有2k×2k 个方格的棋盘,其中恰有一个方格残缺.图2 - 3给出k≤2时各种可能的残缺棋盘,其中残缺的方格用阴影表示.注意当k= 0时,仅存 ...

  9. 三个月可以入门c语言吗,c语言输出2015年日历,要求三个月在一行上(就是按照季度输出)...

    满意答案 h0p2znym 推荐于 2017.09.26 采纳率:56%    等级:9 已帮助:513人 根据闰年定义,能被400整除的年,或者能被4整除且不是100的倍数的,是闰年.于是C中判断y ...

最新文章

  1. Java多线程干货系列—(一)Java多线程基础
  2. php var_dump()函数的详解
  3. DCMTK:测试CT Table Dynamics FG类
  4. 建模实训报告总结_数学建模实训报告
  5. lamba统计最大值,最小值,平均值,总和,个数
  6. 原始socket例子
  7. 使用 position: sticky 达到粘性元素区域悬浮效果
  8. 大数据workshop:《在线用户行为分析:基于流式计算的数据处理及应用》之《实时数据分析:海量日志数据多维透视》篇...
  9. 天天酷跑php源码_使用Java实现天天酷跑(附源码)
  10. jsp taglib指令_JSP指令–页面,包含和taglib示例
  11. AI人机对战五子棋游戏【Python(pygame)+AI】并实现软件输出
  12. python爬虫使用seleium+超级鹰+Image模块自动登录12306(附源码和登录视频)
  13. Unity游戏开发背景知识
  14. 单片机三角波c语言程序,基于51单片机的三角波发生器
  15. 使用Python获取股票的基金持仓数据
  16. 王者战力查询接口(免费)
  17. navicat 优化mysql_navicat怎么实现查询优化
  18. 华为大数据云管理平台实测
  19. [计算机网络] 实验 5 电子邮件
  20. 技术解析:一文看懂 Anolis OS 国密生态

热门文章

  1. VLAN作用以及特点
  2. 明德扬网络班培训体会
  3. CLIPDraw:基于CLIP的text-to-vector生成器
  4. kungfu panda
  5. Java使用GeoTools读取shapefile文件
  6. 代码格式调整 Astyle 基本使用
  7. pyqt qtabwidget关闭_QTabwidget新手求教
  8. python +selenium 爬取淘宝网商品信息
  9. 明争暗斗,淘菜菜硬刚美团、拼多多?
  10. 1205: 求一元二次方程的实数根(C)