2014年8月29日星期五

[UVa] 490 - Rotating Sentences


#include <stdio.h>
#include <string.h>
char c[100][100];
char input;
int main(){
  //初始化陣列
  for(int j=0;j<100;j++)
    for(int i=0;i<100;i++)
      c[i][j]='\0';
  
  //i為橫向,j為縱向,從右上角開始
  int i=99,j=0;  
  while(1){
    input = getc(stdin);
 if(input==EOF)break;
 if(input=='\n'){ //遇換行則從前一行的最上面開始
   j=0;
   i--;
 }else{
   c[i][j] = input;
      j++; //不斷往下寫入
 }
    //if(input)break;
  }
  i++;
  int flag=i; //設定旗標,標在倒數第i行,輸出都從這邊開始往右
  int check=0;
  for(j=0;j<100;j++){
    while(i<100){
   if(c[i][j]!='\0')printf("%c",c[i][j]);
   else printf(" ");
   i++;
   if(c[i][j+1]!='\0'){check=1;} //順便檢查下一行
 }
 //如果下一行還存有資料,輸出換行,否則就跳出迴圈
 if(check==1)printf("\n");else break; 
 check=0;
 i = flag; //輸出完一列,就要將i跳回旗標開始處
  }
  return 0;
} 

沒有留言: