PAT甲级A1031 helloworld For U 奇奇怪怪的测试点5
1.18分测试点五无法通过,输入字符串fgets(str,80,stdin);
#include <cstdio>
#include <cstring>
int main()
{
char str[80];
char ans[80][80];
// memset(ans, 0, sizeof(ans));
fgets(str, 80, stdin);
int len = strlen(str) - 1;
int vt, ping;
vt = (len + 2) / 3;
ping = len + 2 - vt * 2;
int num = 0;
for (int i = 0; i <vt; i++)
{
for (int j = 0; j < ping; j++)
{
ans[i][j] = ' ';
}
}
for(int i=0;i<vt;i++){
ans[i][0]=str[num++];
}
for(int j=1;j<ping;j++){
ans[vt-1][j]=str[num++];
}
for(int i=vt-2;i>=0;i--){
ans[i][ping-1]=str[num++];
}
for (int i = 0; i < vt; i++)
{
for (int j = 0; j < ping; j++)
{
printf("%c", ans[i][j]);
}
printf("\n");
}
return 0;
}
2.20分答案,输入用scanf("%s",str);
#include <cstdio>
#include <cstring>
int main()
{
char str[80];
char ans[40][40];
// memset(ans, 0, sizeof(ans));
// fgets(str, 80, stdin);
scanf("%s",str);
int len = strlen(str);
int vt, ping;
vt = (len + 2) / 3;
ping = len + 2 - vt * 2;
int num = 0;
for (int i = 0; i <vt; i++)
{
for (int j = 0; j < ping; j++)
{
ans[i][j] = ' ';
}
}
for(int i=0;i<vt;i++){
ans[i][0]=str[num++];
}
for(int j=1;j<ping;j++){
ans[vt-1][j]=str[num++];
}
for(int i=vt-2;i>=0;i--){
ans[i][ping-1]=str[num++];
}
for (int i = 0; i < vt; i++)
{
for (int j = 0; j < ping; j++)
{
printf("%c", ans[i][j]);
}
printf("\n");
}
return 0;
}
用”fgets()“函数输入字符串,用strlen()函数得出的长度比实际大一,gets与·scanf函数正常