3.3 图形输出

问题 A: 输出梯形

题目描述

输入一个高度h,输出一个高为h,上底边为h的梯形。

输入

一个整数h(1<=h<=1000)。

输出

h所对应的梯形。

样例输入web

5

样例输出数组

*****

*******

*********

***********

*************

思路

这一类的题目都比较简单,只要按照题目要求来作就行了。这题的话就用一个for循环控制输入的行数,而后每行再分别用两个for循环打印空格和星号,打印完毕以后星号+2,空格-2便可。

代码less

#include

#include

int main(){

int h;

char a = '*';

while(scanf("%d", &h) != EOF){

int space, star;

star = h;

space = 2*h-2;

for(int i=1;i<=h;i++){

for(int k=1;k<=space;k++) printf(" ");

for(int m=1;m<=star;m++){

if(m==star) printf("%c\n", a);

else printf("%c", a);

}

star += 2;

space -= 2;

}

}

return 0;

}

问题 B: Hello World for U

题目描述

Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, “helloworld” can be printed as:

h    d

e    l

l     r

lowo

That is, the characters must be printed in the original order, starting top-down from the left vertical line with n1 characters, then left to right along the bottom line with n2 characters, and finally bottom-up along the vertical line with n3 characters. And more, we would like U to be as squared as possible – that is, it must be satisfied that n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 - 2 = N.

输入

Each input file contains one test case. Each case contains one string with no less than 5 and no more than 80 characters in a line. The string contains no white space.

输出

For each test case, print the input string in the shape of U as specified in the description.

样例输入ide

helloworld!

样例输出svg

h !

e d

l l

lowor

提示

这一题须要解决的问题是将一个字符串写成U字形。拿到这一题的第一映像是U字的写法(可没有茴香豆的“茴”写法多),先是写第一排第一个字符,而后写第二排第一个字符……而后是最后一排,而后是倒数第二排……但在C语言中若是咱们要这样写U字形的字符串就须要在数组中操做了。若是是直接输出的话,那只能自上至下一行一行输出。首先是第一行,写出第一个字符和最后一个字符,第二行写出第二个字符和倒数第二个字符……最后是最后一行。须要注意的是除了最后一行输出全部字符,前面每一行只输出两个字符。中间还有空格来隔开每行的两个字符(具体有多少空格,待会计算)。

思路有了,看看具体的要求。字符串的长度是N,n1,n3表明两边每列字符的数目。n2表明最后一行的字符数。题目中给了一个算式:

n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 - 2 = N.

仔细研究这个算式,这里的k是不大于n2的,也就是说n1和n3是不大于n2且知足n1+n2+n3=N+2的最大值。那么天然有n1=n3=(N+2)/3,n2=N+2-(n1+n3)。也就是说设side为两边的字符数(包括最后一行的两端),则side=n1=n3=(N+2)/3。设mid为最后一行除去两端的两个字符后剩下的字符数,mid=N-side*2(总长度减去两边的字符数)。同时mid也是咱们输出除最后一行外前面全部行须要空出的空格数。

最后如何在第一行输出第一个字符和最后一个字符呢?那天然是str[0]和str[len-1-i](len为字符串的长度,也就是N)。

因而问题完美解决,步骤以下:

1)计算字符串长度len;

2)计算两边的字符数side=(len+2)/3;

3)计算最后一行中间的字符数(前面每行中间的空格数);

4)输出每行相应的字符。

因为该题目不难,也没有什么须要特别注意的,我也就不写注意点了。具体细节详见参考代码。

思路

本题自带提示,并且写得很是详细,看上面的提示吧,基本上把代码都说出来了。最后,用printf输出的记得要用%c,我用了%s半天找不到错在哪……

代码spa

#include

#include

int main(){

char str[1000];

while(scanf("%s", str) != EOF){

int side, mid, len;

len = strlen(str);

side = (len+2)/3;

mid = len-side*2;

for(int i=0;i

if(i==side-1){

for(int m=i;m

printf("\n");

}

else{

printf("%c", str[i]);

for(int j=1;j<=mid;j++) printf(" ");

printf("%c\n", str[len-1-i]);

}

}

}

return 0;

}

问题 C: 等腰梯形

题目描述

请输入高度h,输入一个高为h,上底边长为h 的等腰梯形(例如h=4,图形以下)。

****

******

********

**********

输入

输入第一行表示样例数m,接下来m行每行一个整数h,h不超过10。

输出

对应于m个case输出要求的等腰梯形。

样例输入code

1

4

样例输出orm

****

******

********

**********

思路

这题和问题A是同样的,用space记录空格数(只要记录一侧的就行了,由于是对称的),用star记录输出的星号数。

代码xml

#include

#include

int main(){

char a = '*';

int m;

scanf("%d", &m);

while(m--){

int h;

scanf("%d", &h);

int star, space;

star = h;

space = h-1;

for(int i=1;i<=h;i++){

if(i==h){

for(int j=1;j<=3*h-2;j++) printf("%c", a);

printf("\n");

}

else{

for(int x=1;x<=space;x++) printf(" ");

for(int y=1;y<=star;y++) printf("%c", a);

for(int z=1;z<=space;z++) printf(" ");

printf("\n");

}

star += 2;

space -= 1;

}

}

return 0;

}

问题 D: 沙漏图形 tri2str [1*+]

题目描述

问题:输入n,输出正倒n层星号三角形。首行顶格,星号间有一空格,效果见样例

样例输入

3

样例输出

* * *

* *

*

* *

* * *

思路

这一类图形输出的问题其实都很简单,只要按照题目要求来输出便可。这题的处理方法和上题相似,用for循环控制星号和空格的输出。这题建议把上部分和下部分分开来用for循环输出,不然太乱了,容易出错。

代码

#include

#include

int main(){

int n;

while(scanf("%d", &n) != EOF){

for(int i=0;i

for(int x=1;x<=i;x++) printf(" ");

for(int j=1;j<=n-i;j++){

if(j==1) printf("*");

else printf(" *");

}

printf("\n");

}

for(int i=2;i<=n;i++){

for(int x=n-i;x>=1;x--) printf(" ");

for(int j=1;j<=i;j++){

if(j==1) printf("*");

else printf(" *");

}

printf("\n");

}

}

return 0;

}

小结

图形输出这一类的问题仍是比较简单的,主要是经过题目寻找规律(通常都蕴含着数学规律),而后再按照要求进行编写便可,要注意的是编写的时候思绪要清楚,好比上面的最后一题,写着写着思绪容易紊乱,若是思路清晰的话仍是没什么难度的。

c语言用星号输出沙漏,《算法笔记》学习日记——3.3 图形输出相关推荐

  1. 算法笔记学习PAT甲级解题记录

    算法笔记学习记录 2019.06.26 float&&double 推荐全部使用double,注意区分scanf("%lf",&double1);与prin ...

  2. 【QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)】

    [QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)] 1.说明 2.实验环境 3.参照连接 4.自己的学习与理解 5.学习与实践代码 (1)移动图片测试实验 (1)继续之前的工 ...

  3. 维吉尼亚加密算法 (C语言实现简单的加密算法) ------- 算法笔记007

    概念理解 什么是维吉尼亚加密算法 加密步骤:1.创建一个匹配循环链表:2.接受需要加密的明文:3.根据随机生成的密钥配合链表进行移位:4.输出/保存对应的密文 解密步骤: 1.接受加密后的密钥:2.根 ...

  4. 算法笔记学习(3)---深度优先搜索(DFS)

    深度优先搜索(DFS) 设想我们现在身处一个巨大的迷宫之中,以当前所在位置为起点,沿着一条路向前走,当碰到岔路口的时候,就选择其中一个岔道口前进.如果选择的这个岔路前方是一条死路,就退回到这个岔道口, ...

  5. python输入abcd输出对应的1234_python学习日记——练习题整理及解答

    1.执行python脚本的两种方式 2.简述位.字节的关系(1字节=8位) 3.简述ASCII.Unicode.utf-8.gbk的关系 4.写出"李杰"分别用utf-8和gbk编 ...

  6. 算法笔记(持续更新)

    目录 一.数据结构概念 二.算法概念 三.线性表 一.数据结构概念 逻辑结构 集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系 线性结构:线性结构中的数据元素之间是一对一的关系 ...

  7. php打印n乘n沙漏形状图形,《算法笔记》3.3小节——入门模拟-图形输出

    @[TOC] Contest100000577 - <算法笔记>3.3小节--入门模拟->图形输出 1933 Problem A 输出梯形 #include #include #in ...

  8. 算法笔记(重要知识点梳理)一:C语言

    这篇文章是本科时期准备夏令营的复习笔记,纯手工整理,整理的笔记比较浅显,供个人记录. 另外这个专栏也适合本科生入门学习. 因为当初编辑是在Typora编辑的,markdown有些格式不互通,格式有点乱 ...

  9. 数据结构源码笔记(C语言):置换-选择算法

    //实现置换-选择算法#include<stdio.h> #include<malloc.h> #include<string.h> #include<std ...

最新文章

  1. 把成员函数转换为函数的代码。
  2. php处理文档流,html的文档流是什么?html文档流简介
  3. 我,23 岁 深漂女 Python自动化测试的心路历程|2021 总结
  4. HandlerMethodArgumentResolver 参数解析器
  5. Office 如何打印A4不干胶标签纸
  6. PS全套抠图技法教程,快速抠头发/抠婚纱,带配套素材
  7. TD幅度预测、幅度膨胀突破、TD通道
  8. 吉他指弹特殊调弦的方法及基础音阶知识
  9. Android储存 文件储存
  10. ps界面为啥突然变大了_对新手非常友好的5个PS小技巧
  11. JAVA毕设项目公立医院绩效考核系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  12. OpenCV-Python身份证信息识别
  13. Ecotourism--生态旅游
  14. 魔兽世界怀旧服服务器显示离线上不去,魔兽世界怀旧服服务器断开连接怎么办-魔兽世界怀旧服怎么进不去_6137游戏网...
  15. [LeetCode] 两数之和
  16. python校验两个json体
  17. 最新温柔发卡程序源码10套显示模板 附带视频教程
  18. 电子学会青少年编程等级考试Python二级题目解析01
  19. windows上使用vs2019和msys64编译 ffmpeg 4.3
  20. 通过css控制HTML文本框中的文字垂直居中

热门文章

  1. java虚拟_Java虚拟机(JVM)工作原理
  2. VUE使用vue-seamless-scroll自动滚动表格数据,对表格数据排序无效的解决办法
  3. Java实现qq截图工具
  4. 前端面试题之http/HTML/浏览器(一)
  5. 教你读懂Ajax的工作原理
  6. centos7创建asm磁盘_ASM环境下防止误将数据文件扩容到本地文件系统的方法
  7. 怎样呵护友谊_【家校联动共同呵护孩子健康成长科普课堂】关爱学生心理健康,守护学生健康成长...
  8. Java面试题2019简书_2019最新Spring面试题大全含答案之Spring Beans(2019最全Spring超级葵花宝典)...
  9. 中后端管理系统前后分离、前端框架的实现拙见
  10. Vuex的第一次接触