第4章 选择结构程序设计

C语言有两种选择语句:

if 语句,实现两个分支的选择结构

switch 语句,实现多分支的选择结构

输入3个数a,b,c,要求按由小到大的顺序输出。
可以先用伪代码写出算法:
if a>b,a和b对换 (a是a、b中的小者)
if a>c,a和c对换 (a是三者中最小者)
if b>c,b和c对换 (b是三者中次小者)
顺序输出a,b,c #include <stdio.h>
int main()
{ float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{ t=a; a=b; b=t; }
if(a>c)
{ t=a; a=c; c=t; }
if(b>c)
{ t=b; b=c; c=t; }
printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
return 0;
}

最常用的3种 if 语句形式:

①if (表达式) 语句1

②if (表达式) 语句1

else 语句

③if(表达式1) 语句1

else if(表达式2) 语句2

else if(表达式3) 语句3



else if(表达式m) 语句m

else 语句m+1

关系运算符及其优先次序

C语言提供6种关系运算符:

   ① <  (小于)   ② <=     (小于或等于)
③ > (大于) ④ >= (大于或等于)
⑤ == (等于) ⑥ != (不等于)

c>a+b       等效于  c>(a+b)
a>b==c 等效于 (a>b)==c
a==b<c 等效于 a==(b<c)
a=b>c 等效于 a=(b>c)

关系表达式

用关系运算符将两个数值或数值表达式连接起来的式子

关系表达式的值是一个逻辑值,即“真”或“假”

在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

逻辑运算符及其优先次序

3种逻辑运算符:

&&(逻辑与) ||(逻辑或) !(逻辑非)

&&和||是双目(元)运算符

!是一目(元)运算符

逻辑表达式:用逻辑运算符将关系表达式或其他逻辑量连接起来的式子

判断年龄在13至17岁之内?
age>=13 && age<=17
判断年龄小于12或大于65?
age<12 || age>65

判别某一年是否闰年,用逻辑表达式表示
闰年的条件是符合下面二者之一:
能被4整除,但不能被100整除,如2008
能被400整除,如2000
(year%4 == 0 && year%100 !=0) || year%400 == 0
如果表达式值为1,则闰年;否则为非闰年
条件表达式的一般形式为
表达式1?表达式2: 表达式3 条件运算符的执行顺序:
求解表达式1
若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值
若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值
用switch语句实现多分支选择结构
例4.6 要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分 ,D等为 60分以下 。成绩的等级由键盘输入。

#include <stdio.h>
int main()
{ char grade;
scanf("%c",&grade);
printf("Your score:");
switch(grade)
{ case 'A': printf("85~100\n");break;
case 'B': printf("70~84\n");break;
case 'C': printf("60~69\n");break;
case 'D': printf("<60\n");break;
default: printf("enter data error!\n");
}
return 0;
}

switch语句的作用是根据表达式的值,使流程跳转到不同的语句

switch语句的一般形式:

switch(表达式)
{ case 常量1:语句1
case 常量2:语句2
┇ ┇ ┇
case 常量n:语句n
default : 语句n+1
}
编写程序,用switch语句处理菜单命令。

#include <stdio.h>
int main()
{ void action1(int,int),action2(int,int);
char ch; int a=15,b=23;
ch=getchar();
switch(ch)
{ case 'a':
case ‘A’: action1(a,b); break;  
case 'b':
case ‘B’: action2(a,b); break;
default: putchar(‘\a’);
}
return 0;
}
void action1(int x,int y)
{
printf("x+y=%d\n",x+y);
}
void action2(int x,int y)
{
printf("x*y=%d\n",x*y);
}
写一程序,判断某一年是否闰年。
用变量leap代表是否闰年的信息。若闰年,令leap=1;非闰年,leap=0。最后判断leap是否为1(真),若是,则输出“闰年”信息 #include <stdio.h>
int main()
{int year, leap;
printf("enter year:"); scanf("%d",&year);
if (year%4==0)
if (year%100==0)
if (year%400==0) leap=1;
else leap=0;
else leap=1;
else leap=0;
if (leap) printf("%d is ",year);
else printf("%d is not ",year);
printf("a leap year.\n");
return 0;
}
求a*x^2+b*x+c = 0方程的根

#include <stdio.h>
#include <math.h>
int main()
{ double a, b, c, disc, x1, x2, realpart, imagpart;
scanf("%lf,%lf,%lf",&a,&b,&c);
printf("The equation ");
if(fabs(a)<=1e-6) printf("is not a quadratic\n");
else
{disc=b*b-4*a*c;
if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n", -b/(2*a));
else
if(disc>1e-6)
{ x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);
}
if(fabs(a)<=1e-6) printf("is not a quadratic\n");
else
{disc=b*b-4*a*c;
if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n", -b/(2*a));
else
if(disc>1e-6)
{ x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);
}
else
{ realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf(" has complex roots:\n");
printf("%8.4f+%8.4fi\n“, realpart, imagpart);
printf("%8.4f-%8.4fi\n", realpart, imagpart);
}
}
return 0;
}
运输公司对用户计算运输费用。路程(s km)越远,每吨·千米运费越低。
标准如下:
s < 250 没有折扣
250≤s < 500 2%折扣
500≤s < 1000 5%折扣
1000≤s < 2000 8%折扣
2000≤s < 3000 10%折扣
3000≤s 15%折扣 #include <stdio.h>
int main()
{
int c,s;
float p,w,d,f;
printf("please enter price,weight,discount:");
scanf("%f,%f,%d",&p,&w,&s);
if(s>=3000) c=12;
else c=s/250;
switch(c)
{ case 0: d=0; break;
case 1: d=2; break;
case 2:
case 3: d=5; break;
case 4:
case 5:
case 6:
case 7: d=8; break;
case 8: case 9: case 10:
case 11: d=10; break;
case 12: d=15; break;
}
f = p * w * s * (1 - d / 100);
printf(“freight=%10.2f\n”,f);
return 0;
}

【C语言】第4章 选择结构程序设计的更多相关文章

  1. 【C语言】第5章 循环结构程序设计

    第5章 循环结构程序设计 三种基本循环控制结构 使用while语句实现循环 先判断条件表达式,后执行循环体语句 while (循环条件表达式) { 循环体 } 用do-while语句实现循环 先无条件 ...

  2. Java 第四章 选择结构2

    第四章 选择结构 (二) switch 选择结构的执行流程是怎样的? switch 选择结构中break关键字的作用? 本章目标 掌握 switch 选择结构 能够综合运用 if 选择结构 和 swi ...

  3. Java 第三章 选择结构

    第三章   选择结构 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容& ...

  4. 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶

    <C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...

  5. 第4章 简单的C程序设计——选择结构程序设计

    在顺序结构中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必作任何判断.实际上,很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两 ...

  6. 160809212田京诚C语言程序设计实验2 选择结构程序设计_进阶

    实验2-6 猜数字游戏 实验要求: 编写一个C程序实现一个[1-100]以内的猜数字游戏. (1)       系统随机产生一个[1-100]之间的随机数. (2)       输入任意一个数字.数字 ...

  7. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  8. Java 第三章 选择结构1

    选择结构(一) 会使用基本的 if 选择结构 掌握逻辑运算符,掌握多重 if 选择结构 , 掌握嵌套 if 选择 结构 为什么需要 if 选择结构 例如: 如果张浩的 java 考试成绩大于 98分, ...

  9. 使用java理解程序逻辑 第三章 选择结构一

    if 选择结构: if(条件){       代码块  //条件成立后要执行的代码.可以是一条语句,也可以是一组语句 } 可以处理单一或组合条件的情况. if-else 选择结构: if(条件){   ...

随机推荐

  1. this的四种用法!

    经常会有人问到this的用法,其实简单来说,this有四种应用场景,分别是在构造函数上.对象属性中.普通函数中.call和apply方法中. 首先我们来看第一种:在构造函数中的用法 第二种是在在对象属 ...

  2. python -- 正则表达式&re模块(转载)

    1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...

  3. infomation_schema基本使用

    一.infomation_schema库 把 information_schema 看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信息.如数据库名,数据库 ...

  4. js之检测浏览器

    getBrowser () { let ua = navigator.userAgent.toLocaleLowerCase() let browserType = null if (ua.match ...

  5. js 倒计时退出

    <p>您已提交成功!<span id='submit_second'></span></p> $("#submit_second") ...

  6. LeetCode通关:求次数有妙招,位运算三连

    分门别类刷算法,坚持,进步! 刷题路线参考: https://github.com/chefyuan/algorithm-base 大家好,我是刷题困难户老三,这一节我们来刷几道很有意思的求次数问题, ...

  7. a href="tel" 拨打电话

    电话号码是固定的: <a href="'tel:10086">10086</a> 电话号码是动态获取时: 走默认的方式失败 <a href=" ...

  8. Tensorflow2对GPU内存的分配策略

    一.问题源起 从以下的异常堆栈可以看到是BLAS程序集初始化失败,可以看到是执行MatMul的时候发生的异常,基本可以断定可能数据集太大导致memory不够用了. 2021-08-10 16:38:0 ...

  9. Greenplum数仓监控解决方案(开源版本)

    Greenplum监控解决方案 基于Prometheus+Grafana+greenplum_exporter+node_exporter实现 关联图 一.基本概念 1.Prometheus ​ Pr ...

  10. Grid布局如何设置动画效果

    CS代码 新增 GridLengthAnimation继承自AnimationTimeline public class GridLengthAnimation : AnimationTimeline ...