BOOL数据类型,是一种表示非真即假的数据类型,布尔类型的变量只有YES和NO两个值.YES表示表达式结果为真,NO表示表达式结果为假.
在c语言中,认为非0即为真.
关系运算符
> >= < <= == !=
主要用于比较运算,返回的结果只有真假两种情况,结果值用BOOL类型变量存储,
注意:判断两个数是否相等,用==(双等号).
逻辑运算符
&&(逻辑与):运算符两边表达式同时为真的时候,整个逻辑表达式的结果为真.
|| (逻辑或);运算符两边表达式同时为假的时候,整个逻辑表达式的结果为假.
! (逻辑非):将表达式的结果取反.
注意事项:
注意逻辑与和逻辑或的短路现象
说明:
(1) 关键字 if 后面括号中不能为空,否则编译时会提示有错误.
(2) if 后面的操作语句虽然可以省略,但不提倡这样编写程序.
(3) 关键字 else 后面也应有操作语句,如果没有操作语句可以省略 else 字句.
(4) 表达式通常为关系表达式或逻辑表达式,也可以是其他类型的表达式,如赋值表达式、算术表达式等,甚至也可以是任意类型的常量或变量
(5) 各操作语句可以是一条,也可以是多条.就一条而言无论是 if 字句、else if 字句还是 else 字句,都是到第一个分号处结束.如果某个子句的操作语句有两条及其以上,需用 { } 将他们括起来构成符合语句,否则有可能出现语法错误,或者程序能够执行但执行情况与预期不符.
条件运算符: ? :
条件表达式: 表达式1 ? 表达式2 : 表达式3
运算规则:先求解表达式1,非0,求解表达式2,表达式2的值为条件表达式的值;
如果表达式的值为0,求解表达式3,表达式3的值为条件表达式的值.
switch (整型表达式) {
case 值1 :语句 1 ;
break;
case 值2 :
语句 2 ;
break;
default :
语句 3;
break;
}
注意事项:
在case后的各常量表达式的值不能相同,否则会出现错误
default 后边的break可以舍掉
整个default语句都可以舍掉
多个case可以运行一个语句块
case中定义变量需要加 { }
switch语句和if-else级联式比较,switch语句往往比级联式更容易阅读,更直观.
switch--开关,case--情况,开关决定发生的情况.
case后边的标签只能是整型常量或者整型变量表达式,不能用变量作为case的标签.
作业:
1.比较并输出三个数的最大值,最小值.以及中间值.
int num1 = 0,num2 = 0,num3 = 0;
int max = 0,min = 0,mid = 0;
//先用条件运算符
printf("请输入三个整数:");
scanf("%d%d%d",&num1,&num2,&num3);
max = num1 > num2 ? (num1 > num3 ? num1 : num3) : (num2 > num3 ? num2 : num3);
min = num1 < num2 ? (num1 < num3 ? num1 : num3) : (num2 < num3 ? num2 : num3);
mid = num1 + num2 + num3 - max - min;
printf("max=%d,min=%d,mid=%d\n",max,min,mid);
//if...else 语句
if (num1 > num2)
{
if (num1 > num3)
{
max = num1;
}
else
{
max = num3;
}
}
else
{
if (num2 > num3)
{
max = num2;
}
else
{
max = num3;
}
}
if (num1 < num2)
{
if (num1 < num3)
{
min = num1;
}
else
{
min = num3;
}
}
else
{
if (num2 < num3)
{
min = num2;
}
else
{
min = num3;
}
}
//2.输入3个数,判断是否能构成三角形。
float a1,a2,a3;
printf("2.请输入三角形的三条边:");
scanf("%f%f%f",&a1,&a2,&a3);
if ((a1+a2>a3)&&(a1+a3>a2)&&(a2+a3>a1))
{
printf("这三条边能构成三角形\n");
}
else
{
printf("这三条边不能构成三角形\n");
}
//3.铁路托运行李规定:行李重不超过50公斤的,托运费按0.15元每公斤计算,如果超过50公斤,超出部分每公斤加收0.1元。编程实现上述功能。
float w,m;
printf("3.请输入行李重量(公斤):");
scanf("%f",&w);
if (w>0&&w<=50)
{
m=0.15*w;
} else {
m=0.15*50+(w-50)*0.25;
}
printf("运费为:%-5.2f元\n",m);
//4.有一个函数:x<1的时候,y = x;1<=x<10的时候,y=2x-1;x>=10的时候,y=3x-11。写一段程序,输入x,输出y值。
float x,y;
printf("4.输入x=");
scanf("%f",&x);
if (x<1)
{
y=x;
}
else if(x>=1&&x<10)
{
y=2*x-1;
}
else
{
y=3*x-11;
}
printf("y=%f\n",y);
//5.编制一个完成两个数四则运算程序。如:用户输入34+56则输出结果为90.00,要求运算结果保留2位有效小数,用户输入时将2个运算数以及运算符都输入,根据运算符求结果。
float x2=0,y2=0;
char s;
printf("5.请输入四则运算式:");
scanf("%f%c%f",&x2,&s,&y2);
switch (s) {
case '+':
printf("%g+%g=%.2f\n",x2,y2,x2+y2);
break;
case '-':
printf("%g-%g=%.2f\n",x2,y2,x2-y2);
break;
case '*':
printf("%g*%g=%.2f\n",x2,y2,x2*y2);
break;
case '/':
printf("%g/%g=%.2f\n",x2,y2,x2/y2);
break;
}
//6.编写一个程序,输入某人的身高(cm)和体重(kg),按下式确定其体重是否为标准、过胖或过瘦。(1)标准体重=身高-110;(2)超过标准体重5kg(即大于5kg)为过胖;(3)低于标准体重5kg(即小于5kg)为过瘦
float height,weight;
printf("6.输入身高(cm)和体重(kg):");
scanf("%f%f",&height,&weight);
if (weight-(height-110)>5)
{
printf("体重过胖!\n");
}
else if (weight-(height-110) < -5)
{
printf("体重过瘦!\n");
}
else
{
printf("标准体重!\n");
}
7.编写程序计算身高:每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成 人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后身高与其父母身高和自身性别密切相关。设faHeight为其父身高,moHeight为其母身高,身高预测公式为:
男性成人时身高 = (faHeight + moHeight) * 0.54(cm)
女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm)
此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。
程序要求:父亲的身高与母亲的身高、小孩的性别、是否喜爱体育锻炼和是否有良好的卫生饮食习惯也从键盘上输入,最终输出预测的身高。
// 提示:小孩性别的输入方式,可在屏幕给出提示“请输入小孩的性别(男孩输入M,女孩输入F):”,然后通过if语句来判断从键盘输入的字符是M还是F。是否喜爱体育锻炼也可以通过类似的方式实现。
float faHeight=0,moHeight=0,childHeight=0;
char gender='\0',exercise='\0',habbit='\0';
printf("请输入父亲的身高,单位为cm!\n");
scanf("%f",&faHeight);
printf("请输入母亲的身高,单位为cm!\n");
scanf("%f",&moHeight);
getchar();//吸收缓冲区中最后输入的回车换行符,并做丢弃处理。
printf("请输入小孩的性别:F(女孩)/M(男孩)\n");
scanf("%c",&gender);
getchar();
printf("请输入是否喜欢锻炼:\n");
scanf("%c",&exercise);
getchar();
printf("请输入是否有良好的饮食习惯!\n");
scanf("%c",&habbit);
if (gender=='M') {
childHeight=(faHeight+moHeight)*0.54;
}
else{
childHeight=(faHeight*0.923+moHeight)*0.5;
}
if(exercise=='Y'&&habbit=='N')
{
childHeight*=1.02;
}
else if(exercise=='N'&&habbit=='Y')
{
childHeight*=1.015;
}
else if(exercise=='Y'&&habbit=='Y')
{
childHeight*=1.02;
childHeight*=1.015;
}
printf("小孩的身高为:%f\n",childHeight);