• UVA10361 Automatic Poetry


    没想到这样一个水题也把我憋了这么久,唉,方法很简单把因‘<’'>'号分开的几部分字符串分别放在不同的数组里,输出时,第一行忽略<>号输出,第二行先输出...前面的,后面的变换一下第一行的字符串顺序输出就可以了。

    困住我的地方:测试组数的输入问题,评测之后出现runtime error。

    while(gets(num) != NULL)
    {
    sscanf(num,"%d",&n);开始时我定义了char n;用while(gets(&n) != NULL);之后问了斌哥,知道了这样只能读一个字符,也就是测试组数只能是个位数。值得注意:

    #include<stdio.h>
    #include<string.h>
    #define MAXN 100+10
    int n;
    char s1[MAXN],s2[MAXN],a[MAXN],b[MAXN],a1[MAXN],b1[MAXN];
    char num[MAXN];
    void solve()
    {
    int len1 = strlen(s1);
    int p = 0, q = 0,g = 0,h = 0, flaut = 0;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(a1,0,sizeof(a1));
    memset(b1,0,sizeof(b1));
    for(int i = 0; i < len1; i ++)
    {
    if(s1[i] == '<')
    { flaut ++;continue;}
    if(s1[i] == '>')
    { flaut++;continue;}
    if(flaut==1) {a[p++] = s1[i];}
    if(flaut==3) b[q++] = s1[i];
    if(flaut == 2) a1[g++]=s1[i];
    if(flaut == 4) b1[h++]=s1[i];
    if(((s1[i]>='a')&&(s1[i]<='z'))||(s1[i]==' '))
    printf("%c",s1[i]);
    }
    printf("\n");
    int len2 = strlen(s2);
    for(int j = 0; j < len2; j ++)
    {
    if(s2[j] == '.'){printf("%s%s%s%s\n",b,a1,a,b1);break;}
    printf("%c",s2[j]);
    }
    }
    void input()
    {
    while(gets(num) != NULL)
    {
    sscanf(num,"%d",&n);
    for(int i = 0; i < n; i ++)
    {
    gets(s1);
    gets(s2);
    solve();
    }
    }
    }
    int main()
    {
    input();
    return 0;
    }



  • 相关阅读:
    .Net 下的Wondows窗体常用项目
    常用工具下载网址
    灵活操作MS SQL 2005 中的数据库 分离、附加、离线、在线、日志截断
    C#中使用委托
    Internet Information Services 诊断工具
    谁能帮我看一下这个问题 HRESULT = '80131509'
    在C#中使用指针
    MSSQL2005的新功能创建数据库快照
    Exchange 规划安装配置一条龙课程
    将进酒
  • 原文地址:https://www.cnblogs.com/yuzhaoxin/p/2319229.html
Copyright © 2020-2023  润新知