sasigeinaruto 2022-03-18 10:40 采纳率: 75%
浏览 151
已结题

c++或c语言编程问题

编写一个程序,首先输入一个任意字符串,当输入1时,去掉该字符串最前面的“*”,输入2时,去掉字符串中间的“*”,输入3时,去掉最右端的“*”,输入4时,去掉该字符串中的全部“*”,输入5时,程序退出。(要求:5个子功能全部采用子函数来实现,字符串要求使用指针来进行操作)

  • 写回答

3条回答 默认 最新

  • 关注
    
    
    #include <stdio.h>
    #include <stdlib.h>
    
    
    void func1(char *input)
    {
        while(*input == '*')
        {
            input++;
        }
        printf("%s\n", input);
    }
    
    void func2(char *input)
    {
        char output[100];
        char *temp = output;
        char *temp2;
    
        while (*input == '*')
        {
            *temp++ = *input++;
        }
    
        temp2 = input;
        while(*temp2 != '\0')
        {
            temp2++;
        }
    
        temp2--;
        while (*temp2 == '*')
        {
            temp2--;
        }
    
        while (input != temp2)
        {
            if (*input != '*')
                *temp++ = *input++;
            else input++;
        }
    
        while (*input != '\0')
        {
            *temp++ = *input++;
        }
        *temp = '\0';
        printf("%s\n", output);
    }
    
    void func3(char *input)
    {
        char *temp = input;
        while(*temp != '\0')
        {
            temp++;
        }
    
        while (temp != input)
        {
            temp--;
            if (*temp != '*')
            {
                *(temp + 1) = '\0';
                break;
            }
        }
        printf("%s\n", input);
    }
    
    void func4(char *input)
    {
        char output[100];
        char *temp = output;
        while(*input != '\0')
        {
            if (*input != '*')
                *temp++ = *input++;
            else
                input++;
        }
        *temp = '\0';
        printf("%s\n", output);
    }
    
    int main()
    {
        char input[100] = "****aaaa****bbb*cc**d*****";
        printf("输入字符串");
        scanf("%s", input);
        printf("输入1-5\n");
        int x;
        scanf("%d",&x);
        switch(x){
            case 1:func1(input);break;
            case 2:func2(input);break;
            case 3:func3(input);break;
            case 4:func4(input);break;
            case 5:break;
    default:break;
        }
    
        return 0;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 关注

    参考:

    #include "stdio.h"
    void func(char * str){
        
        char ch[100]={'\0'};
        int i;
        int cnt=0;
        int flag = 0;
        int len = strlen(str);
        
        for(i=0;i<len;i++){
            if(flag==0 && str[i] !='*'){
                flag=1;
            }
            if(flag==1){
                ch[cnt++] = str[i];        
            }
        }
        puts(ch);
            
    }
    
    void main()
    {
        char *str;
        gets(str);
        func(str);
        
    }
    
    
    评论
  • 有问必答小助手 2022-03-18 11:19
    关注
    您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
    PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月18日

悬赏问题

  • ¥40 找同学帮敲Python代码
  • ¥15 MYSQL 订单的商品明细重复计算问题
  • ¥15 微信实时共享位置修改
  • ¥100 TG的session协议号转成直登号号后客户端登录几分钟后自动退出设备
  • ¥50 共模反馈回路的小信号增益
  • ¥15 arduino ssd1306函数与tone函数放歌代码不兼容问题
  • ¥70 0.96版本hbase的row_key里含有双引号,无法deleteall
  • ¥15 诊断性META分析合并效能的检验
  • ¥15 请问abb根据色块判断奇偶数并根据批次号放入仓储
  • ¥66 开发PC客户端一定也要开发上位机吗?