2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.2.1
2.2.2
2.2.3
2.2.4
知识点提炼
四则运算
赋值
上图,可以看到=赋值虽然是最低优先级,但也属于运算符的一种。也是一种运算,带有结果。
如:a=b=6,由于自右向左结合,实际过程是a=(b=6)。//运算结果是b被赋予的值,也就是6。
自右向左结合的只有赋值和单目+-。
复合赋值:五个基本赋值符+-*/%可以和“=”结合形成复合赋值符:+=、-=、*=、/=、%=
a=a+5;
a+=5;//等效
递增递减运算符
++,--;都是单目运算符,作用就是加在变量上,让变量加一或者减一;
a++;
a+=1;
a=a+1;//等效
前缀形式:++a,后缀形式:a++。都是运算,有结果,但是结果不一样:
++a:先自增后取值;a++:先取值后自增
int a=10;
printf("%d",a++);//10 先取值
printf("%d",a);//11 已经自增了
printf("%d",++a);//12 先自增
printf("%d",a);//12 再取值
变量的定义和赋值
变量,用来存放数据的地方,能在程序运行过程中保存输入的数据,参与到之后的计算之中,并且在程序结束之后销毁。
变量的定义:<数据类型> <变量名>=<初始值>
变量名字叫标识符,是用来区分变量和别的东西,给变量起名不能瞎起,标准是:字母,数字,下划线,而且数字不能打头。
int,for ,char,double之类的不能起,这些是C语言的关键字(也叫保留字),如果用了会报错。
当有多个变量需要定义时,可以在一行里用逗号隔开相同类型的变量节省空间。
如果在运算中没有初始化,这个值(内存地址)就可能会直接参与计算,进而得到错误结果。所以在变量第一次被使用(也就是出现在赋值号右边)之前,要么就给他初始化为0,要么就给他赋别的值。
变量的赋值,初始化需要每个变量分开写。如:
int a,b,c=0;(此时ab都没有初始化)
int a=0,b=0,c=0,d=1;(此时全部初始化)
浮点数
自动转换类型:当浮点数和整数在一起运算时,C语言会自动把整数转换为浮点数,然后进行浮点数的运算
如果用double/float,scanf中需要把%d替换为%lf。printf中把%d替换为%f。
套路:交换变量值
int a=5,b=6;
int t=a;
a=b;
b=t;
当我们有两杯水,一杯是加了苹果汁的a,一杯是白水b。如何将两杯水对调呢?答案是找一个空杯子。先将a杯的水倒入空杯子,完成后a杯是空的,再将白水倒入a杯子,此时b杯空。之后将那个额外的杯子里的水倒入b,这样a杯装的就是白水,b杯装的就是苹果汁了。
项目学习记录
0207height
#include <stdio.h>
int main(){
printf("请分别输入身高的英尺和英寸,如输入\"5 7\"表示5英尺7英寸:");
float foot=0;
float inch=0;
scanf("%f %f",&foot,&inch);
//printf("身高为%f米。\n",(foot+inch/12)*0.3048);
//测试过程中inch不起作用---- 【inch(int)/12结果只能是整数】0
//(foot+inch/12.0) 12.0是浮点数,【整数/浮点数结果是浮点数】,类型自动转换。
printf("身高为%f米。\n",(foot+inch/12)*0.3048);
return 0;
}
原来是因为foot和inch的类型都是整数,而整数相乘的结果只能是整数,其中7/12这个式子的小数部分就被舍弃掉,计算结果就和正确答案有所偏差了。
例子:10/3*3 = 10? NO,实际上结果是9;10是整数,10.0是浮点数。因此10.0/3*3 = 10.0。
0207time
#include <stdio.h>
int main(){
int h1,m1,h2,m2;
int t1,t2;
printf("请输入第一个时间,用空格隔开:");
scanf("%d %d",&h1,&m1);
printf("请输入第二个时间,用空格隔开:");
scanf("%d %d",&h2,&m2);
t1=h1*60+m1;
t2=h2*60+m2;
int sub=0;
sub=t2-t1;
int newh,newm;
newh=sub/60;
newm=sub%60;
printf("时间差为%d时%d分。",newh,newm);
return 0;
}
0207exchange
#include <stdio.h>
int main(){
int a=1;
int b=2;
printf("交换前a=%d,b=%d\t",a,b);
int c=0;
//交换
c=a;
a=b;
b=c;
printf("交换后a=%d,b=%d",a,b);
return 0;
}
调试学习 上面的打勾选项为调试
1.先编译并运行
2.设置断点,即执行到断点命令前
3.点击“下一步”查看变量以及终端输出的变化
0207interestbank
#include <stdio.h>
int main()
{
float x;
//int x; 定义变量为int,输入又是浮点型,无法正确赋值
printf("请输入最初存入的金额(元):");
scanf("%f",&x);//scanf的%d 不能少
printf("%f\n",x);
int i=0;
float interst;
while(i<3)//0 1 2
{
interst=x*0.033;
x+=interst;
i++;
printf("%f",x);
}
printf("3年后本息余额共%f元",x);
return 0;
}
如果要改成任意年限的话,在定义一个变量控制循环即可。
0207average
#include <stdio.h>
int main(){
int a,b;
printf("请输入两个值:");
scanf("%d %d",&a,&b);
printf("平均值为%f",(a+b)/2.0);
//除以2.0,结果值变成浮点数
return 0;
}
参考指路原文链接:https://blog.csdn.net/m0_56661338/article/details/123216570