__Wu__ 2021-06-30 20:18 采纳率: 75%
浏览 14

过滤多余字符不知道怎么做

题目描述 输入一行文本,包括大小写字母、数字、空格等。要求过滤掉除字母以外的其他字符,并将所有的大写字母转换成小写字母,然后将字母从小到大排序,输出结果。 输入要求 一行,一行文本,长度小于 1000。 输出要求 一行,处理后的结果。 输入样例 复制 She sells sea shells 输出样例 复制 aeeeehhllllssssss

  • 写回答

1条回答 默认 最新

  • a5156520 2023-01-24 15:07
    关注

    我的思路是:

    1、首先,用fgets()函数把输入的一行文本存入一个字符数组str中,然后去除里面的换行符;

    2、然后遍历字符数组str,将里面的小写字母存入备份字符数组temp中,大写字母转为小写字母后再存入备份数组temp中;

    3、使用选择排序,按字母从小到大的顺序排序备份数组temp中的字符;

    4、把备份数组temp打印出来,以显示最终结果。

    参考链接:


    
    #include <stdio.h>
    #include <ctype.h>   // islower isupper 
    #include <string.h>  // strlen 
    
    int main(void){
        
        char str[1000], temp[1000];
        printf("请输入一行文本:");
        fgets(str,1000,stdin);  //从键盘获取一行输入
    
    // 下面这个 可以使用,也不可以不用,不影响结果,只是为了让str数组前面位置存储的是输入的实际文本    
    // 如果输入的一行文本被字符数组str完全存储,包括结尾的换行符 
    // 则strlen(str)-1位置的字符是换行符,把它替换为字符串结尾的空字符'\0'if(str[strlen(str)-1]=='\n'){  
            str[strlen(str)-1]='\0';
        } 
        
        int i=0,index=0;
        char ch=str[i];
        while(ch!='\0'){
            
            ch=str[i];
            // https://www.dotcpp.com/course/444
            if(islower(ch)!=0 ){ //如果是小写字母,则直接存储到备份数组 
                temp[index++]=ch;
            }else if(isupper(ch)!=0){ // 如果是大写字母,则转为小写字母再存储到备份数组 
            // http://ascii.wjccx.com/
                temp[index++]=ch+32;     // 大写字母+32 可以转为大写字母对应的小写字母 
            }        
            
            i++; // 让下标变量指向下一个字符位置 
        }
        temp[index]='\0';
        
    //    printf("排序前的结果为:\n");
    //    printf("%s\n",temp); 
    //    
        int j;
        //  使用选择排序,从小到大排序字符数组temp里面的字符 
        for(i=0;i<strlen(temp)-1;i++) {
            
            for(j=i+1;j<strlen(temp);j++){
                
                if(temp[i]>temp[j]){
                    ch = temp[i];
                    temp[i]=temp[j];
                    temp[j]=ch;
                }
            } 
        }
        
    //    printf("排序后的结果为:\n");
        printf("%s",temp);
        
        return 0;
              
    } 
    

    img

    评论 编辑记录

报告相同问题?

悬赏问题

  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused