jskfn恶口 发表于 2016-12-10 22:07:51

求解一道字符串的问题

题目描述
盐是对人类生存具有重要意义的物质之一。当中国古人从肉食为主转向谷食为主的时候,吃盐的需求就发生了,因为动物血肉里面包含有足够人体所需的盐分,而谷 物本身不包含盐分。在长达几十万年的旧石器时代,人类以狩猎为生,身体早已适应了肉食带来的微量元素组合。到了新石器时代晚期的2300 BC前后,在今鲁西豫东地区,中国古人才发展出五谷农业并开始以谷食为主的生活,这样,以食盐为基本调味品的饮食改变了原先适应已久的微量元素组合,直接 导致了与吃盐有关的新型疾病的产生。为了治疗吃盐引起的新型疾病,针灸术就应运而生了。

盐的英文是salt,现在极缺,请找出输入中所有包含salt的行,不管大小写,是salt就要。

输入
若干行包含salt SALT sAlt等等的英文

输出
所有包含salt这个部分的行

样例输入
Salt is necessary
Water is not sAlt
as salT as you can make it
soy-bean sauce can be saLt
soy-bean sauce only
bean soy-bean sauce

样例输出
Salt is necessary
Water is not sAlt
as salT as you can make it
soy-bean sauce can be saLt


这是我的代码

#include<stdio.h>
#include<string.h>
int choice(char a)
{
        int i,b,n;
        n=strlen(a);
        for(i=0;i<n;i++)
        {
                if(a=='s'||a=='S')
                {
                        if(a=='a'||a=='A')
                        {
                                if(a=='l'||a=='L')
                                {
                                        if(a=='t'||a=='T')
                                        {
                                                b=0;
                                        }
                                }
                        }
                }
        }
        if(b==0)
        printf("%s",a);
        printf("\n");
}
int main()
{
        char a;
        int i,n,b=0;
        while(gets(a)!=NULL)
        {
        choice(a);
        }
        return 0;
}


为什么在我加了while循环后,函数内的if判断就失效了,如果没有while,又是可行的

jskfn恶口 发表于 2016-12-10 22:11:00

{:10_266:}

凡人也好 发表于 2016-12-11 00:42:42

本帖最后由 凡人也好 于 2016-12-11 00:50 编辑

if(b==0)
      printf("%s",a);
      printf("\n");
这一段楼主的意思应该是两个printf()都在if底下吧,两句话需要用花括号括起来。
if(b==0)
{
      printf("%s",a);
      printf("\n");
}
(ps:为何不用 printf("%s\n",a);呢……)
然后子函数里初始化变量b时最好手动赋一个不为0的数吧,个人建议。

jskfn恶口 发表于 2016-12-11 18:28:11

凡人也好 发表于 2016-12-11 00:42
这一段楼主的意思应该是两个printf()都在if底下吧,两句话需要用花括号括起来。

(ps:为何不用 printf ...

不不不,这里不是一起的,仅仅只是在输完一个数后的回车

xw0314 发表于 2016-12-11 20:12:26

本帖最后由 xw0314 于 2016-12-11 20:13 编辑

{:5_99:}strstr不就搞定了吗,还这么多次循环。你要这样写也不是不可以,用isupper和islower判断字母就可以了
页: [1]
查看完整版本: 求解一道字符串的问题