【C语言】第4章 选择结构程序设计
第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章 选择结构程序设计的更多相关文章
- 【C语言】第5章 循环结构程序设计
第5章 循环结构程序设计 三种基本循环控制结构 使用while语句实现循环 先判断条件表达式,后执行循环体语句 while (循环条件表达式) { 循环体 } 用do-while语句实现循环 先无条件 ...
- Java 第四章 选择结构2
第四章 选择结构 (二) switch 选择结构的执行流程是怎样的? switch 选择结构中break关键字的作用? 本章目标 掌握 switch 选择结构 能够综合运用 if 选择结构 和 swi ...
- Java 第三章 选择结构
第三章 选择结构 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容& ...
- 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...
- 第4章 简单的C程序设计——选择结构程序设计
在顺序结构中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必作任何判断.实际上,很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两 ...
- 160809212田京诚C语言程序设计实验2 选择结构程序设计_进阶
实验2-6 猜数字游戏 实验要求: 编写一个C程序实现一个[1-100]以内的猜数字游戏. (1) 系统随机产生一个[1-100]之间的随机数. (2) 输入任意一个数字.数字 ...
- 黑马程序员——C语言基础 流程控制 选择结构和循环结构
---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...
- Java 第三章 选择结构1
选择结构(一) 会使用基本的 if 选择结构 掌握逻辑运算符,掌握多重 if 选择结构 , 掌握嵌套 if 选择 结构 为什么需要 if 选择结构 例如: 如果张浩的 java 考试成绩大于 98分, ...
- 使用java理解程序逻辑 第三章 选择结构一
if 选择结构: if(条件){ 代码块 //条件成立后要执行的代码.可以是一条语句,也可以是一组语句 } 可以处理单一或组合条件的情况. if-else 选择结构: if(条件){ ...
随机推荐
- 测试笔记01-Git
Git工具 Git 一个分布式版本管理工具, 学习资料: https://www.liaoxuefeng.com/wiki/896043488029600/1317161920364578 其中:解决 ...
- springMVC-12-整合spring和springmvc
问题1: 好像我们只需要使用springmvc的配置文件作为IOC容器就可以了 --> 需要进行Spring 整合SpringMVC吗? ----> 还是否需要再加入Spring的IOC容 ...
- 网络损伤仪WANsim的队列深度功能
什么是队列深度 在网络损伤仪WANsim中,队列是指一个用于缓存报文的缓冲池.深度是指缓冲池可以存储的最大数据量.当WANsim接受的报文超出了带宽限制的量时,溢出的报文会进入队列中. 我们可以在WA ...
- POJ3048
素数筛,数据范围不大,直接暴力筛. 坑:有个数据是 1 1,答案是1.差点没把我卡去世. 我的三观哪去了. #include<iostream> #include<cstdio> ...
- 简单图解OSI七层网络模型
Open Systems Interconnection(OSI)定义了一个网络框架:其以层为单位实现了各种协议,同时会将控制权逐层传递. 目前OSI主要作为教学工具被使用,其在概念上将计算机网络结构 ...
- Python - 赋值运算符
前置知识 先了解下变量: https://www.cnblogs.com/poloyy/p/15042257.html 再了解下算术运算符: https://www.cnblogs.com/poloy ...
- 双非本科字节跳动Android面试经验和心得体会分享(已拿offer)
新人报道,没有什么可分享的,就记录一些自己求职的体会和心得. 我是在校招补录的时候参加了今日头条的招聘,岗位是Android开发,最后成功拿到了入场券.但是这也丝毫不值得骄傲,大家都知道:技术日新月异 ...
- MapReduce框架原理--Shuffle机制
Shuffle机制 Mapreduce确保每个reducer的输入都是按键排序的.系统执行排序的过程(Map方法之后,Reduce方法之前的数据处理过程)称之为Shuffle. partition分区 ...
- Spring Cloud Alibaba - Gateway
Gateway Gateway简介 底层使用Netty框架,性能大于Zuul 配置gateway模块,一般使用yaml格式: server: port: 80 #spring boot actuato ...
- 启动或重启Oracle数据以及监听
(以下均为命令行形式) 1.切换到oracle数据库用户: su - oracle 2.查看数据库的监听状态: lsnrctl status 3.停止监听: lsnrctl stop 4.登陆到ora ...