2011-08-22 10:09:38Morris
d252. 94北縣賽-4-字串處理問題 (String)
d252. 94北縣賽-4-字串處理問題 (String)
/**********************************************************************************/
/* Problem: d252 "94北縣賽-4-字串處理問題 (String)" from */
/* Language: C */
/* Result: AC (0ms, 139KB) on ZeroJudge */
/* Author: morris1028 at 2011-08-22 09:53:11 */
/**********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
main() {
int a, b;
char s[300], edit[300];
while(gets(s)) {
gets(edit);
int Ls = strlen(s), Le = strlen(edit);
int index, t;
for(a = 0; a < Le; a++) {
switch(edit[a]) {
case '0':index = 0;break;
case '$':index = Ls;break;
case 'x': {
for(b = index; b < Ls-1; b++)
s[b] = s[b+1];
s[--Ls] = '\0';break;
}
case 's': {
if(index < Ls-1)
t = s[index], s[index] = s[index+1], s[index+1] = t;
break;
}
case 'i': {
for(b = Ls; b > index; b--)
s[b] = s[b-1];
s[index] = edit[++a], s[++Ls] = '\0', index++;
break;
}
case 'u': {
if(s[index] >= 'a' && s[index] <= 'z')
s[index] = s[index] - 'a' + 'A';
index++;
break;
}
case '+':index++;break;
case '-':index--;break;
}
}
puts(s);
}
return 0;
}
內容 :
問題描述
本題目為字串處理問題,程式需讀取一行英文字串,並依據讀入相關之指令,
來編修該字串。程式開始執行時,游標位於該英文字串的第一個字元。編修字串的指令
如下:
0 - 移動游標至目前所在行的第一個字元。
$ - 移動游標至字串的結束位置(即最後一個字元的下一個位置)。
x - 刪除目前游標所在位置的字元(如果在字串的結束位置則不做任何動作)。
s - 與游標所在位置的右邊字元做交換動作(如果游標在結束位置或結束位置的前一
個位置,則不做任何動作)。
i - 在游標所在位置插入字元。如指令 ‘ix’ ,則是在游標目前所在位置前插入字元
‘x’,游標停留在原始的位置(即所插入‘x’ 的下一位置)。
u - 如果游標所在位置之資料為英文字母,則將該字母改為大寫,並將游標往右移一
個位置,如不是英文字母,則直接將游標往右移一個位置。
+ - 將游標向右移一個位置。
- - 將游標向左移一個位置。
本題目為字串處理問題,程式需讀取一行英文字串,並依據讀入相關之指令,
來編修該字串。程式開始執行時,游標位於該英文字串的第一個字元。編修字串的指令
如下:
0 - 移動游標至目前所在行的第一個字元。
$ - 移動游標至字串的結束位置(即最後一個字元的下一個位置)。
x - 刪除目前游標所在位置的字元(如果在字串的結束位置則不做任何動作)。
s - 與游標所在位置的右邊字元做交換動作(如果游標在結束位置或結束位置的前一
個位置,則不做任何動作)。
i - 在游標所在位置插入字元。如指令 ‘ix’ ,則是在游標目前所在位置前插入字元
‘x’,游標停留在原始的位置(即所插入‘x’ 的下一位置)。
u - 如果游標所在位置之資料為英文字母,則將該字母改為大寫,並將游標往右移一
個位置,如不是英文字母,則直接將游標往右移一個位置。
+ - 將游標向右移一個位置。
- - 將游標向左移一個位置。
輸入說明
:
1. 第一行為要編修的英文字串(不超過250 個字元)。
2. 第二行為編修英文字串的指令。
2. 第二行為編修英文字串的指令。
輸出說明
:
請輸出處理完畢之字串。
範例輸入 :
hellol, I am a frog. $-----xxxxipieirisioin0u++xs
範例輸出 :
Hello, I am a person.
提示
:
出處
:
/**********************************************************************************/
/* Problem: d252 "94北縣賽-4-字串處理問題 (String)" from */
/* Language: C */
/* Result: AC (0ms, 139KB) on ZeroJudge */
/* Author: morris1028 at 2011-08-22 09:53:11 */
/**********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
main() {
int a, b;
char s[300], edit[300];
while(gets(s)) {
gets(edit);
int Ls = strlen(s), Le = strlen(edit);
int index, t;
for(a = 0; a < Le; a++) {
switch(edit[a]) {
case '0':index = 0;break;
case '$':index = Ls;break;
case 'x': {
for(b = index; b < Ls-1; b++)
s[b] = s[b+1];
s[--Ls] = '\0';break;
}
case 's': {
if(index < Ls-1)
t = s[index], s[index] = s[index+1], s[index+1] = t;
break;
}
case 'i': {
for(b = Ls; b > index; b--)
s[b] = s[b-1];
s[index] = edit[++a], s[++Ls] = '\0', index++;
break;
}
case 'u': {
if(s[index] >= 'a' && s[index] <= 'z')
s[index] = s[index] - 'a' + 'A';
index++;
break;
}
case '+':index++;break;
case '-':index--;break;
}
}
puts(s);
}
return 0;
}
下一篇:b065. 4. 滿漢全席