m0_62001793 2022-04-29 11:34 采纳率: 100%
浏览 40
已结题

为什么没有打印出运算符?

分割运算对象和运算法,但是运算法打印不出来是为什么?


int partition2(char* string, char* Str, int position)
{
    int i, j;
    i = position;
    if (string[i] != '\0')
    {
        j = 0;
        while (string[i] >='0'&&string[i]<='9' && (string[i] != '\0'))
        {
            Str[j] = string[i];
            ++i;
            ++j;
        }
        while ((string[i] == '+' || string[i] == '-' || string[i] == '*' || string[i] == '/')&&(string[i]!='\0'))
        {
            Str[j] = '\0';
            ++j;
            Str[j] = string[i];
            ++i;
            ++j;
        }
        return i;
    }
    else
        return -1;
}

void main()
{
    int choice;
    char string[50];
    char Str[20];
    int position=0;
    int k=0;
    printf("\t\t①英文句子分割        ②算术表达式分割\n请选择需要进行的操作:");
    scanf("%d", &choice);
    getchar();
    printf("Please input string(length<=50): ");
    gets_s(string);
    printf("\nPartition result: \n");
    if(choice==1)
        while ((position = partition1(string, Str, position)) != -1)
        {
            ++k;
            printf("Partition %d : %s\n", k, Str);
        }
    if(choice==2)
        while ((position = partition2(string, Str, position)) != -1)
        {
            ++k;
            printf("Partition %d : %s\n", k, Str);
        }
}
  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-04-29 16:42
    关注

    修改如下,供参考:

    #include <stdio.h>
    int partition2(char* string, char* Str, int position)
    {
        int i, j;
        i = position;
        if (string[i] != '\0')
        {
            j = 0;
            if (string[i] >= '0' && string[i] <= '9') {   //修改
                while (string[i] >= '0' && string[i] <= '9' && (string[i] != '\0'))
                {
                    Str[j] = string[i];
                    ++i;
                    ++j;
                }
            }
            else{ //修改
                while ((string[i] == '+' || string[i] == '-' || string[i] == '*' || string[i] == '/') && (string[i] != '\0'))
                {
                    //Str[j] = '\0';   //修改
                    //++j;             //修改
                    Str[j] = string[i];
                    ++i;
                    ++j;
                }
            }
            Str[j] = '\0';    //修改
            return i;
        }
        else
            return -1;
    }
    
    void main()
    {
        int choice;
        char string[50];
        char Str[20];
        int position = 0;
        int k = 0;
        printf("\t\t①英文句子分割        ②算术表达式分割\n请选择需要进行的操作:");
        scanf("%d", &choice);
        getchar();
        printf("Please input string(length<=50): ");
        gets_s(string);
        printf("\nPartition result: \n");
        if (choice == 1)
            while ((position = partition1(string, Str, position)) != -1)
            {
                ++k;
                printf("Partition %d : %s\n", k, Str);
            }
        if (choice == 2)
            while ((position = partition2(string, Str, position)) != -1)
            {
                ++k;
                printf("Partition %d : %s\n", k, Str);
            }
    }
    
    
    #include <stdio.h>
    int partition2(char* string, char* Str, int position)
    {
        int i, j;
        i = position;
        if (string[i] != '\0')
        {
            j = 0;
            if (string[i] >= '0' && string[i] <= '9') {   //修改
                while (string[i] >= '0' && string[i] <= '9' && (string[i] != '\0'))
                    Str[j++] = string[i++];
            }
            else{ //修改
                while ((string[i] == '+' || string[i] == '-' || string[i] == '*' || string[i] == '/') && (string[i] != '\0'))
                    Str[j++] = string[i++];
            }
            Str[j] = '\0';   //修改
            return i;
        }
        else
            return -1;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 创建了问题 4月29日

悬赏问题

  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥15 统计大规模图中的完全子图问题
  • ¥15 使用LM2596制作降压电路,一个能运行,一个不能
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题
  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式