/*
中科_2010_1
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#define maxn 101
// 存儲每行每個單詞
char str[maxn][maxn][maxn];
int main() {
// cnt爲當前函數,cnt1[i]表示i行的單詞數
int i=0, j=0, k=0, cnt=0, cnt1[maxn]={0};
char line[maxn]; // 存儲當前行
while(gets(line) != NULL) {
for(i=0; i<strlen(line); ++i) { // 遍歷當前行
if(line[i] == ' ') { // 遇到空格說明當前單詞結束
str[cnt][j][k] = '\0';
j++;
k = 0;
} else if(isalpha(line[i])) { // 若爲字符,直接輸出
str[cnt][j][k++] = line[i];
} else if(line[i] == '!') { // 若爲 !,刪除前一個字符
k--;
} else if(line[i] == '*') { // 若爲 *,刪除前一行
int a, b;
for(a=0; a<j; ++a) { // 將本行已處理字符複製到上一行
for(b=0;str[cnt][a][b]!='\0'; ++b) {
str[cnt-1][a][b] = str[cnt][a][b];
}
}
for(b=0;b<k;b++)str[cnt-1][j][b]=str[cnt][j][b];
cnt--; // 行數-1
} else if(line[i] == '>') { // 若爲 >,大小寫互換
if(str[cnt][j-1][0]>='a' && str[cnt][j-1][0]<='z') {
str[cnt][j-1][0] -= 32; // 小寫轉大寫
} else { // 大寫轉小寫
str[cnt][j-1][0] += 32;
}
}
}
cnt1[cnt] = j; // 記錄每行單詞數
cnt++; // 記錄行數
j = 0; // 初始化
k = 0;
}
for(i=0; i<cnt; ++i) { // 輸出
for(j=0; j<=cnt1[i]; ++j) {
printf("%s ", str[i][j]);
}
printf("\n");
}
return 0;
}
USTC機試——根據輸入的文章進行對應的操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.