如果语句给出错误结果

问题描述 投票:0回答:1

我正在尝试编写一个程序,该程序需要用户输入区号,并基于此表显示该区号所对应的Area:

区号-----------主要城市

229 ---------------------奥尔巴尼

404 ---------------------亚特兰大

470 ---------------------亚特兰大

478 ---------------------梅肯

678 ---------------------亚特兰大

706 ---------------------哥伦布

762 ---------------------哥伦布

770 ---------------------亚特兰大

912 ---------------------萨凡纳

这是我在问题下方的代码,这是我的IF语句给我不正确的结果,例如,如果我输入912,它将给我“ Atlanta”,这是不正确的,因为在IF语句中它指出了912等于用户输入“ Savannah”应显示。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdbool.h>
int main(){

int AreaNum;

printf("enter a area code: ");
scanf("%d", &AreaNum);

if (AreaNum == 229){
printf("Albany");
}else if (AreaNum == 404 || 470 || 678 || 770){
printf("Atlanta");
}else if (AreaNum == 478){
printf("Macon");
}else if (AreaNum == 706 || 762){
printf("Columbus");
}else if (AreaNum == 912){
printf("Savannah");
}else
printf("Area code not recognized");

  return 0;
}

c if-statement int printf
1个回答
0
投票

AreaNum == 404 || 470 || 678 || 770不会执行您想要的操作,并且实际上始终会评估为true。您有两种选择。要么将它们全部写长,例如AreaNum == 404 || AreaNum == 470 || AreaNum == 678 || AreaNum == 770,要么使用switch语句而不是if语句,例如:

switch(AreaNum) {
case 229:
    printf("Albany");
    break;
case 404:
case 470:
case 678:
case 770:
    printf("Atlanta");
    break;
case 478:
    printf("Macon");
    break;
case 706:
case 762:
    printf("Columbus");
    break;
case 912:
    printf("Savannah");
    break;
default:
    printf("Area code not recognized");
}
© www.soinside.com 2019 - 2024. All rights reserved.