鱼C论坛

 找回密码
 立即注册
查看: 2917|回复: 4

求解一道字符串的问题

[复制链接]
发表于 2016-12-10 22:07:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述
盐是对人类生存具有重要意义的物质之一。当中国古人从肉食为主转向谷食为主的时候,吃盐的需求就发生了,因为动物血肉里面包含有足够人体所需的盐分,而谷 物本身不包含盐分。在长达几十万年的旧石器时代,人类以狩猎为生,身体早已适应了肉食带来的微量元素组合。到了新石器时代晚期的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[1000])
{
        int i,b,n;
        n=strlen(a);
        for(i=0;i<n;i++)
        {
                if(a[i]=='s'||a[i]=='S')
                {
                        if(a[i+1]=='a'||a[i+1]=='A')
                        {
                                if(a[i+2]=='l'||a[i+2]=='L')
                                {
                                        if(a[i+3]=='t'||a[i+3]=='T')
                                        {
                                                b=0;
                                        }
                                }
                        }
                }
        }
        if(b==0)
        printf("%s",a);
        printf("\n");
}
int main()
{
        char a[1000];
        int i,n,b=0;
        while(gets(a)!=NULL)
        {
        choice(a);
        }
        return 0;
}


为什么在我加了while循环后,函数内的if判断就失效了,如果没有while,又是可行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-10 22:11:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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的数吧,个人建议。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

(ps:为何不用 printf ...

不不不,这里不是一起的,仅仅只是在输完一个数后的回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-11 20:12:26 | 显示全部楼层
本帖最后由 xw0314 于 2016-12-11 20:13 编辑

strstr不就搞定了吗,还这么多次循环。你要这样写也不是不可以,用isupper和islower判断字母就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 17:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表