題目來(lái)源 :http://acm.hdu.edu.cn/showproblem.php?pid=2091
空心三角形
Problem Description
把一個(gè)字符三角形掏空,就能節(jié)省材料成本,減輕重量敬鬓,但關(guān)鍵是為了追求另一種視覺效果蔽午。在設(shè)計(jì)的過(guò)程中斩祭,需要給出各種花紋的材料和大小尺寸的三角形樣板纽绍,通過(guò)電腦臨時(shí)做出來(lái)要尔,以便看看效果铁瞒。
Input
每行包含一個(gè)字符和一個(gè)整數(shù)n(0<n<41)妙色,不同的字符表示不同的花紋,整數(shù)n表示等腰三角形的高精拟。顯然其底邊長(zhǎng)為2n-1燎斩。如果遇到@字符虱歪,則表示所做出來(lái)的樣板三角形已經(jīng)夠了。
Output
每個(gè)樣板三角形之間應(yīng)空上一行栅表,三角形的中間為空笋鄙。顯然行末沒有多余的空格。
Sample Input
X 2
A 7
@
Sample Output
遇到的問(wèn)題 :通過(guò)題目的意思要我們獲取輸入的字符和一個(gè)數(shù)N來(lái)畫出一個(gè)三角形遇到@結(jié)束程序
解決的思路 :先通過(guò)char來(lái)獲取字符然后獲取N怪瓶,輸入一個(gè)字符a和高的長(zhǎng)度n萧落,則底邊的長(zhǎng)為2n-1。需要注意的是洗贰,換行是在第二組數(shù)據(jù)輸入完字符和高的長(zhǎng)度之后在換行找岖。 而且中間空格的數(shù)目隨著i的增加而增加,還有換行不能使用printf(“\n”),否則不會(huì)換行
#include<stdio.h>
int main()
{
int i,j,k,n,len=0;//i敛滋。j许布,k都是用來(lái)控制空格的輸出,len是用來(lái)控制換行的//
char a;//定義一個(gè)字符//
while(scanf("%c",&a),a!='@')//@表示要做的三角形已經(jīng)做好了//
{
scanf("%d",&n);
if(len>0)? putchar('\n');//控制輸入字符a和高度n后就換行//
if(n==1) printf("%c\n",a);
else
{
for(i=1;i<=n-1;i++)//控制前n-1行//
{
for(j=1;j<n+i;j++)//控制各行的字符和空格的輸出//
{
if(j==(n-i+1)||j==(n+i-1))//由事例可以的出的規(guī)律绎晃,兩腰的字符是隨著i的變換而改變位置的//
printf("%c",a);
else
printf(" ");
}
putchar('\n');//換行到最后一行//
}
for(k=1;k<=2*n-1;k++)
{
printf("%c",a);//底邊是一整行輸出字符的//
}
putchar('\n');//最后要換行//
}
len++;//用來(lái)控制輸入字符和高度后才換行的//
getchar();
}
return 0;
}