c语言期末复习笔记1
目录
1.流程图
2.变量与类型
3.格式化输入输出
4.判断
5.循环
6.数组
7.函数
8.后面的指针与结构体(主要有点多)留在下一篇文章再写。
1.流程图
写一个程序,首先要了解它是如何进行的
要素:
2.变量与类型
变量,常量,函数的名字:标识符,由下划线,数字,字母组成。
例:ab5c 正确; __a1bc 正确; ¥¥abc 错误。
先讲类型,正如我们所知的int, char, double等都是类型,那先看看它们需要的空间大小
变量属于什么类型,计算机开辟就多大的空间储存。
整形的:int -----4个字节;short-----2个字节;long-----4或8个字节(取决于编译器,通常为4个字节);long long-----8个字节(别想了没有long long long的)。
字符的:char----1个字节(通常考它能存哪些‘ a' ,'\0xff'类似的,字符在c语言中以ASCII来存储),char 类型的只能用单引号,单引号也只能用于一个字符,多个以上的用双引号----要用数组来存。
例:char a='A'; char a[]="String"。
浮点型的(存小数的):double-----8个字节;float-----4个字节。它两个用%lf,%f,别写成了%d。
补,字节数可以用sizeof()函数来计算(这个不管'\0'),strlen()是用来计算长度的(原理就是依次计数直到'\0'停止,在数组中计算数组长度可以用这两个
例:char a[]; 1.sizeof(a)/sizeof(a[0])-1(减一是去掉计算的\0),2.strlen(a);这两个要引头文件<string.h>。
变量
类型 变量名=常量;(赋值)。
变量又有全局变量与局部变量之分
#include<stdio.h> int num1=1;int main() {int num2=2;return 0; }
这之中num1为全局变量,num2为局部变量,
全局变量:定义于所有函数之外,作用于多个函数体。
局部变量:定义于函数体内,只在这个函数里生效,出则失效。
补:1.在函数体里局部优于全局。
2.static作用下会有不一样的效果,作用于局部变量会让(函数里的)变量的值出函数后不被失效,作用于全局变量会使从这个文件到另一个文件的引用失效(用extend 来引用)。
***无语的是:c语言中的变量要定义于(函数里的)最开头,否则要出错。
3.格式化输入输出
c的预处理:在对源程序进行编译前,先对源程序中编译预处理命令进行处理。例:#开头的行,#include<stdio.h>,#define;#include(文件包括),#define(宏替换);注预处理不会帮你计算结果,只是符号的替换,就像
#define muplite(x,y) x*y;//要用来定义常量#define 标识符 常量;
int main()
{int x;x=muplite(3+2,3-1);//这个程序中3+2*3-1这样来算,如果要实现原本的目的就这样写(x)*(y)
}
#include<文件名>和#include“ 文件名”的区别:< >里面的是系统指定的;“ "里面是你自己搞的。
输入输出:输入就是你用键盘的其他东西将数据输入,输出(打印)就是计算机将结果展现于电脑屏幕。
输入常用的函数:scanf(在有些编译器上用scanf_s),getchar(),gets()(输出字符串)
注,scanf()用的时候输入数据时,怎么写的就怎么输,例如scanf(“%d%d”,&a,&b)输入时每个数据间要空格,&(取地址符)不要忘记(除了输出整个数组,数组名本身就是地址)。getchar()会接收空格。
输出常用的函数:printf();putchar();puts().
相关的字符于操作:我们熟悉的%d,%f等为格式符,不光这个,还有普通字符,转义字符,修饰符
%d,%s,%f,%e等------格式符
printf("china")-----中的china为普通字符
\n,\t,\r,\0等--------为转义字符
%lf(中的l),%10c(中的10),%-7c(中的-7)------为修饰符(修饰格式的符号)
注:1.修饰符中的‘ - ‘让数据向左对齐(同时也是空余空间向右对齐。
2。对于%7.2f我们要分开看,首先7是整个位数(不够的则再后补0),.2则是保留多少位。
3.转义字符
\a---响铃 \b--退格 \f--换页 \n--换行 \r--回车
\t--水平制表(tab) \v--垂直制表(让\v后的下降一行)
\\--\ \*--* \"--" \?--? \0--空字符(字符串结束的标志)
\ddd---一个字符(1到3位八进制数ASCII码值代表的字符)
\xdd--一个字符(1到2位十六进制数ASCII码值代表的字符)
在printf()函数中无法分辨如\, * ," ,? 等,要将这些打印出来则要加\ 在它们前。
4.判断
我们经常会遇到一些题要用到条件的判断,先从关系运算符开始。
1.
>,<,>=,<=的优先级大于==,!=
2.逻辑值中0为假,其他的数为真,逻辑运算符:
&&, ||, !
与 或 非
优先级(运行时哪个先起效):!--->&&---->||
注:1.&&是会运行到不符条件那儿,例x=2,y=2,z=0(++x>1)&&(y++<1)&&(z++<1),如果(z++<1)为假,而&&运算符会把前两个给计算出来。x=3,y=3,z=0.
3.判断语句(两种写法)
1.
if(判断条件) if(判断条件)语句1; 语句1;else else if(判断语句)语句2; 语句2;·····else//就近原则,与最近的if结合。语句n;if()语句可以嵌套if(){ if()语句;}
补:还有一个三目操作符:表达式1 ? 表达式2:表达式3
执行:先求解表达式1,为真(非零),求表达式2为假(为0),求表达式3,例(a>b)?a:b;若a>b为真,则结果为a,反之,为b.
2.swtich()语句
switch (表达式) 表达式=常量表达式n 执行语句m { case 常量表达式1 :语句1;break; case 常量表达式2 :语句2; break; ┇ case 常量表达式n :语句m; break;//找到结果,break是跳出来(用不用break;看要求)··· default : //没结果时才轮到它语句m+1;
}
5.循环
循环有while(),do while(),for()循环
while( 可以进行的条件(循环条件)),通常需要++符号来保证进行(否则死循环,光标一直动)
while(i<5)//这里是先判断在执行语句。
{语句;i++;
}
do while(),和while()差不多但
do
{语句;i++;
}while(i<5);//这里是先执行语句后判断。while()后的;不要忘记
for((初始值;条件;调整值)
for(i=0;i<=10;i++)//初始值和调整值可以多个用,隔开{printf("hehe\n");}
//for(;;)循环的初始化,判断值与调整值都可以省去;判断值省去则恒为真(死循环)
(这时break就有用了)
补:break与continue在循环中用法有差异。continue则是跳过本次循环, break是从当前循环体系出去,若是双循环例
1.for(i=0;i<10;i++)
{for(j=0;j<10;j++){break;//break则是跳出有j这个循环}//来到这个循环(break)
}
2.for(i=0;i<10;i++)
{for(j=0;j<10;j++){if(i==5){ 语句1;continue;//当i等于5并执行这条语句时,就跳过此次循环(j要循环10次,只是跳过这一次),语句2就不会执行语句2;}}
}
6.数组
1.数组:具有相同数据类型的元素的集合,是一组有序数据的集合,这个集合用一个数组名来表示。
2.格式:类型说明符 数组名[常量表达式]。
扩:1.数组有静态内存分配和动态内存分配,静态就是我们常用的 int array[10]([]里就是我们提前分配的大小,动态这要用malloc()函数(头文件<malloc。h>),int* array=(int*)malloc(sizeof(int)*8)等价于int array[8];这个数组空间是全局的,要用free()来释放内存
2.字符串其实就是字符数组。
3.一维,二维数组
一维数组:就像int arr[];char arr[10],在c语言中int 类型的数组只有一个个用循环输出,而字符类的可以用%s来输出。写法:
int arr[3]={1,2,3};
char arr[3]={'a','b','c'};
char arr[3]={"abc"}
char arr[3]="abc"//字符数组会在最后添加‘\0’,计算大小可不要忘记
二维数组:像int array[行][列];二维数组行可以省略,列不可以
int arr[2][2]={{1,2},{3,4}};
char arr[2][2]={"ad","cb"};//每一行的元素可以不写满;
注:1.数组初始化可以直接赋0;int arr[10]={0};
2.数组本身就是地址的集合(连续的),数组名就可以看成这一系列地址的首个元素的地址(在sizeof()中为一个数组)。(通常以16进制来打印A=10,B=11,C=12,D=13,E=14,F=15)
3.数组不可直接赋值给另一数组,arr=brr(错误的),需要一个一个的将元素赋值
4.冒泡排序:冒泡;选择排序:选择。
7.函数
函数的定义:一个较大的程序可分为若干个程序模块,每一个模块用来实现一个特定的功能。在高级语言中用子程序实现模块的功能。子程序由函数来完成。一个C程序可由一个主函数(main())和若干个其他函数(自己写的)构成。
写法(自己写的):
返回类型(若不返回就用void) 函数名( 类型 变量名,······,类型 变量名)//每个变量用逗号隔开
{语句;return xx;//如果有返回类型一定要返回
}
补:1.我们还可以去引用函数,像sizeof(),strlen()等,推荐一个网站:http://www.cplusplus.com
2.定义的函数若在主函数后要将其引用于前就像
#include<stdio.h>
int add(int x,int y);//可以写在这
int main()
{int add(int x,int y);//也可以写在这(要在引用的语句前)int i,a=0,b=0;语句;i=add(a,b)//a,b把值传过去,然后返回的值用i来接收(没有返回值就不用接收,把i=去掉就行了)//引用语句
}
int add(int x,int y)
{return x+y;
}
3.递归(天才用的)
举个例子:
void add(int n)
{if(n=20)//设置条件使得递归不变成死循环{return 1;}else{return add(n-1)+1;//可以理解为循环的逆过程,它是从最里面开始返回值一直向外走。
}
4.数组传参给函数,只是将首地址传过去可以这么写
void add(int *array)
void add(int array[])//这两种写法等价
8.后面的指针与结构体(主要有点多)留在下一篇文章再写。
c语言期末复习笔记1相关推荐
- 【期末复习笔记】知识产权法——著作权、专利法、商标权
[期末复习笔记]知识产权法 著作权 著作权法不予以保护的客体 著作权的归属 著作权的内容 著作人身权 著作财产权 著作权的取得方式:自动取得 著作权的保护期限: 邻接权 表演者权 表演者义务 表演者权 ...
- 南邮部分期末复习笔记汇总@tou
README 知识库链接:tou/njupt-cst-notes 这个知识库存放了部分我在 NJUPT-CST 专业就读期间的期末复习笔记,这一部分公开的语雀笔记是我众多笔记中总结的还算 OK 的,仅 ...
- 【期末复习】北京邮电大学《数字内容安全》课程期末复习笔记(4. 多媒体安全)
[相关链接] [期末复习]北京邮电大学<数字内容安全>课程期末复习笔记(1. 绪论) [期末复习]北京邮电大学<数字内容安全>课程期末复习笔记(2. 信息隐藏与数字水印) [期 ...
- 天津工业大学c语言题库,天津工业大学it1创新2届c语言期末复习.ppt
天津工业大学it1创新2届c语言期末复习 复习;题型;第一章 数据类型.运算符.表达式;1. 数据类型;C语言提供的整数类型 short int (short) unsigned short int ...
- c语言运行k值不变,C语言期末复习(改完).doc
C语言期末复习(改完).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...
- c语言输出矩形及对角线,[新]C语言期末复习,经典练习题+知识点总结+模拟考题 三位一体,完胜c语言!!!!考期必备神器...
C语言期末复习(平时练习答案) [特别适用于千千万北航学子] 考试重点:(编程题)排序,选择与冒泡排序,,各种进制转换....] 第二次大作业- 前驱.后继字符 1. [问题描述] 从键盘输入一个字符 ...
- 【Python数据分析与可视化】期末复习笔记整理(不挂科)
[Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...
- C语言程序设计教程习题和答案-C语言期末复习必看资料
C语言期末复习必看资料 喜欢的点个赞再走呗!万分感谢!
- RFID原理及应用期末复习笔记 | 1.RFID概述【完结✿✿ヽ(°▽°)ノ✿】
系列索引:RFID原理及应用期末复习笔记 | 快速索引 RFID是博主大三下的一门专业课,因为疫情缩短学期进程提前结课,所以期末考试也来的更早,这里就简单记录一下自己复习时的一些笔记,也给后来的学弟学 ...
最新文章
- 装箱算法 java_贪心算法装箱问题-Java代码
- OpenCV下三对点计算仿射变换实现图像的水平镜像(翻转)的详细说明和源程序
- 从表到里学习JVM实现
- C++设计模式之适配器模式
- Copying to tmp table Problem Solving
- postgresql学习_在PostgreSQL中学习这些快速技巧
- java中布局管理器的作用_使用Java布局管理器的目的是什么?
- 微课|中学生可以这样学Python(5.6.1节):列表推导式2
- LeetCode 96——不同的二叉搜索树
- 2011年国外最受欢迎的15个音乐网站
- squid日志中关键字的含义
- 婚纱摄影五大标杆品牌告诉你,客资转化居然可以这么玩?
- 12.Memcached 与 Redis 区别
- Spring cloud Gateway介绍
- python语言磁力搜索引擎源码公开,基于DHT协议
- 快来领取哔哩哔哩412张超清壁纸!
- 苹果系统macos腾讯企点无法打开麦克风权限
- 列表解析(值得学习)
- 形式逻辑(01)你的逻辑怎么样?
- Android Hawk数据库 github开源项目,深入理解JVM的核心知识点