写一个程序,可以实现字符串倒序,例如:“abc def 567”输出“cba fed 765”,被空格间隔的小段倒序。
int strABC(char *str) {
int i,j,k;
int tp1=0, tp2; //记录字符串中空格的位置
int flag=0; //判断是否为字符串中第一小段字符串
int isSuss;

展开全部
收起
2回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • NONO小诺

    15人对此回答表示赞同

    你的程序的两个for循环的判断条件和倒置公式有问题,我改了下,现在是几个字符都可以进行倒置
    int strABC(char *str) {
    int i,j,k;
    int tp1=0, tp2; //记录字符串中空格的位置
    int flag=0; //判断是否为字符串中第一小段字符串
    int isSuss; //是否转换成功
    char temp;

    if(str==NULL) {
    isSuss = 0;
    展开
    15
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 置之度外

    6人对此回答表示赞同

    程序的隐患有两个。
    一是倒置处理的判定条件:j<=k。实际上按你的方法,倒序的工作只需要进行一半的循环就可以完成了,因此可以将判定条件改为:j < k / 2 和 j < k - (tp2 - tp1 + 1) / 2 。
    二是flag==1的时候交换字符位置的计算公式:*(str+j) = *(str+k-j); 这里k一直是tp2,而j是从tp1开始循环的,所以str+k-j的结果并不是需要交换的字符本身,而是从str的第1个字母到第(k-j+1)个字母之间
    展开
    6
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部