2016-04-25 72 views
-2

我想在c编程中编写一个代码,提示人们回答布尔值yesno问题,然后相应地运行该操作。而不是IFswitchC编程布尔表达式

include <stdlib.h> 
include <stdio.h> 

int main() 
{ 
    int children; 
    int age; 

    printf("please enter your age"); 
    scanf("%d", age); 


    printf("are you married?, please enter y for Yes and n for No"\n\n); 
    scanf("%s", mstatus); 

    if (mstatus is y or Y) 
    { 
     printf("how many children do you have: \n\n") 
     scanf("%d", children) 
    } 

    return 0; 
} 
+0

请去重读基础。你的代码充满了问题。 –

+0

Quote:而不是IF或开关?你能解释一下吗? – 4386427

+0

缩进你的代码。这只是许多其他问题之一。 –

回答

0
scanf("%d", age); 

应:

scanf("%d", &age); // missing an ampersand here. 


printf("are you married?, please enter y for Yes and n for No"\n\n); 

printf("are you married?, please enter y for Yes and n for No\n\n"); // newlines should be inside the format string 

虽然对方的回答解决您的问题,我相信使用一个switch-case这里更好:

printf("are you married?, please enter y for Yes and n for No\n\n"); 
scanf("%c",&c); 


switch(c) 
{ 
case('y'): 
    printf("how many children do you have: \n\n"); 
    scanf("%d",&children); // Remember to put ampersand here 
    break; 
case('n'): 
    printf("Enjoy bachelorhood\n"); 
    break; 
default: 
    printf("Choice neither y nor n, Confused about marriage?\n"); 
} 
+0

谢谢sjsam。我看到了一些示例,并测试了这项工作。参考变量是否会有不同? – DerCha

+0

只要读取一次,您就可以使用该变量。那就是你不需要'printf(“%c”,&c)''。正确的形式是'printf(“%c”,c)' – sjsam

1

虽然没有描述你所面临的具体问题,我认为我可以做以下的观察有助于:

  • 首先,scanf()需要读取一个指针为了工作。

    您已经声明:

    int children; 
    int age; 
    

    ,所以你需要修改你的scanf()语句:

    scanf("%d", &age); 
    

    scanf("%d", &children); 
    

    相应。

  • 此外,您用来检查答案的条件也需要修改。将其更改为:

    if (mstatus == 'y' || mstatus == 'Y') 
    
  • 另外,更改以下行:

    printf("are you married?, please enter y for Yes and n for No"\n\n); 
    

    到:

    printf("are you married?, please enter y for Yes and n for No\n\n"); 
    

,你不能有引号外面的换行。

  • 最后,声明:

    printf("how many children do you have: \n\n") 
    scanf("%d", children) 
    

    都需要在以分号结尾是有效的,就像这样:

    printf("how many children do you have: \n\n"); 
    scanf("%d", children); 
    
+0

谢谢。我可否知道是否有bool yes或no这样的事情?如果是的话会更好比if()或switch()? – DerCha

+0

@DerCha你的意思是'yes'或'no'作为变量的值吗?如果这是你所问的,它不存在。 “是”和“否”被视为字符串。 – Marievi