标题:while判断符合多个任意条件为什么只能判断其中一个?
只看楼主
会飞的叶子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-6-18
结帖率:0
已结贴  问题点数:20 回复次数:10 
while判断符合多个任意条件为什么只能判断其中一个?
目的是想在提问你叫什么名字或者你的名字叫什么的时候随便循环问哪个都能回答,但是实际上循环一次后只能符合一个提问的问题怎么回事呢?
#include<stdio.h>
#include<string.h>
int main(int argc, char*argv[])
{

    char buffer[100];

    while (strcmp(buffer, "没有") != 0)
    {

        scanf("%s", buffer);
        while (strcmp(buffer, "你叫什么名字")||strcmp(buffer,"你的名字叫什么\n")== 0)
        {
            printf("Siri:我的名字叫Siri\n");
            break;
        }
        while (strcmp(buffer, "你能为我做什么") == 0)
        {
            printf("Siri:我的功能可强大了,能做任何你想做的事情\n");
            break;
        }
        printf("Siri:hello,你好主人,有什么需要帮助的吗?\n");
    }
        printf("Siri:再见!\n");
        return 0;
   
}
搜索更多相关主题的帖子: include Siri 
2016-06-18 01:47
会飞的叶子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-6-18
得分:0 
求各位大哥大姐们帮帮忙,才学不久的,不知道怎么回事麻烦讲解下
2016-06-18 01:48
会飞的叶子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-6-18
得分:0 
求助求助
2016-06-18 01:49
会飞的叶子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-6-18
得分:0 
有人吗
2016-06-18 01:50
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:5 
比较不用while的

#include<stdio.h>
 #include<string.h>
 int main(int argc, char*argv[])
 {

     char buffer[100];

     while (strcmp(buffer, "没有") != 0)
     {

         scanf("%s", buffer);
         if (strcmp(buffer, "你叫什么名字")||strcmp(buffer,"你的名字叫什么\n")== 0)
         {
             printf("Siri:我的名字叫Siri\n");
             break;
         }
         else if (strcmp(buffer, "你能为我做什么") == 0)
         {
             printf("Siri:我的功能可强大了,能做任何你想做的事情\n");
             break;
         }
         printf("Siri:hello,你好主人,有什么需要帮助的吗?\n");
     }
         printf("Siri:再见!\n");
         return 0;
     
 }

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-06-18 08:43
寂兮廖兮
Rank: 2
等 级:论坛游民
帖 子:22
专家分:27
注 册:2016-6-13
得分:5 
(strcmp(buffer, "你叫什么名字")||strcmp(buffer,"你的名字叫什么\n")== 0)
好像不能这么表达吧
应该是
(strcmp(buffer, "你叫什么名字")==0||strcmp(buffer,"你的名字叫什么\n")== 0)

还有你主函数里为什么会有形式参数,这个我不是很懂啊。。。
2016-06-18 12:26
凌霄之誌
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:145
专家分:895
注 册:2016-6-14
得分:5 
  把这行改为这个
  while (strcmp(buffer, "你叫什么名字")==0||strcmp(buffer,"你的名字叫什么")== 0)
需要判断两个都是否符合,,而且你打的是“strcmp(buffer,"你的名字叫什么\n")”  其中输入的时候就要输入 ' \n  '这个

因为有悔,所以披星戴月;因为有梦,所以奋不顾身!!!
2016-06-18 13:27
会飞的叶子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-6-18
得分:0 
回复 7楼 凌霄之誌
谢谢 受教了
2016-06-18 17:27
会飞的叶子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-6-18
得分:0 
回复 7楼 凌霄之誌
一语惊醒梦中人 真没发现这个失误
2016-06-18 17:28
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
得分:5 
#include<stdio.h>
#include<string.h>
int main(int argc, char*argv[])
{
    char buffer[30];
    printf("Siri:hello,你好主人,有什么需要帮助的吗?\n");
    while (strcmp(buffer, "y") != 0)
    {
        scanf("%s", buffer);
        if ((strcmp(buffer, "你叫什么名字")==0)||(strcmp(buffer,"你的名字叫什么\n")== 0))
            printf("Siri:我的名字叫Siri\n");
        if (strcmp(buffer, "你能为我做什么") == 0)
            printf("Siri:我的功能可强大了,能做任何你想做的事情\n");      
    }
        printf("Siri:再见!\n");
        return 0;  
}
输入'y‘就能结束。
用if最实在,非要用while也不是不行,但是不小心就会变成死循环。
2016-06-18 19:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466066-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.345404 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved