バラク・オバマ米大統領は、プログラミングを学ぶために皆にアピール、さらにはアメリカの歴史の中で最初の大統領になるために書き込みコード、書き込みコンピュータコードに例を設定していないだけ。「コンピュータサイエンス教育週間」を祝うために2014年の終わりが、正式に発足した、オバマ氏は、コンピュータコードを書いた非常に単純です:画面上の正方形を描きます。今、あなたは彼と一緒にそれを描きます!
入力フォーマット:
入力は、行の四角辺の長さN(3≤N≤20)を与え、文字正方形の一つがC、空間間隔エッジからなります。
出力フォーマット:
正方形の描かれた指定された文字からC出力。しかし、行間隔、列間隔よりも大きいことに留意するので、結果は、より正方形に見えるようにするために、我々出力ラインの数は、実際には(最も近い整数に丸めた)の列数の50%です。
サンプル入力:
10 a
出力例:
aaaaaaaaaa
a a
a a
a a
aaaaaaaaaa
アイデア1
#include <cstdio>
int main()
{
int n,i,j,row;
int col;//记录行总数
char c;
scanf("%d %c",&n,&c);
row=0;//记录当前行数
if(n%2==0) col=n/2;
else col=n/2+1;//四舍五入
for(i=0; i<col; i++)
{
for(j=0; j<n; j++) // j是列数
{
if(row==0 || row== col-1) //第一行和最后一行
printf("%c",c);
else //中间行
{
if(j==0 || j==n-1) //第0列和最后一列输出字符
printf("%c",c);
else
printf(" ");
}
}
if(row<col-1) //不到最后一行 都在最后换行
printf("\n");
row++;
}
return 0;
}
(アルゴリズム・ノート)のアイデア2
#include <cstdio>
int main()
{
int n,row;
char c;
scanf("%d %c",&n,&c);
if(n%2 == 1) row=n/2+1;//四舍五入
else row=n/2;
//No.1
for(int i=0; i<n; i++)
printf("%c",c);
printf("\n");
//No.2 ~ row-1
for(int i=1; i<row-1; i++)
{
printf("%c",c);
for(int j=0; j<n-2; j++)
printf(" ");
printf("%c\n",c);
}
//final row
for(int i=0; i<n; i++)
printf("%c",c);
return 0;
}