c语言程序选择,C语言选择结构程序设计

C语言程序设计-选择结构程序设计

if语句

switch语句

选择结构程序设计举例

if语句[三种形式]

1、单分支选择if语句

语句形式:

if(表达式) 语句;

语句执行流程:如果语句返回值为真,就执行语句,否则路过语句;

example:

从键盘输入两个整数a和b,如果a大于b则交换两个数,最后输出两个数。

#include

void main()

{

int a,b,t;

scanf("%d,%d",&a,&b);

if(a>b)

{t=a;a=b;b=t;}

printf("a=%d,b=%d\n",a,b):

}

注意:

<1>if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号{}将需要执行的多个语句括起,形成一个复合语句。

<2>if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。

2、双分支选择if语句

语句形式:

if(表达式) 语句1;

else 语句2;

语句执行流程:

判断表达式返回值,若为真,则执行语句1,若为假,则执行语句2;

example:

输入两个整数,输出其中大的数。

#include

#include

void main()

{

int x,y,max;

scanf("%d,%d",&x,&y);

if(x>y)max=x;

else max=y;

printf("max=%d\n",max);

}

注意:if和else语句之间只能一个语句,当if~else之间的语句不只一句时,应用一对{}将语句括起。

if(a>b){a++;b++;}

else{a=0;b=10}

3、多分支选择if语句

语句形式:

if(表达式1) 语句1;

else if(表达式2) 语句2;

.....

else if(表达N) 语句N;

else 语句 N+1;

提示:

<1>当if语句中出现多个if与else的时候,要特别注意它们之间的匹配关系,否则就可能导致程序逻辑错误。else与if的匹配原则:就近一致原则;即else总是与前面的最近的if相匹配。

<2>if语句中条件的写法应尽量简单。

4、if语句的嵌套

语句含义:当if语句中又包含若干个if语句时,则构成了if语句嵌套的情况。

语句形式:

A、if(表达式1)

if(表达式2)

语句1;

B、if(表达式1)

if(表达式2)

语句1;

clse

语句2;

语句执行流程:else与if配对原则:就近一致原则;else与同一层最接近它,而又没有其它else语句与之相匹配的if语句配对。

switch语句

1、语句形式:

switch (表达式) //不能接分号,根据表达式的不同值,选择不同程序分支,又称开关语句;数量型或字符型;

{

case 常量1:语句1;

case 常量2:语句2;

case 常量3:语句3;

....

case 常量n:语句n;

default:语句n+1; }

2、执行流程:

example:

假设用0、1、2.....6分别表示星期日、星期一、..星期六,现在输入一个数字,输出对应的星期几的英文单词。如果输入3,输出"Wednesday"。

#include "stdio.h"

void main()

{

int n;

scanf("%d",&n);

switch(n)

{

case 0:printf("Sunday\n");

case 1:printf("Monday\n");

case 2:printf("Tuesday\n");

case 3:printf("Wednesay\n");

case 4:printf("Thursday\n");

case 5:printf("Friday\n");

case 6:printf("Saturday\n");

default:printf("ERROR");

}

}

在switch语句中,case常量表达式只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完后自动跳出整个switch语句,因此会继续执行所有后面语句的情况。为此,C语言提供了一种break语句,其功能可以帮助跳出它据的switch语句。

void main()

{

int n;

scanf("%d",&n);

switch(n)

{

case 0:printf("Sunday\n");break;

case 1:printf("Monday\n");break;

case 2:printf("Tuesday\n");break;

case 3:printf("Wednesay\n");break;

case 4:printf("Thursday\n");break;

case 5:printf("Friday\n");break;

case 6:printf("Saturday\n");break;

default :printf("ERROR");

}

}

3、说明

多个case语句可以共用一组执行语句。

switch(grade)

{

case 'A':

case 'B':

case 'c':printf("grade>=60\n");break;

default :printf("grade<60");

}

各case和default子句的先后顺序可以变动,不影响运行结果。

default语句可以省略不用。

case和default与其后面的常量表达式间至少有一个空格。

switch语句可以嵌套,break语句只跳出安所在的switch语句。

example:

企业发放的资金根据利润来提成,从键盘输入当月利润,求尖发放的资金总数?

#include

void main()

{

float x,y;

int n;

scanf("%f",&x);

n=(int)x/10;

if((int)x==0)n--;

switch(n)

{

case 0:y=x*0.1;break;

case 1:y=x*0.12;break;

case 2:case 3:y=x*0.14;break;

case 4:case 5:y=x*0.16;break:

case 7:case 7:y=x*0.18;break;

default :y=x*0.2;

}

printf("y=%.2f\n",y);

}

example:

将任意三个数按从大到小的顺序输出。

#include "stdio.h"

void main()

{

int x,y,z,t;

scanf("%d,%d,%d",&x,&y,&z);

if(x

if(y

if(x

printf("%d,%d,%d\n",x,y,z);

}

example:

从键盘输入一个年份,判断是否是闰年。

#include

void main()

{

int year;

scanf("%d",&year);

if(year@0==0||(year%4==0&&yera0!=0))

printf("%d is a leap year\n",year);

else

printf("%d is not a leap year\n",year);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值