≡菜单

C If和Switch Case示例(如果,如果是,则是,如果是,则嵌套)

控制条件是C编程语言的基本组成部分。在本教程中,我们将通过一些易于理解的示例介绍控制条件。

有两种类型的条件:

  • 决策条件说明
  • 选择条件说明

让’借助示例了解这两种类型。

决策条件说明

条件如‘if’,“ if-else”,“ if-else-if”,“ nested if”,三元条件等均属于此类。

1.如果条件

这是C语言中最基本的条件-“ if”条件。如果程序员只想在任何条件通过时才执行某些语句,则可以使用此单个“ if”条件语句。 “ if”条件的基本语法如下:

if (expression) {
    Statement 1;
    Statement 1;
    ..
    ..
}

现在,我们应该将程序设置为“如果”状态。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
    printf("Can not execute, command line argument expected 通过 Program\n");
    exit(0);
}
return 0;
}

上面程序的输出如下。

$ ./if_cond
Can not execute, command line argument expected 通过 Program

在上面的程序中,如果两个命令行参数没有传递给程序,则程序员希望退出程序。我们可以看到程序可执行文件是否在没有任何参数的情况下运行,在控制台上显示消息并退出了程序。

2. If-Else条件

这是C语言中的双向条件-“ if-else”条件。如果程序员想在一个条件成功的情况下执行一组语句,而在其他所有情况下要执行另一条语句,则使用“ if-else”条件。执行'if'case语句或执行'else'case语句。 “ if-else”条件的基本语法如下:

if (expression1) {
    Statements;
} else {
    Statements;
}

现在,下面提供了一个非常基本的程序,用于检查数字是偶数还是奇数,这是为了了解“ if-else”条件的用法。

#include <stdio.h>
int main(int argc, char *argv[]) {
int num;
printf("\nEnter any number to check even or odd :");
scanf("%d", &num);
if (num%2 == 0) {
    printf("%d是偶数\ n",num);
} else {
    printf("%d是奇数\ n",num);
}
return 0;
}

输出:

$ ./if-else_cond

Enter any number to check even or odd :23
23 is 奇
$ ./if-else_cond

Enter any number to check even or odd :24
24 is 甚至

在上述程序中,程序员希望用户输入要检查的数字是否可以被2整除。如果条件为真,则数字显示为“偶数”,否则数字显示为“ 奇”。

3.三元运算符

除了“ if-else”条件外,还有另一种语法是三元运算符,但是提供了“ if-else”条件的功能。三元运算符的基本语法如下:

Condition expression ? if condition TRUE, return value1 : Otherwise, return value2;

例如,

#include <stdio.h>
int main(int argc, char *argv[]) {
int num;
printf("\nEnter any number to check even or odd :");
scanf("%d", &num);
(num%2==0) ? printf("%d是偶数\ n",num):printf("%d是奇数\ n",num);
return 0;
}

输出:

$ ./a.out 

Enter any number to check even or odd :24
24 is 甚至
$ ./a.out 

Enter any number to check even or odd :23
23 is 奇

4. If-Else-If条件

这是C语言中的多向条件-“ if-else-if”条件。如果程序员想在不同条件下执行不同的语句,并且一次要在多个条件中执行单个条件,则可以使用此“ if-else-if”条件语句。一旦满足任何条件,“ if-else-if”条件就会终止。 “ if-else-if”条件的基本语法如下:

if (expression1) {
    Statements;
} else if (expression2) {
    Statements;
} else {
    Statements;
}

现在,下面给出了一个非常基本的程序,该程序用于将用户输入的颜色与水果进行映射,用于理解“ if-else-if”条件的用法。

#include <stdio.h>

int main(int argc, char *argv[]) {

char input_color[100] = {0};

printf("\nEnter color [red/green/yellow] to map with fruit :");
scanf("%s", input_color);

if (strncmp(input_color, "red", sizeof(input_color)) == 0) {
    printf("%s is mapped to APPLE\n", input_color);
} else if (strncmp(input_color, "green", sizeof(input_color)) == 0) {
    printf("%s is mapped to GRAPES\n", input_color);
} else if (strncmp(input_color, "yellow", sizeof(input_color)) == 0) {
    printf("%s is mapped to BANANA\n", input_color);
} else {
    printf("\nInvalid color entered :%s", input_color);
}

return 0;
}

输出:

$ ./if-else-if_cond 

Enter color [red/green/yellow] to map with fruit :green
green is mapped to GRAPES
$ ./if-else-if_cond 

Enter color [red/green/yellow] to map with fruit :yellow
yellow is mapped to BANANA
$ ./if-else-if_cond 

Enter color [red/green/yellow] to map with fruit :testcolor

Invalid color entered :testcolor

在上面的程序中,程序员希望用户输入颜色(如指示红色/绿色/黄色),然后将输入的颜色与“如果条件”中的红色进行比较,然后与“其他情况”中的颜色进行比较。在此,请注意,一旦任何条件匹配,“ if-else-if”条件就会终止。在这里,如果没有匹配'if'或'else if',则最后执行'else'条件,当输入无效颜色时,我们可以在上面的输出中看到。

5.嵌套条件

这是在C语言中嵌套if或if-ifse或if-else-if条件的。嵌套的if或if-else条件的基本语法如下:

if (expression1) {
    Statements;
    if (expression2) {
        Statements;
    } else {
        Statements;
    }
}

Given below is basic program using nested if conditions.
#include <stdio.h>

int main(int argc, char *argv[]) {

int i = 5;
int *ptr = &i;
int **double_ptr = &ptr; 

if (double_ptr != NULL) {

    if (ptr != NULL) {
        printf ("Now safe to access pointer, ptr contains %d", *ptr);
    }
}
return 0;
}

输出:

$ ./a.out 

Now safe to access pointer, ptr contains 5

在上面的程序中,如果使用条件则嵌套。在访问指针之前对它进行NULL检查总是比较安全的(更多信息 C指针 这里)。

在上面的代码片段中,以双指针为例。第一个“如果”条件是检查双指针(即double_ptr)是否为非NULL,然后仅继续访问内部指针(即ptr)。如果双指针为非NULL,则仅检查内部条件是否为NULL的嵌套“ if”条件。如果嵌套的“ if”条件正确,则可以安全地访问指针处的值。

选择条件说明

6.开关箱条件

开关盒是“ if-else-if”条件的替代选择。这里,给出了几种情况,以方便用户根据输入的内容选择大小写。下面给出了使用switch case语句的基本语法。

switch(expression) {
        case constant expression1:    
            statements1; break;
        case constant expression2:
            statements1; break;
         ..
         ..
        default : statementsN;
}

注意,switch语句和first case语句之间的任何语句都是死代码,永远不会执行。为了理解“切换”情况,创建了一个基本程序,其中根据用户输入的输入对两个数字进行基本算术运算。在切换情况下会处理几种算术运算情况。下面给出了使用“开关盒”的基本程序。

#include <stdio.h>
int main(int argc, char *argv[]) {
char ch;
int num1, num2;

printf("\nBasic operation:");
printf("\nAdd [a]");
printf("\nSubtract [s]");
printf("\nMultiply [m]");
printf("\nDivide [d]");

printf("\nEnter character for operation:");
scanf("%c", &ch);

printf("\nEnter two numbers for operation:");
printf("\nEnter num1=");
scanf("%d", &num1);
printf("\nEnter num2=");
scanf("%d", &num2);

switch (ch) {
    case 'a':
        printf("\nAddition of num1 and num2=%d", (num1+num2));
        break;

    case 's':
        printf("\nSubtraction of num1 and num2=%d", (num1-num2));
        break;

    case 'm':
        printf("\nMultiplication of num1 and num2=%d", (num1*num2));
        break;

    case 'd':
        printf("\nDivision of num1 and num2=%d", (num1/num2));
        break;
    case 'x':
        printf ("\nTest switch case1");
    case 'y':
        printf ("\nTest switch case2");
    default:
        printf("\nInvalid value eneterd");
        break;
}
printf("\n");
return 0;
}

输出:

$ ./a.out 

Basic operation:
Add [a]
Subtract [s]
Multiply [m]
Divide [d]
Enter character for operation:a

Enter two numbers for operation:
Enter num1=10

Enter num2=5

Addition of num1 and num2=15
$ ./a.out 

Basic operation:
Add [a]
Subtract [s]
Multiply [m]
Divide [d]
Enter character for operation:d

Enter two numbers for operation:
Enter num1=10

Enter num2=5

Division of num1 and num2=2
$ ./a.out 

Basic operation:
Add [a]
Subtract [s]
Multiply [m]
Divide [d]
Enter character for operation:G

Enter two numbers for operation:
Enter num1=10

Enter num2=5

Invalid value entered

在以上程序中,将为用户提供基本菜单,并允许程序中进行操作。要求用户输入显示操作的初始字符。还要求用户输入两个数字,在这些数字上将执行所选的算术运算。在用户输入所有内容之后,程序将检查输入是否包含切换用例,并在匹配的切换用例下执行语句;由于存在break语句,因此仅执行大小写匹配的语句。

请注意,如果在案例中没有给出break语句并且任何案例都匹配,那么即使以下案例条件不匹配,以下案例的语句也将被执行。我们可以从下面给出的输出中了解这一点。在此,根据代码,如果输入“ x”,则执行情况“ x”,并且没有break语句,因此执行情况“ x”以下的所有情况,而无需对以下情况进行任何条件检查。

$ ./a.out 

Basic operation:
Add [a]
Subtract [s]
Multiply [m]
Divide [d]
Enter character for operation:x

Enter two numbers for operation:
Enter num1=10

Enter num2=5

Test switch case1
Test switch case2
Invalid value entered

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 8 评论… 加一 }

  • 蒂姆·汉塞尔 2013年1月23日,上午10:03

    您的三元运算符示例:

    (num%2 == 0)吗? printf(“%d is 甚至\n”, num) : printf(“%d is 奇\n”, num);

    可以通过以下方式重写:

    printf(“%d is %s\n”, num, ((num%2==0)?”EVEN”:”ODD”) );

    展示三元运算符的灵活性。如您所展示的,这只是做同一件事的语法上不同的方式,但是上面的示例显示了一些代码的重用(一个printf而不是2,并且使用三元运算符的返回值作为该printf的参数)

    简单地用三元运算符语法进行重写和IF-ELSE会创建难以阅读的代码,而我包括的重写示例演示了(?:)运算符带到IF-ELSE无法使用的表的新增功能。

  • 杜斯科科西卡 2013年2月8日,上午4:33

    有两个问题,我已经看到您试图做到完整。
    现在我有两个问题。首先是关于三元运算符,就像在C ++中一样,C中有更多它们,您是否一直需要中断对象。

  • 杜斯科科西卡 2013年2月9日,上午4:37

    如果不清楚,请执行以下操作:
    (a>b)? c=’p’: (a<0) c='z' : c='m';

    而且,切换并不需要一直休息。

  • 杜斯科科西卡 2013年2月9日,上午4:39

    抱歉,我错过了一个?,在上面的代码中,我的错。
    您能找到我遗漏的位置吗?在上面的代码中….

  • 蒂姆·汉塞尔 2013年2月9日,下午2:51

    I’不知道我能理解你的问题,但是…

    三元运算符表示:三个操作数
    因此语法为:

    ?:

    这样你就可以’只需创建一个具有两个以上动作的动作即可。只有一个真实的行动和一个错误的行动。

    您可以嵌套三元运算符,但是存在潜在的键入问题。

  • 黄昏科西嘉 2013年2月11日,上午8:20

    问题是> Why You don’做出相同的挑战,并进行一些测验,以了解人们的理解方式。
    一些艰难的样品….

  • 巴布 2014年12月3日,上午3:52

    何时在交换语句中使用If-else if-else,反之亦然[重复]

  • 你好 2015年6月6日,上午4:24

    我如何使金额只能是if语句的50个表达式的倍数?

发表评论