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

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;

}

小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaOne 2012:101种改进Java的方法-开发人员参与为何如此重要

Bruno Souza &#xff0c; Martijn Verburg和Heather Vancura在希尔顿酒店的大陆宴会厅4中展示了“ 101种改进Java的方法&#xff1a;开发人员参与为何如此重要”。 他们将其分为自己最熟悉的领域。 SouJava的创始人兼协调员 Souza谈到了通过用户组的更大参与。 Verberg也在伦敦…

Java组合实体模式~

组合实体模式用于EJB持久化机制。 组合实体是表示对象图的EJB实体bean。 当组合实体更新时&#xff0c;内部依赖对象bean将自动更新为由EJB实体bean管理。 以下是组合实体Bean的参与者。 组合实体 - 它是主要的实体bean。 它可以是粗粒度的或可以包含用于持久性目的的粗粒度对象…

python中的一些小知识

在最近学习python中遇到的一些小问题汇总一下&#xff1a; 1.在windows7下安装python3.5版本时提示安装不了&#xff0c;缺少ServicePack1. 解决办法是&#xff0c;打开控制面板\系统和安全\Windows Update&#xff0c;下载和更新计算机安装&#xff0c;然后卸载以前的python版…

在Java中衡量执行时间– Spring StopWatch示例

有两种方法可以通过使用System.currentTimeinMillis&#xff08;&#xff09;或通过使用System.nanoTime&#xff08;&#xff09; 来测量Java中经过的执行时间 。 这两个方法可用于测量 Java中两个方法调用或事件之间的经过时间或执行时间 。 计算经过的时间是Java程序员要做的…

c语言getch在哪个头文件,用getch()需要头文件吗?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include "string.h"#includeusing namespace std;struct student{ int num;char name[10];char banji[10];float score[3];struct student *next;};struct student *creat(){struct student *head,*p…

My solution for Git Client Error: Permission denied (publickey)

在使用Git客户端的过程中遇到的问题以及解决方案分享。 我之前已经安装Git客户端并且使用Git开发过公司项目&#xff0c;也已经正确生成PublicKey并且添加到SSH keys on github of my account&#xff0c;但是当我想从github上克隆另一个客户端push的代码的时候一直报错&#x…

OutOfMemoryError:无法创建新的本机线程–问题神秘化

正如您从我以前的教程和案例研究中可能已经看到的那样&#xff0c;要确定和解决Java Heap Space OutOfMemoryError问题可能很复杂。 我从Java EE生产系统中观察到的常见问题之一是OutOfMemoryError&#xff1a;无法创建新的本机线程&#xff1b; HotSpot JVM无法进一步创建新的…

求10以内平均数的c语言,求助 给小学生出题,自己选加减乘除 做10题 10以内的数 然后统计分...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include void Menu(void){printf("1,加法 2,减法 3,乘法 4,除法 5,退出\n");printf("请选择题目类型:");}int Plus(void){int a, b;a rand() % 10 1;b rand() % 10 1;printf("%-2…

linux常用命令大全(转)好东西要分享

1、ls命令 就是list的缩写&#xff0c;通过ls 命令不仅可以查看linux文件夹包含的文件&#xff0c;而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等 常用参数搭配&#xff1a; ls -a 列出目录所有文件&#xff0c;包含以.开始的隐藏文件 ls -A 列出除.及.…

Cobertura和Maven:集成和单元测试的代码覆盖率

在姜黄项目中&#xff0c;我们每晚维护一个仪表板。 在仪表板上&#xff0c;我们收集有关项目的统计信息&#xff0c;包括代码覆盖率&#xff0c;findbugs分析和其他指标。 我们一直在使用Maven EMMA插件来提供代码覆盖&#xff0c;但是遇到了EMMA问题。 在对类进行检测后&…

二分图之匈牙利算法模版

1 /*2 匈牙利算法模版邻接表版3 最大匹配问题4 时间复杂度&#xff1a;O (nm)5 */6 #include <cstdio>7 #include <vector>8 #include <cstring>9 using namespace std; 10 const int maxn 505; 11 vector<int> v[maxn];//x v[i][j]表示i可以与x匹配…

android 字体描边实现,android文字描边功能的实现

这里也要简单说一下&#xff0c;这些小模块并不是我原创&#xff0c;也是当时查资料找到的&#xff0c;由于时间比较久&#xff0c;原文链接已经忘记了&#xff0c;所以这里就不列出引用链接了。不过这些代码我都修改、完善过&#xff0c;也添加了一些注释&#xff0c;希望对大…

Factorial vs Power

题意 输入a&#xff0c;找到满足n!>a^n 最小的n。 数据 第一行T(1 < T < 1e5)&#xff0c;表示测试样例数.(2 < a < 1e6)。 输入 3 2 3 4 输出 4 7 9 这个东西一看就知道是二分求解的&#xff0c;但是我们还是不知道怎么求的&#xff0c;我们可以吧他们取对数然…

评论:Arun Gupta撰写的“ Java EE 6 Pocket Guide”

这是我很高兴写的评论。 我的朋友阿伦&#xff08;Arun&#xff09;发布了Java EE 6袖珍指南&#xff0c;该指南将在您订购时尽早提供。 我很早就知道这本书&#xff0c;因为我很乐意对其进行回顾&#xff0c;也感谢有机会为本书做出一点贡献&#xff01; Kindle版本已经可用&a…

双android手机同步工具,手机同步软件Android Manager使用图文教程

类型&#xff1a;手机工具大小&#xff1a;23.6M语言&#xff1a;繁体 评分&#xff1a;6.6标签&#xff1a;立即下载Android Manager 可透过五个简单的步骤设定&#xff1a;步骤一. 在计算机上安装 Android Manager请点选以下之下载按钮或直接于计算机上输入下载网址&#xff…

Camel:构建基于消息的应用程序

这是一篇长文章&#xff0c;包含三个单独的主题&#xff1a; Java的Apache Camel入门 使用CamelRunner改善路线的启动 使用Camel构建基于消息的应用程序 但是&#xff0c;由于我准备了包含所有这些材料的camel-demo-1.0.0-SNAPSHOT-project.zip &#xff0c;因此我认为将它们…

android 网易item广告,Android仿网易严选商品详情页

仿照网易严选商品详情页面&#xff0c;整个页面分为两个部分&#xff0c;上面一部分是Native的ScrollView&#xff0c;下面一部分则是WebView&#xff0c;其目的是为了可以进行分步加载。滑动到ScrollView底部时&#xff0c;继续向上拖动&#xff0c;可以加载下面的WebView部分…

freemarker,数字,日期,布尔值常用的函数

${3.4?floor} ${3.4?ceiling} ${3.45?round} ${3.45?rtf} ${3.458?string("0.##")} ${3.42?string.percent} ${3.42?string.currency} ${date?string("yyyy-MM-dd")} ${date?date} ${date?time} ${date?datetime}${true?c} ${true?string} ${…

mysql联合索引与Where子句优化浅析

问题描述&#xff1a;把排序、条件等一个一个去除来做测试&#xff0c;结果发现问题就出在排序部分&#xff0c;去除排序时&#xff0c;执行时间由原来的48秒变成0.3x秒。于是&#xff0c;把涉及排序的字段组成一个联合索引alter table xx add index indexname(x1,x2,x3)&#…

有效使用Eclipse的热门提示

以下是一些技巧&#xff0c;可以帮助您避免潜在的问题并在使用Eclipse时提高工作效率。 避免安装问题 切勿在旧版本之上安装新版本的Eclipse。 首先重命名旧版本&#xff0c;将其移开&#xff0c;然后将新版本解压缩到干净的目录中。 恢复混乱的工作空间 对于许多开发人员来…