求解一道字符串的问题
题目描述盐是对人类生存具有重要意义的物质之一。当中国古人从肉食为主转向谷食为主的时候,吃盐的需求就发生了,因为动物血肉里面包含有足够人体所需的盐分,而谷 物本身不包含盐分。在长达几十万年的旧石器时代,人类以狩猎为生,身体早已适应了肉食带来的微量元素组合。到了新石器时代晚期的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,又是可行的 {:10_266:} 本帖最后由 凡人也好 于 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的数吧,个人建议。
凡人也好 发表于 2016-12-11 00:42
这一段楼主的意思应该是两个printf()都在if底下吧,两句话需要用花括号括起来。
(ps:为何不用 printf ...
不不不,这里不是一起的,仅仅只是在输完一个数后的回车 本帖最后由 xw0314 于 2016-12-11 20:13 编辑
{:5_99:}strstr不就搞定了吗,还这么多次循环。你要这样写也不是不可以,用isupper和islower判断字母就可以了
页:
[1]