A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白小七 中级黑马   /  2016-8-9 23:34  /  1423 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
//3 10分
在控制台上输入一个字符串,过滤这个字符串,只保留这个字符串中的小写字母.
*/

#import <Foundation/Foundation.h>
#define LEN 20
int main(int argc, const char * argv[]) {
    //定义数组保存用户输入的字符串
    char str[LEN];
    NSLog(@"请您输入字符串");
    rewind(stdin);
   
    //接收用户输入的字符串
    fgets(str,LEN, stdin);
    size_t len = strlen(str);
    if (str[len-1] == '\n') {
        str[len-1] = '\0';
    }
   
    //遍历数组
    for (int i = 0; i<len; i++) {
        //判定是否为大写,如果为大写所有后面字母往前赋值
        if (str >='A' && str <= 'Z') {
            for (int j = i; j<len; j++) {
                str[j] = str[j+1];
            }
        }
        //再次判定交换后是否为大写,如果是不自增
        if (str >='A' && str <= 'Z') {
            i--;
        }
    }
    //再次遍历改变后的数组
    for (int i = 0; i<len; i++) {
        printf("%c",str);
    }
    printf("\n");
   
    return 0;
}



5 个回复

倒序浏览
交流下,我这个办法也可以哦

#import <Foundation/Foundation.h>
#define len 30
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        char ch[len];
        char ch2[len];
        int j = 0;
        NSLog(@"请输入字符串");
        scanf("%s",ch);
        for (int i =0; i< strlen(ch); i++) {
            
            if (ch[i]<='z' && ch[i] >= 'a') {
                ch2[j] = ch[i];
                j++;
            }
        }
        printf("%s\n",ch2);
    }
    return 0;
}
回复 使用道具 举报
不错的解法收藏了
回复 使用道具 举报
这个是点招题吗
回复 使用道具 举报
赞  解得不错  收藏
回复 使用道具 举报
还可以遍历出每个字符的个数
strlen 也可以求数组字符的长度是吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马