例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;
}
对指定的条件进行判断,来决定执行哪个操作
数据是单个的字符,程序中使用与存储的实际上是该字符对应的编码,目前使用最广泛的是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);
}
< 小于 | > 大于 | <= 小于等于 | >= 大于等于 |
---|---|---|---|
== 等于 | != 不等于 |
①参与运算的操作数可以是任何基本类型的数据或表达式,字符作为操作数时用字符的ASCII码参与运算
②在判断两个操作数是否相当是,使用==而不是=
③比较两个实数是否相等,不能用==,因为计算机实际保存的是近似数字
! 非 | && 逻辑与 | || 逻辑或 |
---|
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;
}
例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;
}
条件运算符?是唯一一个三元运算符:
表达式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;
}
要处理分支的情况较多时,可以用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分支中的语句