一.变量1.做计算printf(1213%d,1213);2.算找零printf(100-23%d,100-23);3.为什么要引入变量每次计算时都需要输入数字繁琐4.引入change函数int price0; printf(请输入金额元:); scanf(%d,price); int change100-price; printf(找您:%d元\n,change);5.输出printf和输入scanf在终端进行6.int price0解释定义了一个类型是int名称是price初始值是0的变量7.变量定义变量类型变量名称egint price; int amount; int price,amount;8.变量的名称标识符由数字字母下划线组成数字不能开头一些关键字不能作为变量名称egint二.变量的赋值与初始化1.int price0;和price0的区别int price0;定义了一个类型为int名称为price初始值为0的变量price0是一个式子指把0的值赋给price2.赋值和数学意义的区别数学中ab的值a和b的值相等是关系静态计算机中ab指把b的值赋给a是动作动态3.初始化十一2有系统说明赋值发生在变量定义的时候称为初始化egint price0int price是定义变量0是赋值注意c语言不强调在变量定义时做初始化但在变量第一次被使用前需要做初始化egint change100-price;变量出现在右边4.如果没有初始化#include stdio.h int main() { int i; int j; ji10; printf(%d\n,j); return 0; }这里看课讲的是终端显示乱码但是我用的devc终端显示10终端输出奇怪的结果是因为因为没有对进行第一次参与计算的变量进行初始化导致变量i和j用的是内存的东西而输出10的原因可能是内存里面是105.变量初始化格式变量类型变量名称初始值egint price0;int amount100;多变量定义eg:int price0,amount100;6.表达式是赋值运算符有运算符的式子就叫表达式egprice0change100-price7.c99和ansic的区别//c99 int price0; printf(请输入金额元); scanf(%d,price); int change100-price; printf(找您%d元,change);//ansic int price0; int change100-price; printf(请输入金额元); scanf(%d,price); int change100-price; printf(找您%d元,change);ansic所有的变量定义都在前列,c99的变量定义可以在程序中间8.scanf函数scanf(%d,price);要求scanf这个函数读入下一个整数读到的结果赋值给变量price三.变量输入scanf1.如何让程序读入用户输入的数字int a0; int b0; scanf(%d %d,a,b); printf(%d %d\n,a,b);scanf(%d %d,a,b);中“”里面的内容是要读取你要输入的东西交给后面的两个变量格式和终端输入的数字一致不管printf格式这是输出后的东西你需要在输入时做相同的格式2.egscanf(%d %d,a,b); scanf(%d,%d,a,b); scanf(price%d %d,a,b); scanf(%d %d\n,a,b);//这里的\n不是换行而是你要输入\n四.变量和常量1.常量int change100-price;中100是常量直接写在程序的称为直接量literal2.定义一个常量const int AMOUNT100c99AMOUNT是金额const int AMOUNT100; int price0; printf(请输入金额元:); scanf(%d,price); int changeAMOUNT-price; printf(找您:%d元\n,change);const int AMOUNT100;定义了一个类型const int名称AMOUNT初始值100的常量在第一次使用AMOUNT前赋值是初始化有两个好处1知道这是金额2便于检查3.const修饰符放在int前给变量加一个不变的属性表示这个变量一旦初始化就不能修改4.如果对AMOUNT进行修改AMOUNT90;int price0; AMOUNT90; printf(请输入金额元:);AMOUNT是一个只读的变量不能被赋值5.如果想修改100怎么办const int AMOUNT100;修改为int amount100后面加scanf因为const通常和大写AMOUNT一起int amount100; int price0; printf(请输入金额元); scanf(%d,price); printf(请输入面值); scanf(%d,amount); int changeamount-price; printf(找您%d元,change);终端操作空格或者回车6.scanf怎么放多个变量int a0; int b0; printf(请输入两个整数); scanf(%d %d,a,b); printf(%d%d%d\n,a,b,ab);scanf里面两个%d用空格终端操作空格或者回车如果输入了字符串怎么办输出内存的数字八.浮点数整数运算的结果只有整数部分不然用浮点数1.英尺英寸换算米一个外国人身高5尺7寸用米表示printf(身高英尺和英寸:); int foot; int inch; scanf(%d %d,foot,inch); printf(身高是%f米,(footinch/12)*0.3048);但是实际计算结果是57/12*0.30481.70182.为什么会出现这个问题因为c语言在进行整数运算时会去掉小数点往小的去掉printf(%d,12/5);终端2printf(%d10/3*3);终端9由此看出c语言在进行整数运算时候对每个步骤都会去掉小数点3.解决方案2个110是整数10.0是浮点数用10.0代替printf(%d,10.0/3*3);错误原因%d格式化占位符用于输出int整形数据10.0/310.0是浮点数字面量运算结果是double双精度浮点数修改把%d修改为%fprintf(%f,10.0/3*3);4.浮点数浮点数指带小数点的数值浮点指小数点乱动定点数指小数点不动但在c语言遇不到5.改进printf(身高是%f米,((inchfoot/12.0)*0.3048));printf(身高英尺和英寸:); int inch; int foot; scanf(%d %d,inch,foot); printf(身高是%f米,(inchfoot/12.0)*0.3048);浮点数和整数运算时c语言会把整数换成浮点数结果也是浮点数所以写成%f米这里我感觉很奇怪printf(%f,(footinch/12)*0.3048);c语言在进行整数和浮点数运算时候c语言会把整数换成浮点数结果也是浮点数foot和inch和12是整数0.3048是浮点数那结果也是浮点数用%f但是结果是整数运算的1.5把12换成12.0结果是正确的ai学习结果是inch/12先执行了整数除法导致精度丢失2double关键字整数和浮点数运算浮点数只需要转换inch或foot成浮点数即可让结果是浮点数double是双双精度浮点数表示浮点数类型float意思是单浮点printf(身高英尺和英寸:); double foot; double inch; scanf(%lf %lf,foot,inch); printf(身高是%f米,(footinch/12.0)*0.3048);scanf输入时用lf6.数据类型整数intprintf(%d,…)scanf(%d,…)带小数的数doubleprintf%f,…)scanf(%lf,…)九.表达式1.一个表达式是一系列运算符和算子的结合用来计算一个值amountx*(10.033)*(10.033)*(10.033);total57;countcount1;value(min/2)*LastValue;2.运算符和算子运算符进行运算的动作…算子参与运算的值常数、变量、一个方法的返回值3.计算时间差计算某小时某分钟到某小时某分钟的时间差设置四个变量相减但是由于可能出现借位情况都换算为分钟后再做取余int hour1,minute1; int hour2,minute2; scanf(%d %d,hour1,minute1); scanf(%d %d,hour2,minute2); int t1hour1*60minute1; int t2hour2*60minute2; int t3t2-t1; printf(时间差是%d小时%d分钟,t3/60,t3%60);十.运算符优先级1.写一个程序求平均值int a,b; scanf(%d %d,a,b); double c(ab)/2.0; printf(%d和%d的平均值%f\n,a,b,c);2.运算符优先级表格单目运算符可以理解为不需要括号的正数和负数优先级运算符运算结合关系举例1单目不变自右向左a*b1-单目取负自右向左a*-b2*乘自左向右a*b2/除自左向右a/b2%取余自左向右a%b3加自左向右ab3-减自左向右a-b4赋值自右向左ab3.赋值运算符赋值也是运算也有结果a6的结果是a被赋予的值也就是6ab6——ab64.嵌入式运算符int a6; int b; int c1(ba);不利于阅读容易产生错误5.结合关系一般自左向右单目-和赋值自右向左resultab3c;result2;result(resultresult*2)*6*(result3result);第三行是嵌入式赋值不要写十一.交换变量1.怎么用c语言交换两个变量的值如果用ab;ba;的话b的值赋给aa的值就等于ba的值赋给bb的值就等于b2.怎样交换变量想象两杯水怎么交换引入一个空杯子用一个没有赋值的变量作为中介进行int a3; int b4; int t; ta; ab; bt; printf(a%d,b%d,a,b);这里有个疑问c语言中变量在第一次使用前变量出现在右边不是定义变量需要对这个变量进行初始化但是bt没有让t进行初始化编译为什么没有出错ai学习后了解赋值写入不需要ta;读取使用值必须int ct;定义变量不需要但推荐int t;3.调试点击需要进行断点的代码行数-生成断点-调试下一步光标移至变量可查看当前变量值无法调试工具-编译选项-设定编译器配置-debug工具-编译选项-代码生成/优化-连接器-产生调试信息-yes环境配置-浏览debug变量-鼠标十二.复合赋值和递增递减1.复合赋值五个算数运算符-*/%和复制号结合为复合赋值运算符-*/%total5;totaltotal5;两个运算符之间不要有空格2.做复合赋值时注意括号total(sum100)/2;totaltotal(sum100)/2;total*sum12;totaltotal*(sum12);total/126;totaltotal/(126);3.递增递减运算符是递增运算符--是递减运算符都是单目运算符(一个算子),这个算子必须是变量作用是让这个变量加1或减1countcount1countcount1;4.前缀后缀--变量前缀形式变量--后缀形式a的值是a1以前的值a的值是加了1以后的值a的值都加1在前先1再使用在后先使用再1int a10; printf(a%d,a); printf(a%d,a); printf(a%d,a); printf(a%d,a);5.表达式和运算和表达式的值表达式运算表达式的值count给count加1count原来的值count给count加1count1以后的值count--给count减1count原来的值--count给count减1count-1以后的值不要组合到表达式复杂