乙級1036html
1036 跟奧巴馬一塊兒編程 (15 point(s))
美國總統奧巴馬不只呼籲全部人都學習編程,甚至以身做則編寫代碼,成爲美國曆史上首位編寫計算機代碼的總統。2014 年末,爲慶祝「計算機科學教育周」正式啓動,奧巴馬編寫了很簡單的計算機代碼:在屏幕上畫一個正方形。如今你也跟他一塊兒畫吧!算法
輸入格式:
輸入在一行中給出正方形邊長 N(3≤N≤20)和組成正方形邊的某種字符 C,間隔一個空格。編程
輸出格式:
輸出由給定字符 C 畫出的正方形。可是注意到行間距比列間距大,因此爲了讓結果看上去更像正方形,咱們輸出的行數其實是列數的 50%(四捨五入取整)。學習
輸入樣例:
10 a輸出樣例:
aaaaaaaaaa a a a a a a aaaaaaaaaa
這個就很簡單了spa
#include<cstdio> #include<cmath> int main(){ int n; char a; scanf("%d %c",&n,&a); for(int i=0;i<round(float(n)/2.);i++){ for(int j=0;j<n;j++){ if(i==0||i==round(float(n)/2.)-1){ printf("%c",a); }else{ if(j==0||j==n-1){ printf("%c",a); }else{ printf(" "); } } } printf("\n"); } return 0; }
乙級1027code
1027 打印沙漏 (20 point(s))
本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個「*」,要求按下列格式打印htm
***** *** * *** *****所謂「沙漏形狀」,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。blog
給定任意N個符號,不必定能正好組成一個沙漏。要求打印出的沙漏能用掉儘量多的符號。it
輸入格式:
輸入在一行給出1個正整數N(≤1000)和一個符號,中間以空格分隔。io
輸出格式:
首先打印出由給定符號組成的最大的沙漏形狀,最後在一行中輸出剩下沒用掉的符號數。
輸入樣例:
19 *輸出樣例:
***** *** * *** ***** 2
這道題簡直有毒。。。。我嚴重懷疑出題的嚴謹性。
我第一次提交代碼,是兩個Answer Wrong。我又修改了一下。。。這兩個成爲 Presentation Error格式錯誤了。。。我百思不得其解。
而後看算法筆記的解法。。。雖然跟個人不同。可是他輸出的時候
每一行直接換行了,而我是又輸出了幾個空格。跟最長的同樣長了才換行的。看着是如出一轍的。天知道這有個這麼大的坑呀。。。他的輸出格式裏又沒有規定。。。坑爹呀。
個人解法是先算出了上面倒三角形總共有幾行,再一行一行的輸出。比較麻煩。。。
#include<cstdio> #include<cmath> int main(){ int N,n,temp,j; char c; scanf("%d %c",&N,&c); n=int(sqrt((N-1)/2.+1)); if(n==0&&n>0) n=n-1; if(n==1) printf("%c\n",c); else{ for(int i=0;i<n;i++){ for(j=0;j<i;j++){ printf(" "); } for(;j<2*n-1-i;j++){ printf("%c",c); } printf("\n"); } for(int i=n-2;i>=0;i--){ for(j=0;j<i;j++){ printf(" "); } for(;j<2*n-1-i;j++){ printf("%c",c); } printf("\n"); } } if(n!=0) printf("%d\n",N-(n*n-1)*2-1); else printf("%d\n",n); return 0; }