【第二章】
表达式
//*******运算符*********
/*
[算术运算符]
1, + - * / %(模拟运算符,取余)
2 /(除号),
** [关系运算符]
1,==,!=,>,<,>=,<=
2,所有关系运算符,运算之后的结果只有真或者假两种情况。
3在c语言中,0表示为假,一切非0数字表示真。
4 如果要便是两个变量处于两个数字之间(即1<n<10),那么必须用&&来链接,即n>1&&n<10;
** [位运算符,逻辑运算符]
1,(1)&&逻辑与(两个都为真才是真),
(2)||逻辑或(一个是真就是真),两个条件符合一个就是真。
(3)!逻辑非
(4)按位与& 按位或| 左移<< 右移>>
2,逻辑运算符的两边,只能是真或假
// printf("%d\n",1&&2); 真
** [赋值运算符]
1 =,+=,-=,*=,/=,%=
2赋值号“=”,把等号右边的数值赋值给左边。
【注释】两个==才表示判断是否相等,一个=表示赋值运算
3n+=5;相当于n=n+5,n-=5,两个式子具有相同的作用,但是n+=5的写法具有更好的性能,推荐使用这个方式;
** [单目运算符]
1,++,--,sizeof,*(指针),& 取地址
2,++ 自增运算符,将变量值+1; --自减运算符,将变量值-1;
》》》i++和++i的异同
1)相同点 ,不管是i++还是++i,在执行完代码以后,都会把变量+1
2)不同点:i++是先用i的值去运算,再把i+1
++i是先把i+1,再用i+1以后的值去运算
》》》eg;
int i=5,j,k;
j=i++ +2;//j=7,i=6
k=++i +2;//i=7,k=9
printf("%d,%d,%d",i,j,k);
结果:7,7,9
int i=5,j,k;
j=i++ +2;
k=++j +2;
printf("%d %d %d",i,j,k);
结果为 6 8 10
3,sizeof:计算长度,返回值类型为long ,单位为字节。
printf("%ld\n",sizeof(int));
结果:4字节
** [多目运算符]
1,a>b?true:false,// 当?前面为真的时候执行:前面的代码,当?前面的为假的时候,执行:后面的代码。
2,功能与if——else类似;
printf("%d\n",1>2?1:0);
T:int a,b,c,d,e,f;
printf("请输入四位数字:");
scanf("%d",&e);
a=e/1000;
b=e%1000/100;
c=e%1000%100/10;
d=e%1000%100%10/1;
f=a+b+c+d;
printf("%d\n",f);
printf("%d的个位数字之和为:%d\n",e,f);
printf("%d",f>20?50:0);
(让你输入一个四位数,先对各位分解,然后求和,和 大于20 则有返利50,否则显示0)。
** [if-else]
if(判断条件){
//如果条件为真,执行的代码
}
else{
//如果条件为假,执行的代码
}
》》》》》
if(f>20){
printf("返利50\n");
}
else{
printf("返利0元\n");
}
//T: 输入两个数判断大小
int x,y,z,w;
printf("输入两个数:");
scanf("%d %d",&x,&y);
z=4*x;
w=4*y;
if(x>y)
{
printf("%d",z);
}
else
{
printf("%d",w);
}
判断IP地址是否合法
// int x,y,z,w;
// printf("输入一个ip地址:\n");
// scanf("%d.%d.%d.%d",&x,&y,&z,&w);
//
// if(x>0&&x<=255,y>=0&&y<=255,z>=0&&z<=255,w>=0&&w<=255)
// {printf("是合法的");}
// else{
// printf("不合法");}
输入一个字符是大写 就转化成小写,是小写就转化成大写,非字母不转换
char zimu;
printf("请输入一个字符:");
scanf("%c",&zimu);
if (zimu>=97&&zimu<=122)
{
printf("输出的字符为:%c",zimu-32);
}
else if (zimu>=65&&zimu<=90)
{
printf("输出的字符为:%c",zimu+32);
}
else
{
printf("输入的字符不转换");
}
运算符实例 输入三种商品的价格,若有一个大于50,或者总额大于100,打折15%,否则折扣率0
float shangpin1,shangpin2,shangpin3,zonge,fukuan;
printf("请输入三种商品的价格:");
scanf("%f %f %f",&shangpin1,&shangpin2,&shangpin3);
zonge=shangpin1+shangpin2+shangpin3;
if(shangpin1>50||shangpin2>50||shangpin3>50||zonge>100){
fukuan=zonge*85/100;
printf("用户应支付:%.2f",fukuan);
}else
{
fukuan=zonge;
printf("用户应支付:%.2f",fukuan);
}
十进制 二进制 八进制
十进制 10 转换成2进制 除以2 取余数 10/2=0 5/2=1 2/2=0 1
15>> 1111
【8421 码】
0000
二进制 转换成十进制
【运算符的优先级】()》》!,++,--,sizeof(单目运算符) 》》*,%,/ 》》 +,- 》》 <,<=,>=,> 》》 ==,!=》》&&》》 || 》》 = ,+=(n+=m n=n+m),-=,/+,%=
判断是否为闰年:条件 能被4整除但不能被100整除,除非能被400整除
int nianfen;
printf("输入一个年份:");
scanf("%d",&nianfen);
if(((nianfen/4==0)&&(nianfen/100!=0))&&(nianfen/400==0))
{
printf("输入的年份为闰年");}
else{printf("输入的年份不是闰年");}
第一种方法
//int shi,fen,miao;
//printf("输入一个时间:");
//scanf("%d:%d:%d",&shi,&fen,&miao);
// if(shi==23&&fen==59&&miao==59){
// printf("下一秒的时间为%02d:%02d:%02d",00,00,00);
// }else if(fen==59&&miao==59){
// printf("下一秒的时间为%d:%02d:%02d",shi+1,00,00);
// }else if( miao==59 ){
// printf("下一秒的时间为%d:%d:%02d",shi,fen+1,00);
// }else{
// printf("下一秒的时间为%d:%d:%d",shi,fen,miao+1);
// }
第二种方法
int shi,fen,miao;
printf("输入一个时间:");
scanf("%d:%d:%d",&shi,&fen,&miao);
if( miao==59&&fen!=59&&shi!=23){
printf("下一秒的时间为%d:%d:%02d",shi,fen+1,00); }
else if(miao==59&&fen==59&&shi!=23){
printf("下一秒的时间为%d:%02d:%02d",shi+1,00,00);}
else if(miao==59&&fen==59&&shi==23){
printf("下一秒的时间为%02d:%02d:%02d",00,00,00);}
else{
printf("下一秒的时间为%d:%d:%d",shi,fen,miao+1);
}
int shi,fen,miao;
print("输入一个时间(xx:xx:xx):");
scanf("%d:%d:%d",&shi,&fen,&miao);
if(shi<0||shi>23||fen>59||fen<0||miao<0||miao>59){
printf("请您输入正确的时间");
}else if(miao<59){
printf("下一秒输出的时间为%d:%d:%d",shi,fen,miao+1);
}else if(fen<59){
printf("下一秒输出的时间为%d:%d:%d",shi,fen+1.0);
}else if(shi<23){
printf("下一秒输出的时间为%d:%d:%d",shi+1,0,0);
else{
printf("下一秒输出的时间为00:00:00");
}