目录

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相关推荐

  1. 【期末复习笔记】知识产权法——著作权、专利法、商标权

    [期末复习笔记]知识产权法 著作权 著作权法不予以保护的客体 著作权的归属 著作权的内容 著作人身权 著作财产权 著作权的取得方式:自动取得 著作权的保护期限: 邻接权 表演者权 表演者义务 表演者权 ...

  2. 南邮部分期末复习笔记汇总@tou

    README 知识库链接:tou/njupt-cst-notes 这个知识库存放了部分我在 NJUPT-CST 专业就读期间的期末复习笔记,这一部分公开的语雀笔记是我众多笔记中总结的还算 OK 的,仅 ...

  3. 【期末复习】北京邮电大学《数字内容安全》课程期末复习笔记(4. 多媒体安全)

    [相关链接] [期末复习]北京邮电大学<数字内容安全>课程期末复习笔记(1. 绪论) [期末复习]北京邮电大学<数字内容安全>课程期末复习笔记(2. 信息隐藏与数字水印) [期 ...

  4. 天津工业大学c语言题库,天津工业大学it1创新2届c语言期末复习.ppt

    天津工业大学it1创新2届c语言期末复习 复习;题型;第一章 数据类型.运算符.表达式;1. 数据类型;C语言提供的整数类型 short int (short) unsigned short int ...

  5. c语言运行k值不变,C语言期末复习(改完).doc

    C语言期末复习(改完).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  6. c语言输出矩形及对角线,[新]C语言期末复习,经典练习题+知识点总结+模拟考题 三位一体,完胜c语言!!!!考期必备神器...

    C语言期末复习(平时练习答案) [特别适用于千千万北航学子] 考试重点:(编程题)排序,选择与冒泡排序,,各种进制转换....] 第二次大作业- 前驱.后继字符 1. [问题描述] 从键盘输入一个字符 ...

  7. 【Python数据分析与可视化】期末复习笔记整理(不挂科)

    [Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...

  8. C语言程序设计教程习题和答案-C语言期末复习必看资料

    C语言期末复习必看资料 喜欢的点个赞再走呗!万分感谢!

  9. RFID原理及应用期末复习笔记 | 1.RFID概述【完结✿✿ヽ(°▽°)ノ✿】

    系列索引:RFID原理及应用期末复习笔记 | 快速索引 RFID是博主大三下的一门专业课,因为疫情缩短学期进程提前结课,所以期末考试也来的更早,这里就简单记录一下自己复习时的一些笔记,也给后来的学弟学 ...

最新文章

  1. 装箱算法 java_贪心算法装箱问题-Java代码
  2. OpenCV下三对点计算仿射变换实现图像的水平镜像(翻转)的详细说明和源程序
  3. 从表到里学习JVM实现
  4. C++设计模式之适配器模式
  5. Copying to tmp table Problem Solving
  6. postgresql学习_在PostgreSQL中学习这些快速技巧
  7. java中布局管理器的作用_使用Java布局管理器的目的是什么?
  8. 微课|中学生可以这样学Python(5.6.1节):列表推导式2
  9. LeetCode 96——不同的二叉搜索树
  10. 2011年国外最受欢迎的15个音乐网站
  11. squid日志中关键字的含义
  12. 婚纱摄影五大标杆品牌告诉你,客资转化居然可以这么玩?
  13. 12.Memcached 与 Redis 区别
  14. Spring cloud Gateway介绍
  15. python语言磁力搜索引擎源码公开,基于DHT协议
  16. 快来领取哔哩哔哩412张超清壁纸!
  17. 苹果系统macos腾讯企点无法打开麦克风权限
  18. 列表解析(值得学习)
  19. 形式逻辑(01)你的逻辑怎么样?
  20. Android Hawk数据库 github开源项目,深入理解JVM的核心知识点

热门文章

  1. 物联网技术齐上阵 未来农场长这样(来源: 腾讯科技)
  2. 如何刻服务器系统盘,如何配置远程刻录服务器
  3. 利用ai分析人形,移动鼠标爆头
  4. 未来计算机的新形态,未来电脑终极形态?戴尔XPS 10真机曝光
  5. java音乐网站 的主要任务和目的_基于Javaweb音乐网站设计与实现.doc
  6. Descent Method for 最小化(最优化)问题 (一)
  7. android zxing扫码 生成二维码
  8. python乱码怎么解决方法_Python 乱码问题解决办法
  9. 烘焙店装修是否需要炫彩夺目
  10. 程序员减脂神仙吃法分享