黑马程序员技术交流社区

标题: 一道题 [打印本页]

作者: 白小七    时间: 2016-8-9 23:34
标题: 一道题
/*
//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;
}




作者: 李江波    时间: 2016-8-10 09:34
交流下,我这个办法也可以哦

#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;
}

作者: anan安    时间: 2016-8-10 23:49
不错的解法收藏了
作者: 爱面包的文森特    时间: 2016-8-11 11:28
这个是点招题吗
作者: 18072727834    时间: 2016-8-11 22:10
赞  解得不错  收藏
作者: anan安    时间: 2016-8-11 23:41
还可以遍历出每个字符的个数
strlen 也可以求数组字符的长度是吧?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2