13522363 | 490 | Rotating Sentences | Accepted | ANSI C | 0.009 | 2014-04-20 13:34:51 |
将字符串顺时针旋转90度输出
【解决过程】
一开始以为不用补空格,于是WA,
然后以为是最后不能换行,改后WA,
最后才知道是数组越界:100个字符加上换行符一共101个字符……最后,代码如下:
#include<stdio.h>
#include<string.h>
#define MAXN 100+10
char s[MAXN][MAXN];
int main(){
int n=0,i,j,maxl=0;
memset(s,' ',sizeof(s));
while(fgets(s[n++],MAXN,stdin))
if(strlen(s[n-1])>maxl) maxl=strlen(s[n-1]);
for(i=0;i<maxl-1;i++){
for(j=1;j<n;j++)
if(i<strlen(s[n-1-j])-1)
printf("%c",s[n-1-j][i]);
else
printf(" ");
printf("\n");
}
return 0;
}
【教训】
1、不要简单把自己以为的边界当做边界
2、strlen会把换行符算进去
3、字符串题目(尤其是对格式要求很严格的)最好用文件输出差错,提交时不忘删去文件部分
4、ANSI C中注释不能用//