欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

【C语言】笔记(持续更新)

时间:2023-04-28
【C语言】笔记 第一章 、计算机和编程语言 一、第一个C程序

1、程序框架

#include int main(){ return 0;}

2、输出

printf(“Hello World!n”);""里面的东西是字符串,printf会把其中的内容原封不动输出n表示在输出结果后面换一行

3、程序中的错误

编译器会给出提示

4、不用中文输入
5、可移植 C/C++(C标准除文件操作外没有操作系统硬件资源接口,Windows Linux接口不一样)
跨平台 Java python

二、关于那个0

0与o不一样,0中间有斜杠

三、Mac OS X如何在命令行编辑、编译、运行C程序

gcc hello.c //编译C程序ls -l //显示编译过程./a.out //运行,./是Linux中的一种安全命令

四、计算

#include int main(){ printf("%dn",23+43) //%d说明后面有一个整数要输出在这个位置上 printf("23+43=%dn",23+43) return 0;}

五、四则运算 四则运算C符号++-—x*➗/()()

%表示取两个数相除以后的余数

六、main()的样子

return主要是为了告诉电脑程序运行结束,不返回给用户。void main()表示主函数没有返回值,可以不加return;加了return,表示程序结束不继续往下执行;return 0会报错。所有标准均不认可该写法int main()表示主函数返回值为整型,返回一个值看是否为0来判断程序是否正常退出(返回值整型有取值范围,过大会导致程序报错),该种写法在C99和C11标准中不被允许。int main(void)为标准写法 七、VS使用、及编译

1、system(“pause”); 让窗口停留
2、程序变为exe经过两步,一步是编译,一步链接

第二章、数据类型、运算符与表达式 2.1 数据类型

(1)

基本类型:整型int、字符型char、实型(浮点型)可分为单精度和双精度构造类型:数组【】、结构型struct、联合union、枚举enum指针类型*空类型void

(2) C语言的关键字
C语言中的关键字

C语言的关键字

2.2 常量

整型 1实型 3.12字符型 ‘2’字符串型 “”是个空串 2.3 变量

(1)需要:

有地方放输入的数字有办法输入数字输入的数字参与计算

(2)change.c

change.c#include int main(){int price = 0; //这一行定义了一个变量,变量名是price,类型是int,初始值是0。printf("请输入金额(元):");scanf ("%d",&price); //输入是以行为单位进行的,行的结束标志是你按下了回车键。在你按下回车键之前,你的程序不会读到任何东西。int change = 100 - price;printf("找您%d元。n",change);return 0;}

变量的作用:变量是一个保存数据的地方,保存了数据,才能参加到后面的计算中

(3)变量定义的一般形式 <变量类型> <变量名称>;

int price;int amount;int price,amount;

(4)标识符

构造基本原则:只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,C语言关键字(保留字)不可以用作标识符

C语言的保留字

C语言中32个关键字详解

C语言的关键字

(5)C语言区分大小写的,变量先定义后使用、见名知意

2.4 整型数据 2.4.1 符号常量

#include #define PI 3 //PI就是符号常量int main(){ int a=3; a=5; //PI=4; //符号常量不可赋值 printf("%dn",PI)}

2.4.2 整型常量的不同进制

进制转换

二进制与八进制的转换
将二进制数每三位转换为一位八进制数,最后在前面加一个0二进制与十进制的转换
把二进制字符串从最高位(左边第一位)开始用商乘以2再加余数(该位的数字),如此循环,左边第一位的商肯定是0;
把十进制除2取余数,并把所有的余数倒排,不够八位在前面加0。二进制与十六进制的转换
四位计算,高位不足补0
内存使用十六进制 (x86架构是小端存储,低位在前,高位在后)

#include int main(){ //int i=123; int i=0x7b; printf("%dn",i); //%d表示以十进制方式输出某一个整型数}

1 位 1 bit
1字节 1 byte = 8 bit
1Kb = 1024 字节
1Mb = 1024Kb
地址是4个字节
int i 是4个字节

使用scanf时一定要用取地址符&

2.5 浮点型数据 2.5.1 浮点型常量float

小数形式 0.123指数形式 3e-3(e之前必须有数字,e后面的指数只能为整数)

#includeint main(){ float f = 1.234; //e代表10的幂次 printf("%fn",f); //%f就是以浮点形式输出对应数据}

2.5.2 浮点型变量

通过float f 来定义浮点变量,f占用4个字节的空间 2.6 字符型数据 2.6.1 字符型常量

用单引号扩起来的一个字符,且只能包含一个字符! 例:‘a’ ‘1’ ’ ’以开头的特殊字符称为转义字符 n换行 b退格 \反斜杠 2.6.2 字符数据在内存中的存储形式及其使用方法

#includeint main(){ float f = 1.234; //e代表10的幂次 printf("%fn",f); //%f就是以浮点形式输出对应数据 char c = 'a'; printf("%cn",c);}

ASCII码表

#includeint main(){ char c = 'a'; c = c-32; //把小a变成大A printf("%cn",c);}

2.7 字符串型常量

字符串型常量是由一对双引号括起来的字符序列‘a’和“a”不一样不可将字符串型常量赋值给字符型变量,如:

char c; c = "China";

C语言中没有定义字符串型常量的关键字,用字符数组存放字符串C语言规定以字符’’作为字符串结束标志,以便系统判断"CHINA"在内存中占用六个内存单元,而不是五个,由于的存在‘’ == 0 2.8 混合运算 2.8.1 类型强制转换

#includeint main(){ int i = 5; float j = i /2; // i/2是整型计算,得到2,float f =2.0 float k = (float)i/2; //float()i将它变成浮点型运算 printf("j=%f,k=%fn",j,k);}

2.9 常用的数据输入/输出函数 2.9.1 scanf函数的原理

C语言通过函数库读取标准输入

#include int scanf( const char *format,...); //format 是一个字符, ...是一个可变参数,参数的数目与format中%的数目保持一致 format里面可以有%d %f %c,不限制出现次数

2.9.2 scanf函数的循环读取

#define _CRT_SECURE_NO_WARNINGS#include//清空缓冲区,VS2012 fflush(stdin),VS2017- VS2019rewind是新接口取代fflush//stdin是标准输入int main(){ int i,ret; while(rewind(stdin),(ret=scanf("%d",&i))!= EOF) //while实现循环,后面要有小括号 { printf("i=%dn",i); } return 0;}

scanf循环读取发生错误时,返回EOF#define EOF (-1)出错的情况:在行首输入ctrl+z回车,连续三次就出错了,退出控制框, Mac结束循环按一次command+d

#define _CRT_SECURE_NO_WARNINGS#includeint main(){ char c; while(scanf("%c",&c)!= EOF) //while实现循环,后面要有小括号 { if (c!= 'n') { printf("%c",c-32); } else { printf("n"); } } return 0;}

2.9.3 多种数据类型混合输入

#includeint main()//一个scanf读多种类型的数据//混合输入时,每次在%c前面加入一个空格{ int i; float f; char c; scanf("%d %c%f",&i,&c,&f); printf("i=%d,c=%c,f=%fn",i,c,f); return 0;}

2.9.4 printf函数介绍

原理与scanf差不多

#include//printf控制输出格式int main(){ printf("name=%s,age=%3d,sex=%c,score=%4.1fn","moovgen",34,'m',98.5);}

2.9.5 getchar函数 2.9.6 putchar函数 2、变量赋值与初始化

(1)int price=0

price=0是一个式子,“=”是一个赋值运算符,是一个动态的动作。

(2)初始化

当赋值发生在定义变量的时候,就是变量的初始化。所有的变量在第一次被使用(出现在赋值运算符的右边)之前都应该被赋值一次。

若未被初始化,则这个变量所在内存之前所存储的值是多少,该变量就是多少。

<类型名称> <变量名称> = <初始值>

int price =10;int price =10, amount =0;

C是一种有类型的语言,所有变量在使用之前都必须定义或声明,程序运行过程中不可改变变量的类型。

ANSI C与C99

ANSI C只能在代码开头的地方定义变量

(3)读整数

scanf("%d",&price);要求scanf这个函数读入下一个整数,读到的结果赋值给变量price小心price前面的&scanf的f是format(格式化)的意思 3、关于scanf

在scanf中的所有内容都要你进行输入,否则无法读到

4、常量VS变量

(1)常量

int change = 100-price固定不变的数是常数const int AMOUNT = 100;

change.c#include int main(){int price=0; const int AMOUNT = 100; printf("请输入金额(元):");scanf ("%d",&price); int change = AMOUNT - price;printf("找您%d元。n",change);return 0;}

const 是一个修饰符,加在int前面,用来给这个变量加上一个const(不变)的属性,这个const属性表示这个变量的值一旦被初始化,就不能再修改了。

(2)变量

#include int main(){int price = 0, amount = 0; printf("请输入金额(元):");scanf ("%d",&price); printf("请输入票面(元):"); scanf ("%d",&amount); int change = amount - price;printf("找您%d元。n",change);return 0;}

plus.c#include int main(){int a,b; printf("请输入两个整数");scanf ("%d %d",&a,&b); printf("%d+%d=%dn",a,b,a+b); return 0;}

二、数据类型 1、浮点数——带小数点的数值

height.c#include int main(){ printf("请分别输入身高的英尺和英寸,如输入"5 7"表示5英尺7英寸:" ); int foot , inch; scanf("%d %d",&foot,&inch); printf("身高是%f米。n",((foot+inch/12)*0.3048)); //C语言中两个整数的运算的结果只能是整数 return 0;}将printf("身高是%f米。n",((foot+inch/12)*0.3048)); 修改为((foot+inch/12.0)*0.3048)) 12>>>12.0或者int inch >>>> double inch ,%d >>> %lf //double是指双精度浮点数,float表示单精度浮点数整数intprintf("%d",...)scanf("%d",...)带小数点的数doubleprintf("%f",...)scanf("%lf",...)

C语言中两个整数的运算的结果只能是整数10和10.0是完全不一样的数10.0是浮点数浮点数和整数放到一起运算时,C会将整数转换为浮点数,然后进行浮点数运算

浮点是指小数点的浮动,是计算机内部表达非整数(包括分数和无理数)的一种方式。

定点数约定计算机中小数点的位置,且这个位置固定不变,小数点前、后的数字,分别用二进制表示,然后组合起来就可以把这个数字在计算机中存储起来,这种表示方式叫做「定点」表示法,用这种方法表示的数字叫做「定点数」

三、表达式 1、运算符、算子、取余

运算符:进行运算的动作,加减乘除等等

算子:参与运算的值,可能是常数、变量,也可能是一个方法的返回值。

time.c#include int main(void){ int hour1,minute1; int hour2,minute2; scanf("%d %d",&hour1,&minute1); scanf("%d %d",&hour2,&minute2); int t1= hour1 * 60 + minute1; int t2= hour2 * 60 + minute2; int t = t2 - t1; printf("时间差是%d小时%d分",t/60,t%60);}

2、运算符优先级、结合关系、赋值运算

average.c#include int main(void){ int a,b; scanf("%d %d",&a,&b); double c = (a+b)/2.0; printf("%d和%d的平均值=%fn",a,b,c); return 0;}

(1)运算符优先级

优先级运算符运算结合关系举例1+单目不变自右向左a*+b1-单目取负自右向左a*-b2*乘自左向右a*b2/除自左向右a/b2%取余自左向右a%b3+加自左向右a+b3—减自左向右a-b4=赋值自右向左a=b

单目双目

单目运算符只有一个算子的运算符,算子出现在其右侧
双目运算符有两个算子

赋值运算符

赋值也是运算,也有结果
a=6的结果是a被赋予的值,也就是6
a=b=6——>a=(b=6)

嵌入式赋值int a=6;int b;int c= 1+ (b=a);//不利于阅读,容易产生错误

(2)结合关系

一般自左向右单目±和赋值=自右向左 3、交换变量,Dev的调试功能

程序是按步执行的

程序表达的是顺序执行的动作,而不是关系

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。