C语言程序设计教程_第三章:选择结构_笔记整理

第三章 选择结构【】

3.1货币双向兑换

例1:设计程序,可以选择货币种类进行兑换

#include 
void TOUSD(double innum,double rate)
{
	double outnum;
	outnum=innum/rate;
	printf("可兑换%.2f美元\n",outnum); 
}
void TORMB(double innum,double rate)
{
	double outnum;
	outnum=innum*rate;
	printf("可兑换%.2f人名币\n",outnum); 
}
int main(void)
{
	char type;//接收用户选择 
	double innum,rate;//定义数目和汇率
	printf("请选择:\nA 人名币兑换美元\nB 美元兑换人名币\n"); 
	scanf("%c",&type);
	printf("请输入兑换数额和汇率,用逗号隔开:\n");
	scanf("%lf,%lf",&innum,&rate);
	if(type=='A')
		TOUSD(innum,rate);
	else
		TORMB(innum,rate);
	return 0;
}

3.2 条件判断的程序设计

对指定的条件进行判断,来决定执行哪个操作

3.3 必备知识

1 字符类型

数据是单个的字符,程序中使用与存储的实际上是该字符对应的编码,目前使用最广泛的是ASCII码,最高位是0,每个字符用7位编码,一个字符占一个字节

字符类型常量的两种表达方式
一般字符

用单引号括起来,区分大小写

转义字符

以\开头的序列称为转义字符,又称控制字符

以下都在\之后

‘ 单引号 “ 双引号 ? 问号 \ 一个反斜杠
a 产生声音信号 b 将当前位置后退一个字符 f 当前位置移到下一页开头 n 换行
r 当前位置移到本行开头 t 当前位置移到下一个tab位置 v 垂直制表符 123 八进制数 输出ASCII码
x3f 十六进制数 返回ASCII码 0 空字符
字符类型变量【重要 注意输出的格式控制符】

定义方式:char ch1=‘a’;

实际上是将a的ASCII码97存储在变量ch1的存储单元内,因此也可以直接将数字输出字符

char ch2=63;
printf("%d",ch2);//输出数字
printf("%c",ch2);//输出字符
字符类型数据与整型、浮点型数据参与算术运算

当运算符两边的操作数类型不想同时,系统先进行类型转换,将两者转换成一致的类型,向数据长度增加的方向进行

字符型数据进行赋值运算

①字符型数据赋值给整型变量,就是赋值ASCII码

②字符型数据赋值给长整型变量,扩展字符型数据的高位,若是无符号字符型数,扩展的高位补0;有符号,则扩展的高位补字符型数据的符号位

③长整型赋值给字符变量,只保留最后8位

例2:破解密码,用原字母后面第三个代替原字母

#include 
int main(void)
{
	char c1='J',c2='l',c3='s',c4='b';
	char ch1,ch2,ch3,ch4;
	ch1=c1+3;
	ch2=c2+3;
	ch3=c3+3;
	ch4=c4+3;
	printf("%c%c%c%c",ch1,ch2,ch3,ch4);
}

2 关系运算

< 小于 > 大于 <= 小于等于 >= 大于等于
== 等于 != 不等于
注意事项

①参与运算的操作数可以是任何基本类型的数据或表达式,字符作为操作数时用字符的ASCII码参与运算

②在判断两个操作数是否相当是,使用==而不是=

③比较两个实数是否相等,不能用==,因为计算机实际保存的是近似数字

3 逻辑运算

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

4 if条件结构

单条件的if语句

if 条件表达式

​ 语句//多行语句要用{}包起来

二选一的if语句

if 条件表达式

​ 语句1

else

​ 语句2

例3:输入两个实数,按从小到大顺序输出

#include 
int main(void)
{
	float a,b,t;
	printf("依次输入ab的值,用空格隔开:\n");
	scanf("%f %f",&a,&b);
	if(a>b)
	{
		t=a;
		a=b;
		b=t;
	}
	printf("%f %f",a,b);
	return 0;
}
if语句的嵌套

例4:求分段函数的值

#include 
int Y(int x)
{
	int y;
	if(x>=0)
		if(x>=5)
			y=x-5;
		else
			y=x+1;
	else
		y=-x;
	return y;
}
int main(void)
{
	int x,y;
	x=6;
	y=Y(x);
	printf("y=%d",y);
	return 0;
}

5 条件运算符和条件表达式

条件运算符?是唯一一个三元运算符:

表达式1?表达式2:表达式3

表达式1为真,则执行表达式2,否则执行表达式3,最后是返回一个值

例5:输入两个数求最大值

#include 
int main(void)
{
	int a,b,max;
	a=10;
	b=20;
	max=(a>b)?a:b;
	printf("%d",max);
	return 0;
}

6 switch结构

要处理分支的情况较多时,可以用switch结构来简化

例6:自动售货机卖4种商品,用户输入编号显示对应价格

#include 
void ShowPrice(int num)
{
	switch(num)
	{
		case 1:printf("薯片3元");break;
		case 2:printf("牛奶4元");break;
		case 3:printf("巧克力5元");break;
		case 4:printf("可乐6元");break;
		default:printf("输入错误"); 
	}
}
int main(void)
{
	int num;
	printf("请输入商品编号:\n");
	scanf("%d",&num);
	ShowPrice(num);
	return 0;
}
使用说明

①switch后的表达式是进行多分支判断的一句,其值的类型只能为整型或字符型

②switch花括号中多个case给出的是表达式可能的各个取值,因此case后应是一个值微整形或字符型的常量或常量表达式

③每一个case后的常量或常量表达式的值必须不同,否则无法运行

④在一个case分支中可以包含一个以上的语句,但不必用花括号,会自动顺序执行该case分支中的语句

你可能感兴趣的:(C语言学习,c语言,开发语言)