程序设计基础之选择结构程序设计_第1页
程序设计基础之选择结构程序设计_第2页
程序设计基础之选择结构程序设计_第3页
程序设计基础之选择结构程序设计_第4页
程序设计基础之选择结构程序设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础—C语言程序设计2016.11第

4讲选择结构程序设计上一讲问题scanf(“%d”,”%d”,&a,&b);scanf(“%d%d”,&a,&b);输入时用20,30scanf(“%d,%d”,&a,&b);输入时用2030scanf(“%d,%d,&a,&b”);选择结构程序选择结构程序设计本讲

要点if语句switch语句程序举例选择结构程序设计

专业词汇logicalexpressionrelationalexpressionprioritystructureswitch

逻辑表达式关系表达式优先结构

开关

C语言及算法概述程序的灵魂-算法Algorithmif语句

if语句if语句的三种基本形式(1)if(表达式)

语句例:

if(x>y)

printf(“%d”,x);表达式语句真(非0)假(0)

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

语句1

else

语句2例:

if(x>y)

printf(“%d”,x);else

printf(“%d”,y);

条件

语句1

语句2YN

if语句if(表达式1)

语句1

elseif(表达式2)

语句2

elseif(表达式3)

语句3……

elseif(表达式m)

语句m

else

语句n

if语句说明:(1)3种形式的if语句中在if后面都有表达式,一般为逻辑表达式或关系表达式,但可以是能够判断出真假的表达式。(2)第二,第三种形式的if语句中,在每个else前面有一个分号,整个语句结束处有一个分号。(3)在if和else后面可以只含有一个内嵌的操作语句,也可以由多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。

if语句例.输入两个实数,按数值由小到大的顺序输出这两个数。

#include<stdio.h>

voidmain()

{floata,b,t;

scanf(“%f,%f”,&a,&b);

if(a>b)

{t=a;

a=b;

b=t;}

printf(“%.2f,%.2f\n”,a,b);}

if语句例.输入三个数a,b,c,

要求按由小到大的顺序输出。

na>ba>cb>ca和b交换a和c交换c和b交换yyynn

#include<stdio.h>

voidmain()

{

floata,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("%.2f,%.2f,%.2f\n",a,b,c);

}

if语句常犯错的问题!

#include<stdio.h>

voidmain()

{

floata,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("%.2f,%.2f,%.2f\n",a,b,c);

}

}

if语句例.输入三个数a,b,c,

要求按由小到大的顺序输出。

na>ba>cb>ca和b交换a和c交换c和b交换yyynn其他方法?

if语句if语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套。形式:if()if()

语句1else

语句2elseif()

语句3else

语句4例:if(下雨)if(有课)

带伞上课;else

继续睡;elseif(有课)

带包跑操;else

空手跑操;

if语句匹配规则:else总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对。例:if()

if()语句1else

if()语句2else语句3例:if() {if()语句1}else

if()语句2else语句3当if和else数目不同时,可以加花括号来确定配对关系。

if语句

-1

(x<0)例.有一个函数y=0(x=0),编一程序,输入一个x值,输出y值。

1(x>0)算法1:算法2: 输入x

输入x

若x<0,则y=-1

若x<0,则y=-1

若x=0,则y=0

否则: 若x>0,则y=1

若x=0,则y=0

输出y

若x>0,则y=1

输出y

if语句#include<stdio.h>voidmain(){intx,y;

scanf(“%d”,&x);

if(x<0)

y=-1;

else

if(x==0)

y=0;else

y=1;printf(“x=%d,y=%d\n”,x,y);}条件运算符:

y=x<0?-1:(x==0?0:1)

if语句if(x>=0)if(x>0)

y=1;elsey=0;elsey=-1;y=-1;if(x!=0)

if(x>0)

y=1;elsey=0;

y=0;

if(x>=0)

if(x>0)

y=1;else

y=-1;

if语句上一讲的例子延伸:

从键盘输入一个字母,判断是否是小写字母,若不是则转换为小写字母输出,否则直接输出该字母。#include<stdio.h>voidmain(){

charc1,c2;c1=getchar();c2=(c1>=‘A'&&c1<=‘Z')?(c1+32):c1;

printf(“%c\n”,c2);}

若使用if语句?

if语句上一讲的例子延伸:

输入三角形的三边长,若能构成三角形,则输出三角形面积;否则输出提示。#include<stdio.h>

#include<math.h>

voidmain()

{floata,b,c,s,area;

scanf(“%f,%f,%f”,&a,&b,&c);if((a+b>c)||(a+c>b)||(b+c>a))

{s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“area=%7.2f\n”,area);}elseprintf(“cannotconstruct!\n”);}?

C语言及算法概述程序的灵魂-算法Algorithm

switch语句

switch语句switch语句的格式:switch(表达式)

case常量表达式1:语句1

case常量表达式2:语句2…

case常量表达式n:语句n

default:语句n+1}例:switch(周几)

case

6:看电影;

case

7:睡一整天;default:上班;}

switch语句例:要求按照考试成绩的等级输出百分制分数段,用switch语句实现。chargrade;grade=getchar();

switch(grade){case

′A′∶printf(″85~100\n″);

case

′B′∶printf(″70~84\n″);

case

′C′∶printf(″60~69\n″);

case

′D′∶printf(″<60\n″);

default∶printf(″error\n″);}

switch语句说明:(1)switch后面括弧内的“表达式”,ANSI标准允许它为任何类型。(2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此

case后面的语句,若所有的case中的常量表达式的值都没有与表达式

的值匹配的,就执行default后面的语句。(3)每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾

的现象(对表达式的同一个值,有两种或多种执行方案)。

switch语句说明:(4)各个case和default的出现次序不影响执行结果。例如,可以先出

现“default:…”,再出现“case′D′:…”,然后是“case

′A′:…”。(5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只是起语句标号作用,并不是在该处进行

条件判断。应该在执行一个case分支后,可以用一个break语句来

终止switch语句的执行。(6)多个case可以共用一组执行语句。。

switch语句例:要求按照考试成绩的等级输出百分制分数段,用switch语句实现。chargrade;grade=getchar();

switch(grade){case

′A′∶printf(″85~100\n″);

case

′B′∶printf(″70~84\n″);

case

′C′∶printf(″60~69\n″);

case

′D′∶printf(″<60\n″);

default∶printf(″error\n″);}输入:B运行结果:70~8460~69<60error

switch语句例:要求按照考试成绩的等级输出百分制分数段,用switch语句实现。chargrade;grade=getchar();

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(″error\n″);}输入:B运行结果:70~84

C语言及算法概述程序的灵魂-算法Algorithm选择结构程序举例选择结构程序举例1.判断用户输入的年份是否是闰年。#include<stdio.h>

voidmain()

{intyear,leap;

scanf("%d",&year);

if(year%4==0)

{if(year%100==0)

{if(year%400==0)leap=1;

elseleap=0;}

elseleap=1;}

elseleap=0;

if

(leap)printf("%dis",year);

else

printf("%disnot",year);

printf("aleapyear.\n");}

运行结果:

1989↙

1989is

notaleapyear.2000↙

2000isaleapyear.选择结构程序举例2.求ax2+bx+c=0方程的解。基本算法:①a=0,不是二次方程。②b2-4ac>=0,有两个实根。③b2-4ac<0,有两个共轭复根。选择结构程序举例2.求ax2+bx+c=0方程的解。#include<stdio.h>

#include<math.h>

voidmain()

{

floata,b,c,disc,x1,x2,realpart,imagpart;

scanf("%f,%f,%f",&a,&b,&c);

printf("theequation");

if(fabs(a)<=1e-6)

printf(“%8.4f\n“,(-c/b));

else

{

disc=b*b-4*a*c;

if(disc>=0)

{

x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

printf(“%8.4fand%8.4f\n”,x1,x2);

}

else

{

realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a);

printf(“complexroots∶\n”);

printf(“%8.4f+%8.4fi\n”,realpart,imagpart);

printf(“%8.4f-%8.4fi\n”,realpart,imagpart);

}

}}

选择结构程序举例3.运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:

s<250km没有折扣

250≤s<500

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论