- 复习运算符的优先次序!!
c语言中,=是赋值的意思;==是等于的意思。
-
所以是先算a+b和c-d的大小,再比较两者关系。
-
关系与逻辑运算符都只返回真的值和假的值!!–01–
与运算:真真为真,其余为假;
或运算:假假为假,其余为真;
非运算:你真我假,你假我真;
异或运算:异真同假。
与运算:
int i;
i=3&&1 ;
i==1;
int i;
i=3&&0 ;
i==0;
int i;
i=0&&0 ;
i==0;
非运算:
int i;
i==5 ;
!i;
i==0 ;
逻辑非超级高!
## if语句
getchar()是c语言中bai的一个输入函数,
可以用它来赋一个字符的值.
例如: char a;
a=getchar();
当你在键盘上输入一个字符(如输入g)后按回车,那么字符变量a的值就是’g’了。
- 如果,if(a=3),因为少打了一个等号,变成将3的值赋给a,则表达式的值永远为真,则输出if语句。if(c=3)括号中是赋值语句,同时if条件是表达式的值3,也就是这个if条件恒为真
如果想将c和3做比较的话最好写成if(3==a),这样即使误写成if(3=a),在编译的
时候也会通不过的。
- 重要例题
## 嵌套
就近原则
#include <stdio.h>
int main()
{
int a,b;
printf("please input A,B:");
scanf("%d%d",&a,&b);
if(a!=b)
**if(a>b)
printf("A>B\n");
else
printf("A<B\n");**为if的嵌套,他们为一组
else
printf("A=B\n");
return 0;
} //完美运行,
#include <stdio.h>
int main()
{
int a,b;
printf("please input A,B:");
scanf("%d%d",&a,&b);
if(a==b)
printf("A=B\n");
else if(a>b)
printf("A>B\n");
else
printf("A<B\n");
return 0;//完美运行
}
最好用第二种,更容易理解。
(最后一句改成否则以表达式3…………)
- 例题
#include <stdio.h>
int main()
{
char ch;
ch=getchar();
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
printf("%c\n",ch);
~~//错因,%c又写成%d了…………~~
return 0;
}
switch语句
switch里边可以写一个表达式,什么都行。switch(a>1?2:3)etc……
- 例题:输入三个整数,输出最大的和最小的
if-else语句:
三目运算符:
例题:计算器程序,用户输入运算数和四则运算,输出计算结果。
作业:输入一个年份,并判断是否为闰年。
%是求模运算符;
/是除运算符;
二者都是双目运算符。
它们之间的区别就是:
%是求余运算,即bai2%10=2,10%2=0,10%3=1。/是普通的除号,即10/2=5
#include <stdio.h>
int main()
{
int year;
printf("请输入年份:");
scanf("%d",&year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
printf("%d is a leap year\n", year);
else
printf("%d is not a leap year\n", year);
return 0;
}
运输公司对用户计算运费.
路程越远每公里运费越低.
每公里每吨货物的基本运费p = 3;用户需要输入货
物重量w和距离s;根据距离的不同折扣d不同(具体见)
下面的表格,要求根据用户输入的w和s,计算出总运费f
其计算公式为f=p*w*s*(1-d)。
s < 250公里 0 折扣
250 <= s < 500 2% 折扣
500 <= s < 1000 5% 折扣
1000<=s < 2000 8% 折扣
2000<=s < 3000 10% 折扣
3000<=s 15% 折扣
#include <stdio.h>
int main()
{
double p,w,f,s,d;
p=3;
printf("请输入所要运输的货物重量:");
scanf("%lf",&w);
printf("请输入所要运输的货物的距离:");
scanf("%lf",&s);
if(s<250)
{
d=1.00;
}
else if((s>250||s==250)&&(s<500))
{
d=0.98;
}
else if((s>500||s==500)&&(s<1000))
{
d=0.95;
}
else if((s>1000||s==1000)&&(s<2000))
{
d=0.92;
}
else if((s<3000)&&(s>2000||s==2000))
{
d=0.90;
}
else
{
d=0.85;
}
f=p*w*s*d;
printf("%.3lf",f);
return 0;
}
/*出错总结,1:少加“;”,
2:else if
3:s==xxx,双等号。
4:'s' cannot be used as a function */