您的位置:首页 > 其它

九度:1464<Hello World For U><排版>

2014-03-06 08:58 621 查看
// 浙大12机试
// Hello world for U
// 排版
//

#include <stdio.h>
#include <string.h>

int main()
{

#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt" , "r", stdin);
freopen("E:\\out.txt", "w", stdout);
#endif

char s[100];
while(scanf("%s", s) != EOF)
{
int n = strlen(s);
if( n<5 || n>80)
{
break;
}
char map[100][100];
memset(map, ' ', sizeof(map));
// 之后没有填充区域为空格,所以应该以' '初始化,
// 而不是memset(map, 0, sizeof(map));
// 和正确的代码的结果输出到txt,图形所占空间完全相同,
// 但就是不正确。这个错误是隐形的呢?

int n1=0,n2=0,n3=0;
n2 = (n+2)/3 > 3 ? (n+2)/3 : 3;
if((n-n2)%2 == 0)
{
n1=n3=(n+2-n2)/2;
}
else
{
n2++;
n1=n3=(n+2-n2)/2;
}

while(n2<n1)
{
n2+=2;
n1--;
n3--;
}
//printf("n1=%d n2=%d n3=%d\n", n1, n2,n3);

//print
int i=0, j=0, k=0;
while(i<n1)
{
map[i++][j] = s[k++];
}

i=i-1;
j=j+1;
while(j<n2)
{
map[i][j++]=s[k++];
}

i=i-1;
j=j-1;
while(i>=0)
{
map[i--][j]=s[k++];
}
if(k != n)
{
printf("Error\n");
}

for(i=0; i<n1; i++)
{
for(j=0; j<n2; j++)
{
printf("%c", map[i][j]);
}
printf("\n");
}

}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: