mooc翁恺老师c语言入门 学习笔记
方便复习 笔记是用来复习的
必备框架 #include<stdio.h> //引入头文件 int main() //主函数,c语言中只有一个 {
return 0; }
printf printf(“%d\n”,blabla); //输出xxx 引号里最末+\n=换行 \t=空格 一般都要加\n %d输出整数 %f输出浮点数
四则运算 乘* 除/ 取余%
变量类型 写程序时先思考变量类型,再思考计算 int a=3,b,c=5; /定义a=3,b为整数,c=5/ float a=3.14; //单精度浮点数 double a=3.14;/双精度浮点数 char a=’A’;/赋值a为大写字母A/ 先有定义,再赋值
变量的名字:数字、字母、下划线组成,数字不能开头。关键字不能当变量名。
const int BALABALA=xxx//const来修饰表示这是常量,初始化后不可修改,常量名一般全大写
用浮点数来表达所有带小数点的数,c语言不用定点数。 两个整数作运算得到的结果也只有整数,小数部分舍去。当浮点数与整数一起做运算时,c会将整数转化为浮点数。 一个找零的程序 int price=0;
printf("请输入金额(元):");
scanf("%d",&price); //输数 出现在scanf的引号里的东西是你必须输入的东西,所以要小心,不要最后加\n
用%d输入int,用 %lf 输入double
int change=100-price; //可以这样定义
printf("找您%d元。\n",change);
运算符优先级 单目运算(取负)>乘、除、取余>加减>赋值(自右向左结合) 举例:a=b=6 即a=(b=6) 一些语言里,赋值是特殊的语句。但c语言中,赋值是运算符 “嵌入式赋值”不好,别整花活 复合赋值:total+=5 即total=total+5 += -= *= /= %= ++变量 --变量 递增/递减 如count++ ++可以放前面(前缀形式)++a的值是a加一以后的值 也可以放后面(后缀形式)a++的值是a加一以前的值 (历史来源:来自PDP-11的特殊指令INC,DEC) 可以单独使用但不要组合进表达式 总之,写程序肯定不整这花活啊!
if语句 if(条件成立) { 指令动作 } else{ 指令动作; }
如果条件成立,做if的指令动作:如果条件不成立,做else的指令动作 可以没有大括号,那么只做if/else后面跟着的那一句语句 当嵌套时,else默认跟着最近的那个if。加上大括号可以完美解决。 if后面不要加分号 和=不一样 if后面的括号内只写变量的意思是变量1,所以习惯上1代表做了,0代表没做
级联的if-else if if(exp1) st1; else if(exp2) st2; else st3; 其实和if里套if是一样的,但是为了好看,把大括号省略了。
多路分支switch-case switch(x){ case1: xxx; break; case2: xxx; break; default: //用于扫尾 xxx; }
switch(控制表达式){ //控制表达式只能是整型数值 case 常量: //常量可以是常数,也可以是常数计算的表达式 语句 //case标记了进入语句的点,而break是结束的标志 break; //如果没有break,语句会一直执行到遇到break为止 case 常量: 语句 break; default: 语句 }
例如: int type; scanf(“%d”,&type); switch(type){ case 1: printf(“你好”); break; case 2: printf(“早上好”); break; case 3: printf(“晚上好”); break; default: printf(“啊?什么啊?”); }
关系运算/比较运算符:==相等(一个等号是赋值) !=不相等
大于 >=大于或等于 < 小于 <=小于或等于 它的优先级比算数低,但比赋值高 其中== 和!=在所有的关系运算符里优先级最低,而连续的关系运算符从左到右进行 关系成立,输出1;不成立,输出0 。 如printf(“%d\n”,5==3); 将输出0
注释 //单行注释 /* */多行注释/插入注释
while语句 while(条件成立) { 指令动作; } 指令动作完成后,再次回到while处去判断条件是否成立,直到条件不成立时停止,等于把if做成了循环。循环体中要有改变条件的机会。
do-while循环 do{ 循环体语句 } while(循环条件); 先进循环体,做完之后判断条件是否满足,条件满足时执行循环
数位数的算法 使用do-while判断更适合 int x; int n=0; scanf(“&d”,&x); do{ x/=10; n++; }while(x>0); printf(“&d”,n);
for循环=while循环 for(i=0;i<5;i++){ printf(“%d”,i); }
for(初始动作;条件;每轮的动作){ 循环体} 其中,每一个表达式都可以省略,但分号不可以省略 设定一个计数器,初始化它,在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值都会调整一次 对于一开始的i=0,当i<5时,重复做循环体,每一轮循环完成后,使得i+1 做求和程序时,结果应初始化为0;求积时,结果应初始化为1 如何选择用什么样的循环?有固定次数——for,必须做一次do-while,其他情况用while
逻辑运算(仅对逻辑量进行运算),结果只有0或1 !逻辑非 && 逻辑与 两个都是1,才为1 ||逻辑或 有一个是1,整个就是1 x>4&&x<6 c>=’A’&&c<=’Z’ 判断c是否是大写字母 单目运算符优先级高于双目运算符,加括号可以先做 ! && || 优先级依次降低
因此不要把赋值组合进表达式
条件运算符 条件?条件满足时的值:条件不满足时的值 编程的早期遗留东西,看起来简单,实际很麻烦 太愚蠢了,我已经预料到考试就会考这些东西
逗号运算符 用来连接两个表达式,没什么卵用基本只在for里连接两个表达式而已
编程难在哪?想问题,小问题
rand()随机数,每次召唤rand()就得到一个随机的整数 #include<stdio.h> #include<stdlib.h> #include<time.h> srand(time(0)); int a =rand();
睡眠 以毫秒为单位 #include<unistd.h> Sleep(2000);
跳出循环 break; 还有多少轮都不跑了 跳过循环 continue; 跳过循环这一轮之后的语句,进入下一轮循环 只作用于它所在的那一层循环
goto语句 做一个标号 goto out;//这个out自己定的 最好只在从最内层循环跳到最外层来使用,不然乱跳哈哈哈 很多行之后 out:
2021/7/14 今天看到辗转相除法,很想知道原理,明白了,更相减损术的原理也明白了。高中没懂的东西,现在才开始补,只能说当时没人好好教,自己也没好好学。
|