UVA-10361 Automatic Poetry

2016-07-13

UVA - 10361 Automatic Poetry

题目大意:给出两个序列,第一个 s1<s2>s3<s4>s5,第二个 S...。输出两个序列,第一个删除括号,即 s1s2s3s4s5,第二个将 s2 与 s4 交换位置后替换...,即 Ss4s3s2s5。

解题思路:读入两个序列,以括号为分界分别赋值给 5 个字符串,按需求输出。

注意:这题若能熟练使用strstr与strncpy便能很快解出。

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

int main () {
    int n;
    cin >> n;
    getchar();
    while ( n-- ) {
        char str[50][1000] = {'\0'};
        char s[50][1000] = {'\0'};
        gets(str[0]);
        gets(str[2]);
        strncpy( s[0] , str[0] , strstr(str[0] , "<")-str[0] );//取得第一个<前的字符串
        strncpy( s[1] , strstr(str[0] , "<")+1 , strstr(str[0] , ">")-strstr(str[0] , "<")-1 );//取得第一个<>中的字符串
        char temp[1000];
        strncpy( temp , strstr(str[0] , ">")+1 , strlen(str[0])-(strstr(str[0] , ">")-str[0]) );//取得>后的字符串,以便再次获取字符串
        strncpy( s[2] , temp , strstr(temp , "<")-temp );//取得><间的字符串
        strncpy( s[3] , strstr(temp , "<")+1 , strstr(temp , ">")-strstr(temp , "<")-1 );//取得第二个<>间的字符串
        strncpy( s[4] , strstr(temp , ">")+1 , strlen(temp)-(strstr(temp , ">")-temp) );//取得第二个>后的字符串
        strcpy( str[1] , s[0] );
        strcat( str[1] , s[1] );
        strcat( str[1] , s[2] );
        strcat( str[1] , s[3] );
        strcat( str[1] , s[4] );
        strncpy( str[3] , str[2] , strstr(str[2] , ".")-str[2] );
        strcat( str[3] , s[3] );
        strcat( str[3] , s[2] );
        strcat( str[3] , s[1] );
        strcat( str[3] , s[4] );
        cout << str[1] << endl << str[3] << endl;
    }
    return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值