zoukankan      html  css  js  c++  java
  • 高级语言课程设计报告第五次报告: 字符串

    高级语言课程设计报告

    实习题目

    第五次报告: 字符串

    字符串的处理是常见竞赛编程题,做好这部分题目需要扎实的基础知识:字符串的概念,字符数组的理论,字符指针、字符串处理函数,以及良好的算法。红色内容是基础,建议基础不扎实的自行复习。字符串处理函数不限于教材讲述的内容,李文新书《程序设计导引及在线实践》1.17节是个很好的补充。多读经典字符串的程序可以开阔眼界,启发思路。书中题目4.3对于没有学过C++的同学可能看不懂函数模板sort,不必强求,依据其所要实现的功能自己打造一个C版本的函数不算给你出难题。

    本章中为我们演示了很多函数的使用方式,请活学活用。

    苏小红数本章扩充内容之一:const实属用处较少的繁琐语法,不必深究。除此以外的其他内容应该深入研究领会。

    l 完成ACM俱乐部作业:2015cup实习5字符串中至少2

    l 描述你的算法,注释你的程序。

    l 注意勿抄袭:全系统自动判定抄袭,一旦抄袭,0分。

    一、实习目的:熟练掌握字符串的使用

    二、针对你的每一道题目:

    字符串后继:

    1.算法描述。

     没啥算法,就是用ASCII码,给最后的+1,遇到z就去掉。

    2.你的代码及注释。

    #include <stdio.h>

    int main()

    {

    int a;

    char s[100000];

    scanf("%s",s);

    for(a=0;s[a]<='z'&&s[a]>='a';a++);  //将a拉到字符串末尾

    a--;

    for(;s[a]=='z';a--)

    {

      s[a]=''; //如果是z就消掉

    }

    s[a]=s[a]+1; //给最后一位+1

    printf("%s",s);

    }

     

    3. 设计及调试过程遇到的问题及解决方案。

     完全没问题。

    1. 心得体会和自我对程序的评价。

     很简单的题目,只是练手用的。没什么好评价的。

    字符串反转:

    1.算法描述。

     先把第一个单词反转,之后每遇到一个空格反转一次。

    2.你的代码及注释。

    #include <stdio.h>

    #include <string.h>

    int main()

    {

    int a,b,c,i;

    char s[10000],q[10000];

    scanf("%d",&i);

    getchar();

    while(i)

    {

    memset(s,0,10000);

    memset(q,0,10000);

    gets(s);

    for(a=0;s[a]!=' ';a++);  //把a拉到第一个空格前一个处

    for(c=0;s[c]!=' ';c++,a--)  //c在空格上了,

    {

    q[c]=s[a-1];        //换位置

    }

    while(s[c]!='')     //c往后走到最后停

    {

    if(s[c]==' ')       //遇到空格

    {

    q[c]=s[c];         //把空格粘上

    for(b=c+1;s[b+1]!=' '&&s[b+1]!='';b++); //把b送到下一个空格

    for(c=c+1;s[b]!=' ';b--,c++)      //b到上一个空格,c到下一个空格

    {

    q[c]=s[b];       

    }

    }

    }

    q[c]='';     //结束按个

    printf("%s ",q);

    i--;

    };

    return 0;

    }

     

    3. 设计及调试过程遇到的问题及解决方案。

     acm总说我运行错误,不知道为啥,最后也没改,用别人的代码进去了,这个就放这吧。

    4.心得体会和自我对程序的评价。

    感觉以前编过的程序不能扔啊,还是有用的,这个程序不知道有没有以前编的好,忘记了,总之算法都是能行的就看能不能快一点了。

    破译邮件:

    1.算法描述。

     同样是做过的题,就是用switch去替换每个字。

    2.你的代码及注释。

    #include <stdio.h>

    #define n 10000

    int main()

    {

    int a,b;

    char s[n];

    scanf("%d",&a); //测试次数

    getchar(); //吸收回车

    do

    {

    scanf("%s",s);    //输入字符串

    for(b=0;s[b]!='';b++)    //逐个检查

    {

    if(s[b]=='#')     //#变空格

    printf(" ");

    else  if(s[b]=='-')    //忽略-

    continue;

    else  

    switch(s[b])     //若是数字看选项,一目了然不做注释

    {

    case '1':{switch(s[b+1])

    {

    case '0':{printf("J");b++;break;}

    case '1':{printf("K");b++;break;}

    case '2':{printf("L");b++;break;}

    case '3':{printf("M");b++;break;}

    case '4':{printf("N");b++;break;}

    case '5':{printf("O");b++;break;}

    case '6':{printf("P");b++;break;}

    case '7':{printf("Q");b++;break;}

    case '8':{printf("R");b++;break;}

    case '9':{printf("S");b++;break;}

    case '-':{printf("A");break;}

    case '#':{printf("A");break;}

    case '':{printf("A");break;}

    }break;

    }

    case '2':{switch(s[b+1])

    {

    case '0':{printf("T");b++;break;}

    case '1':{printf("U");b++;break;}

    case '2':{printf("V");b++;break;}

    case '3':{printf("W");b++;break;}

    case '4':{printf("X");b++;break;}

    case '5':{printf("Y");b++;break;}

    case '6':{printf("Z");b++;break;}

    case '-':{printf("B");break;}

    case '#':{printf("B");break;}

    case '':{printf("B");break;}

    }break;

    }

    case '3':{printf("C");break;}

    case '4':{printf("D");break;}

    case '5':{printf("E");break;}

    case '6':{printf("F");break;}

    case '7':{printf("G");break;}

    case '8':{printf("H");break;}

    case '9':{printf("I");break;}

      }

    }

    printf(" ");   //换行

    a--;

    }while(a);

    return 0;

    }

     

    3. 设计及调试过程遇到的问题及解决方案。

     NO PROBLEM

    4.心得体会和自我对程序的评价。

     也就那么回事,毕竟做过,就当复习了。

    定位符:

    1.算法描述。

     //开始,到/或:为止输出中间的。

    2.你的代码及注释。

    #include <stdio.h>

    #include <string.h>

    #define n 10000

    int main()

    {

    int c,b;

    char s[n];

    while(scanf("%s",s)!=EOF)

    {

    for(b=0;s[b]!='';b++)       //浏览

    {

    if(s[b]=='/'&&s[b+1]=='/')      //两个斜杠 开始

    {

    for(c=b+2;s[c]!='/'&&s[c]!=':';c++)    //斜杠或者冒号停止

    {

    printf("%c",s[c]);          //输出

    }

    printf(" ");

    }

    }

    memset(s,0,10000);

    };

    }

     

    3. 设计及调试过程遇到的问题及解决方案。

     就是那个冒号我不知道也是停止符,费了点时间,其他没了。

    4.心得体会和自我对程序的评价。

     没什么体会,比较简单。程序就那样吧。

  • 相关阅读:
    mysql数据库的相关练习题及答案
    数据库一
    python的协程
    jquery的常用知识点
    diehard–让你的程序更健壮
    迷宫塔生成工具
    编程解决谁是凶手的问题
    ClojureScript实现xpath定位器生成-1
    使用ClojureScript进行chrome扩展开发
    AES CBC模式下的Padding Oracle解密
  • 原文地址:https://www.cnblogs.com/xukaiae86/p/6421270.html
Copyright © 2011-2022 走看看