第一周刷题总结
2015-07-18 20:34
267 查看
D - 空心三角形
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice HDU
2091
Description
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
Input
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
Output
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。
Sample Input
Sample Output
#include <stdio.h>
#include <string.h>
int main()
{
char c;
int n;
int t=0;
while(scanf("%c",&c)&&c!='@')
{
t++;
scanf("%d",&n);
getchar(); //接收n
if(t!=1)
printf("\n");
if(n==1)
{
printf("%c\n",c);//若输出为一个字符则为单独输出。
continue;
}
int i,j;
int s=0;
for(i=1; i<n; i++) //N-1行,最后一行单独拉出。
{
s++;
for(j=i; j<n; j++)
printf(" "); //分为左右两个部分来输入,左的空格的控制。
printf("%c",c);
for(j=1; j<2*(i-1); j++)
printf(" ");
if(s!=1) //从第二行开始输。
printf("%c",c);
printf("\n");
}
for(i=1; i<=2*n-1; i++) //将最后一行2*n-1输出。
printf("%c",c);
printf("\n");
}
return 0;
代码输入:
#include <stdio.h>
#include <string.h>
int main()
{
char c;
int n;
int t=0;
while(scanf("%c",&c)&&c!='@')
{
t++;
scanf("%d",&n);
getchar(); //接收n
if(t!=1)
printf("\n");
if(n==1)
{
printf("%c\n",c);//若输出为一个字符则为单独输出。
continue;
}
int i,j;
int s=0;
for(i=1; i<n; i++) //N-1行,最后一行单独拉出。
{
s++;
for(j=i; j<n; j++)
printf(" "); //分为左右两个部分来输入,左的空格的控制。
printf("%c",c);
for(j=1; j<2*(i-1); j++)
printf(" ");
if(s!=1) //从第二行开始输。
printf("%c",c);
printf("\n");
}
for(i=1; i<=2*n-1; i++) //将最后一行2*n-1输出。
printf("%c",c);
printf("\n");
}
return 0;
这一题主要是 if(t!=1)
printf("\n");的换行的控制,两个答案间有一个空行,然后根据空格来进行控制输出即可。
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice HDU
2091
Description
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
Input
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
Output
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。
Sample Input
X 2 A 7 @
Sample Output
X XXX A A A A A A A A A A A AAAAAAAAAAAAA
#include <stdio.h>
#include <string.h>
int main()
{
char c;
int n;
int t=0;
while(scanf("%c",&c)&&c!='@')
{
t++;
scanf("%d",&n);
getchar(); //接收n
if(t!=1)
printf("\n");
if(n==1)
{
printf("%c\n",c);//若输出为一个字符则为单独输出。
continue;
}
int i,j;
int s=0;
for(i=1; i<n; i++) //N-1行,最后一行单独拉出。
{
s++;
for(j=i; j<n; j++)
printf(" "); //分为左右两个部分来输入,左的空格的控制。
printf("%c",c);
for(j=1; j<2*(i-1); j++)
printf(" ");
if(s!=1) //从第二行开始输。
printf("%c",c);
printf("\n");
}
for(i=1; i<=2*n-1; i++) //将最后一行2*n-1输出。
printf("%c",c);
printf("\n");
}
return 0;
代码输入:
#include <stdio.h>
#include <string.h>
int main()
{
char c;
int n;
int t=0;
while(scanf("%c",&c)&&c!='@')
{
t++;
scanf("%d",&n);
getchar(); //接收n
if(t!=1)
printf("\n");
if(n==1)
{
printf("%c\n",c);//若输出为一个字符则为单独输出。
continue;
}
int i,j;
int s=0;
for(i=1; i<n; i++) //N-1行,最后一行单独拉出。
{
s++;
for(j=i; j<n; j++)
printf(" "); //分为左右两个部分来输入,左的空格的控制。
printf("%c",c);
for(j=1; j<2*(i-1); j++)
printf(" ");
if(s!=1) //从第二行开始输。
printf("%c",c);
printf("\n");
}
for(i=1; i<=2*n-1; i++) //将最后一行2*n-1输出。
printf("%c",c);
printf("\n");
}
return 0;
这一题主要是 if(t!=1)
printf("\n");的换行的控制,两个答案间有一个空行,然后根据空格来进行控制输出即可。
相关文章推荐
- OC学完总结(2015.7.21更新类的扩展)
- codeforces Gym 100187A A. Potion of Immortality
- 读书笔记-互联网思维阅读10其中一本书《自由》
- java接口的作用
- Spring基础知识汇总 Java开发必看
- Android的JDK、SDK、Eclipse的理解
- [Leetcode]Remove Duplicates from Sorted List II
- LeetCode学习_Two Sum
- Apache服务器的安装
- Ubuntu 14.04: install OpenCV with CUDA
- 什么是操作系统虚拟机?
- 布局那些事之 重用
- onEditorActionListener学习
- 10723 - Cyborg Genes(LCS)
- 黑马程序员--Objective-C语言基础知识--面向对象
- greenplum安装方法详解
- 黑马程序员.............OC基础语法
- Android之——AsyncTask随笔
- [C++ primer]虚函数和纯虚函数
- 直接选择排序