欢迎光临散文网 会员登陆 & 注册

浙江大学翁恺教你C语言程序设计!C语言基础入门!

2022-09-03 22:32 作者:善假001  | 我要投稿

一起学习的兄弟可以去我主页,我在另外一个up主那里,看完了所有翁恺课程,有详细笔记,这里我就不复制过来了,要看可以在

“苏杭zzz”这里找到




变量定义的一般形式就是:类型名称+变量名称+;

如:int price;

int amount;

int price,amount

在scanf里读取什么东西,需在该东西前加&否则无法读取

整数除法会省略小数点后面的数,要求有小数点的数值,需要使用浮点数





数据类型:

1.整数:int,printf(“%d”,...)

scanf(“%d”,...)

2.带小数点的数:double,printf(“%f”,...),scanf(“%lf”,...)

3.运算符(operator):是指进行运算的动作,比如加法运算符“+”,减法运算符“-”

算子(operand):是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值

4.两个整数的运算结果只能是整数

整数运算没有小数部分,因此要使用浮点数,若在设置变量,则变量的赋值有小数,因此用double,而不用int,输出时,有小数,因此使用%f,而不是%d

一般自左向右

单目+-赋值=自右向左

赋值运算会把右边的式子先算完再来和左边的变量结合,如:

total*=sum+12

total=total*(sum+12)



如果

if(条件成立){

...

}


优先级:所有的关系运算符的优先级比算数运算符的低,但是比赋值运算符的高


else,if后面可以没有大括号,但只有那一句是有效的

注意:写程序是写步骤,而不是写关系和说明。(非常重要)

区分内嵌式和级联


使用级联时:大于,从上往下数字大到小;小于,从上往下数字小到大


平均数代码的选择,一个判断做两次会浪费,如下


随机数:每次召唤rand()就得到一个随机的整数


两种形式:1.i=0;i<n

2.i=1;i<=n

小套路:做求和的程序时,记录结果的变量应该初始化为0,而做求积的变量时记录结果的变量应该初始化为1。

循环内定义


这里while循环的i虽然也只在循环内使用,但由于进入while前需判断,故应在循环前就定义int=i



枚举

在除号俩边有一个是浮点数,则计算机会把另一个数也变成浮点数

整数逆序:

d=x%10

ret=ret*10+d

整数逆序只适用于末尾没有0的数

gcd:最大公因数

关注 0与一个数的最大公约数是这个数本身,所以0与0的最大公约数是0。






sizeof是静态运算符它的结果在编译时刻就决定了

不要在sizeof的括号内做运算,这些运算是不会做的






八进制输出用%o,十六进制用%x

如果赋值带字母,则小写x就输出小写的a大写的X就输出大写的A










超过范围的浮点数:

printf输出inf表示超过范围的浮点数:+-∞

printf输出nan表示不存在的浮点数









承接上文:对于printf,任何小于int的类型会被转换成int;float会被转换成double。

但是scanf不会,要输入short,需要%hd

bool:#include <stdbool.h>

之后就可以使用bool和true、false

x∈(4,6)表示为x>4&&x<6

回忆:逻辑运算符<关系运算符,单目>双目

优先级:所有的关系运算符的优先级比算数运算符的低,但是比赋值运算符的高


条件运算符:1.问号?前是条件,问号后面是条件满足时的值,冒号:后面是条件不满足是的值。


2.条件运算符的优先级高于赋值运算符,但是低于其他运算符

3.自右向左结合

逗号运算符:

目前来说逗号运算符只有在for循环中使用

for(i=0,j=10;i<j;i++,j--)

函数是一块代码,接受零个或多个函数,做一件事情,并返回零个或一个值

调用函数

1.函数名(参数值);

2.()起到了表示函数调用的重要作用

3.即使没有参数也需要()

可以赋值给变量;

可以再传递给函数;

甚至可以丢弃;



声明:检查你对函数的调用是不是对的,以及和定义匹不匹配。


把函数的头取出来加上分号;就变成函数原型

上图最后一点注意

当你值和函数头里的参数类型不匹配时,数据会发生混乱




本地变量



1.定义函数时后面的()是参数表,用来填入参数,当没有参数时,填(void),或者不填,但是不填表示参数表未知,并不代表没有参数。最好确认没有参数后填进void,否则当你值和函数头里的参数类型不匹配时,数据会发生混乱。当然,int main()同样

2.在调用函数时,括号里的逗号不是运算符,如:f(a,b),但如果是f((a,b)),那就是了,区别就是传了俩个还是一个参数进去

3.注意:c语言不允许嵌套定义,一个函数里允许放别的函数的声明,但不允许放别的函数的定义。

4.给return返回值时,不要加括号,虽然没影响,但是容易误解return也是定义函数,把参数i的值传进return

int main()返回return 0;是有意义的,有程序会查看



数组


右边叫右值

赋值号右边是读取,左边是写入


数组的单元

1.数组的每个单元就是数组类型的一个变量。

2.使用数组时放在【】中的数字叫做下标或索引,下标从0开始记数。


这里的下标自动从0开始计数,故循环内不用初始化cnt,否则无法定义数组d

统计数的个数

数组运算


int count[number];

for ( i=0;i<number;i++ ) {

count[i]=0;

}可以表示为:

int count[n]={};

其中大括号中第一个数字给数组的第一个单元赋值,其余没写的赋值0

数组的大小








使用平方根sqrt()必须写入#include <math.h>





a[i,j]=a[j],逗号运算符,从左向右,取逗号右边为运算结果

二维数组的初始化

大括号中的大括号也可以不打,二维数组在内存中的排列跟一维数组是一样的,将这个矩阵从左上角到右下角,用这些数字逐行的填满,为了让人类读者容易理解,可以加大括号


tic-tac-toe游戏制作步骤:


行列代码基本相同

&a==a==&a[0]==&a[1]地址相同

指针p的值是某个变量的地址

*p是一个int所以p是一个指针


指针:定义一个指针要*+一个变量->*p,这算是一个指针

int* p=int *p只是星号位置不同,定义俩个指针需要俩个星号不能理解为int *p,q;而是int *p,*q;



*是一个单目运算符,用来访问指针的值所表示的地址上的变量

当*p作为一个整体时,可以看作是一个·整数

数组参数:

在函数参数表中是等价的

一般函数的参数与调用他的地方是没有联系的,指针改变了这种情况

数组在传入函数前后地址没发生改变,但sizeof改变,传进函数里的数组的大小是指针的大小,实际传进后就变成指针了。

故没法在函数里头用sizeof得出正确的函数个数,且在中括号里定义大小也没有用。

在参数表里把数组写成指针的样子也是可以的




要么是指针不可修改,要么是通过指针不可修改




浙江大学翁恺教你C语言程序设计!C语言基础入门!的评论 (共 条)

分享到微博请遵守国家法律