C语言专业课复试整理
C复试专业基础测试整理
运行C程序的步骤和方法
编辑、编译、连接和运行 。
编辑是用户把编写好的C语言源程序输入计算机,以文本文件的形式存放在磁盘上。其标识为:“文件名.c”。
编译是把C语言源程序翻译成用二进制指令表示的目标文件。编译过程由C编译系统提供的编译程序完成。 其标识为:“文件名.obj”。
程序连接过程是用系统提供的连接程序将目标程序、库函数或其他目标程序连接装配成可执行的目标程序。 其标识为:“文件名.exe”。
运行程序是指将可执行的目标程序调入内存投入运行。
C语言的基本数据类型 (字节数都是在64位机器中,Vscode测试)
- 基本类型
- 整形
- 短整型(short int 2字节)
- 基本整形 (int 4字节)
- 长整型 (long int 4字节)
- 字符型(char 1字节)
- 浮点型
- 单精度浮点型(float 4字节)
- 双精度浮点型(double 8字节)
- 长双精度浮点型(long double 16字节)
- 枚举类型(enum)
- 整形
- 构造类型
- 数组类型
- 结构类型(struct)
- 共用体类型(union)
- 指针类型(* 8字节)
- 空类型(void)
常量与变量的概念,定义与使用方法
值不会改变的量称为常量,值可变的量称为变量。
可与数据类型结合起来分类,例如,可分为整形常量,整型变量,浮点常量,浮点变量,字符常量,字符变量等。
掌握不同数据类型的输入和输出函数:getchar、putchar以及scanf、printf等.
getchar 函数的功能是从键盘上输入一个字符。其一般形式为: getchar()。
putchar 函数是字符输出函数,其功能是在显示器上输出单个字符。其一般形式为:putchar(字符变量) 。
scanf 函数
scanf(格式控制,地址表列),例如 scanf("%d%d%d", &a,&b.&c); 地址表列是由若干个地址组成的表列,可以是变量的地址或者字符串首地址,&是地址运算符,用在地址表列中。“%d%d%d”表示按照十进制整形输入三个数,输入时俩个数据之间以一个 空格或多个空格间隔,也可以用 enter 键、Tab 键。
printf 函数
1)d 格式符,用来输出十进制整数。
① %d,按照十进制整型数据,实际长度输出。
② %md,数据所占列数小于 m,左端补空格。(指定宽度)数据所占列数大于 m,原样输出。
③ %ld,输出长整形数据。
2)o 格式符(把内存单元的二进制数按照八进制数字输出)。
3)x格式符,以十六进制输出,不带正负号,可以用%lx, 也可以指定宽度。
4)u 格式符,%u 无符号,十进制输出,可以用%lu ,也可以指定宽度。
- c 格式符,用来输出一个字符。
6)s 格式符,用来输出一个字符串。
① %s, For example : printf(“%s”,”china”);
② %ms, 数据所占列数小于 m,左端补空格。数据所占列数大于 m,原样输出。
③ %-ms, 数据所占列数小于 m,右端补空格。数据所占列数大于 m,原样输出。
④ %m.ns,在地址中要 m 个位置,取字符串的前 n 个放在 m 个位置的偏右点,左端补空格。如果 m<n,相当于%ms输出。
⑤ %-m。ns 在地址中要 m 个位置,取字符串的前 n 个放在 m 个位置的偏左点,右端补空格。如果 m<n,相当于%-ms输出。。
注:不写 m 自动认为 m=n,n不写不行。
运算之间的优先级和结合性
优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
---|---|---|---|---|---|
1 | [] | 数组下标 | 数组名[整型表达式] | 左到右 | |
() | 圆括号 | (表达式)/函数名(形参表) | |||
. | 成员选择(对象) | 对象.成员名 | |||
-> | 成员选择(指针) | 对象指针->成员名 | |||
2 | - | 负号运算符 | -算术类型表达式 | 右到左 | 单目运算符 |
(type) | 强制类型转换 | (纯量数据类型)纯量表达式 | |||
++ | 自增运算符 | ++纯量类型可修改左值表达式 | 单目运算符 | ||
-- | 自减运算符 | --纯量类型可修改左值表达式 | 单目运算符 | ||
* | 取值运算符 | *指针类型表达式 | 单目运算符 | ||
& | 取地址运算符 | &表达式 | 单目运算符 | ||
! | 逻辑非运算符 | !纯量类型表达式 | 单目运算符 | ||
~ | 按位取反运算符 | ~整型表达式 | 单目运算符 | ||
sizeof | 长度运算符 | sizeof 表达式 | |||
sizeof(类型) | |||||
3 | / | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
* | 乘 | 表达式*表达式 | 双目运算符 | ||
% | 余数(取模) | 整型表达式%整型表达式 | 双目运算符 | ||
4 | + | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
- | 减 | 表达式-表达式 | 双目运算符 | ||
5 | << | 左移 | 整型表达式<<整型表达式 | 左到右 | 双目运算符 |
>> | 右移 | 整型表达式>>整型表达式 | 双目运算符 | ||
6 | > | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
>= | 大于等于 | 表达式>=表达式 | 双目运算符 | ||
< | 小于 | 表达式<表达式 | 双目运算符 | ||
<= | 小于等于 | 表达式<=表达式 | 双目运算符 | ||
7 | == | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
!= | 不等于 | 表达式!= 表达式 | 双目运算符 | ||
8 | & | 按位与 | 整型表达式&整型表达式 | 左到右 | 双目运算符 |
9 | ^ | 按位异或 | 整型表达式^整型表达式 | 左到右 | 双目运算符 |
10 | | | 按位或 | 整型表达式|整型表达式 | 左到右 | 双目运算符 |
11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
12 | || | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
13 | ? : | 条件运算符 | 表达式1? 表达式2: 表达式3 | 右到左 | 三目运算符 |
14 | = | 赋值运算符 | 可修改左值表达式=表达式 | 右到左 | |
/= | 除后赋值 | 可修改左值表达式/=表达式 | |||
*= | 乘后赋值 | 可修改左值表达式*=表达式 | |||
%= | 取模后赋值 | 可修改左值表达式%=表达式 | |||
+= | 加后赋值 | 可修改左值表达式+=表达式 | |||
-= | 减后赋值 | 可修改左值表达式-=表达式 | |||
<<= | 左移后赋值 | 可修改左值表达式<<=表达式 | |||
>>= | 右移后赋值 | 可修改左值表达式>>=表达式 | |||
&= | 按位与后赋值 | 可修改左值表达式&=表达式 | |||
^= | 按位异或后赋值 | 可修改左值表达式^=表达式 | |||
|= | 按位或后赋值 | 可修改左值表达式|=表达式 | |||
15 | , | 逗号运算符 | 表达式,表达式,… | 左到右 | 从左向右顺序结合 |
位运算
运算符 | 意义 | 示例 | 运算结果 |
---|---|---|---|
& | 与 | x&y | 如果 x 和 y 都为 1,则得到 1;如果 x 或 y 有一个为0,则得到 0 |
| | 或 | x|y | 如果 x 和 y 都为 0,则得到 0;如果 x 或 y 有一个为 1,则得到 1; |
^ | 异或 | x^y | 如果 x 或 y 的值不同,则得到 1;如果两个值相同,则得到 0 |
~ | 非 | ~x | 如果 x 为 0,则得到 1,如果 x 是 1,则得到 0 |
结构化程序设计的三种基本结构
顺序结构,选择结构, 循环结构 。
三种基本结构的共同特点:
- 只有一个入口;
- 只有一个出口;
- 结构内的每一部分都有机会被执行到;
- 结构内不存在“死循环”。
字符串处理函数
- 字符串输出函数 puts
格式:puts (字符数组名)
功能:把字符数组中的字符串输出到显示器。 即在屏幕上显示该字符串。 - 字符串输入函数 gets
格式: gets (字符数组名)
功能:从标准输入设备键盘上输入一个字符串。 - 字符串连接函数 strcat
格式: strcat (字符数组名 1,字符数组名 2)
功能:把字符数组2中的字符串连接到字符数组1 中字符串的后面,并删去字符串1后的串标志“\0”。 本函数返回值是字符数组 1 的首地址。 - 字符串拷贝函数 strcpy
格式: strcpy (字符数组名 1,字符数组名 2)
功能:把字符数组 2 中的字符串拷贝到字符数组 1 中。串结束标志“\0”也一同拷贝。字符数名2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。 - 字符串比较函数 strcmp
格式: strcmp(字符数组名 1,字符数组名 2)
功能:按照 ASCII 码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
字符串 1=字符串 2,返回值=0;
字符串 2 > 字符串 2,返回值 > 0;
字符串 1 < 字符串 2,返回值 < 0。
本函数也可用于比较两个字符串常量,或比较数组和字符串常量。 - 测字符串长度函数 strlen
格式:strlen(字符数组名)
功能:测字符串的实际长度(不含字符串结束标志‘\0’) 并作为函数返回值。
常用宏定义的格式和文件操作
// 求两个整数相除的余数
#define MOD(a, b) a % b
// 交换两个元素
#define swap(x, y) \
{ \
int t; \
t = x; \
x = y; \
y = t; \
}
// 判断是否是字母
#define ISALPHA(c) ((c >= 'A' && c < 'Z') || (c > 'a' && c < 'z') ? 1 : 0)
// fopen(文件名,访问模式) 函数来打开文件
FILE *p = fopen("D:\\Vscode_coding\\Blog\\test.txt", "r"); //文件目录用中文会出错
// 读取一个文件的一个字符
c = getc(p);
// 给文件写入一个字符
putc('a', p);
// 按行读取,当读到文件尾时结束,返回NULL。
fgets(s, sizeof(s), p);
// 按行写入
fputs("hello world", p);
// 从文件中读取输入
fscanf(p, "%d%d", &a, &b); //文件内容为:1 2
// 将结果写入到文件里
fprintf(p, "arr[%d] = %d\n", i, arr[i]);
局部变量和全局变量
在一个函数内部定义的变量是内部变量,它只在本函数范围内有效。也就是说只有在本函数内才能使用它们。在此函数以外是不能使用这些变量。
说明:
- 主函数中定义的也只有主函数中有效,主函数也不能使用其他函数中定义的变量。
- 2)不同函数可以使用相同名字的变量,他们代表不同的对象,互不干扰。
- 3) 形参也就是局部变量。
- 4)在一个函数内部,可以在复合语句中定义变量,此变量只在本复合语句中有效,这种语句叫做分程序或程序块。
在函数外部定义的变量是全局变量,全局变量可以为本文件中其他函数所共用,他的有效范围从定义变量的位置开始到本源文件结束。
说明:
- 1)设置全局变量的作用是为了增加函数间数据联系的渠道。 (一个函数能有好几个返回值)
- 2)建议不在必要时候不要使用
① 全局变量在程序的全部执行过程中都占有存储单元,而不仅在需要时候 才开辟的。
② 它使函数的通用性降低。
③ 使用全局变量过多,程序清晰性降低。
④ 在一个源文件中,外部变量和局部变量同名,则在局部变量的作用范围 内,外部变量被屏蔽。 P187
动态存储方式和静态存储方式
变量存在的时间来分,可以分为动态存储方式和静态存储方式。
所谓静态存储,是指在程序运行期间由系统分配固定的存储空间的方式
动态存储是指程序运行期间,根据需要进行动态的分配存储空间的方式。
在动态存储区中存放以下数据: ① 函数形参 ② 自动变量 ③ 函数调用是的现场保护和返回地址等
直接访问与间接访问
直接访问:已知变量 i 的地址。根据此地址直接对变量 i 的存储单元进行存取访问。
间接访问:先找到存放 i 地址的变量。从其中得到变量 i 的地址再找到 i 的存储单元进行访问。
一个变量的地址称为该变量的指针。存放指针的变量叫做指针变量。
C语言专业课复试整理的更多相关文章
- Django模板语言,过滤器整理
Django模板语言,过滤器整理 1. add {{ value|add:"2" }} 把add后的参数加给value: 处理时,过滤器首先会强制把两个值转换成Int类型. 如果强 ...
- Go 语言优秀资源整理,为项目落地加速🏃
最后更新于2019.11.22 Go 语言优秀资源整理,为项目落地加速
- 以太坊solidity智能合约语言学习资源整理
暂时看到篇文章写的不错,先收集下来,后面有机会自己也整理一个 Solidity语言学习(一)Solidity语言学习(二)——Solidity的安装与编译Solidity语言学习(三)——智能合约编程 ...
- C语言入门基础整理
学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...
- Flutter教程- Dart语言规范-知识点整理
Flutter教程- Dart语言知识点整理 Dart语言简介 Dart语言介绍 ① 注释的方式 ② 变量的声明 ③ 字符串的声明和使用 ④ 集合变量的声明 ⑤ 数字的处理 ⑥ 循环的格式 ⑦ 抛异常 ...
- python语言学习笔记整理
什么是程序? 程序等于数据结构加算法,那么数据结构是一个静态的东西,算法是一个动态的东西,我们用一个新的语言编写这个程序,我们要考虑到语言也主要由数据结构和算法相关的东西,或静态或动态的东西来构成,所 ...
- C语言关键字分类整理
C语言总览: 强类型,面向过程 简洁.灵活:32个关键字(C99标准新增5个,C11新增7个),9种控制语句,34种运算符 数据类型丰富,运算符丰富 结构化(控制语句).模块化(函数) 灵魂.特色:指 ...
- c语言格式大整理
1.C语言中,非零值为真,真用1表示:零值为假,假用0表示. 2.转义字符参考: \a 蜂鸣,响铃 \b 回退:向后退一格 \f 换页 \n 换行 \r 回车,光标到本行行首 \t 水平制表 \v 垂 ...
- pascal语言中学版整理
P1:主菜单File中的Command shell选项,可以暂时退出Pascal,进入DOS提示符状态,但Pascal仍然驻留在内存中.输入命令exit即可返回Pascal. P3:Edit菜单中Un ...
- sql语言分类与整理:DQL\DML\DDL
整体分为三类: 数据库查询语言(DQL,data QUERY LANGUAGE):对表的查询语句,select 数据库定义语言(DDL,data defined LANGUAGE):create da ...
随机推荐
- Lazada电商api接口 获取商品详情 数据采集
iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Lazada电商数据采集API,供用户按需调用. 接口使用详情请参考Lazada接口文档 接 ...
- USB数据传输与手机授权:充电宝常规使用不需要授权
概述 此篇为解答充电宝骗局问题,骗局概述:两个人做局,以充测试充电宝是否损坏为由,插到受骗者手机上,受骗者允许了手机弹出的授权请求后,偷偷将病毒注入手机. Q:什么情况下手机会弹出授权? A:手机用数 ...
- K8s中Role(ClusterRole)资源类型rules字段详解
在Kubernetes(K8s)中,Role资源类型的rules字段用于定义哪些操作(verbs)可以在哪些资源(resources)上执行.Role是一种命名空间级别的资源,它允许你对命名空间内的资 ...
- 在使用sudo apt-get -f install的时候,出现了更换介质的问题-依赖问题
这四个选项都选上,然后apt-get update 在修补依赖问题,apt-get -f install 就好了
- 投屏项目中Sink端CPU占用过高问题
一.背景 今天来总结一下,自己在项目中遇到的一个CPU占用过高的问题,详细的结束从发现到定位在到解决问题的过程. 原因是性能测试那边提出了一个bug,就是在投屏过程中,平板端也就是Sink端功耗非常高 ...
- C#通义千问apl
1.在阿里申请和开通模型服务灵积:链接地址 2.在gitee下载代码:Gitee链接 3.在代码中更换你的API-KEY 4.注意要开通:通义千问/qwen-turbo模型 5.如图所示
- 记录--Vue3基于Grid布局简单实现一个瀑布流组件
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在学习Grid布局之时,我发现其是CSS中的一种强大的布局方案,它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局 ...
- WPF自定义Panel:让拖拽变得更简单
在 WPF 应用程序中,拖放操作是实现用户交互的重要组成部分.通过拖放操作,用户可以轻松地将数据从一个位置移动到另一个位置,或者将控件从一个容器移动到另一个容器.然而,WPF 中默认的拖放操作可能并不 ...
- KingbaseES V8R6 流复制冲突分类以及对应解决方案
背景 据实施人员反馈发现如下报错: FATAL: terminating connection due to conflict with recovery DETAIL: User query mig ...
- KingbaseES V8R3集群运维案例之---流复制异步同步及全同步模式配置
案例说明: 通过案例描述KingbaseES V8R3集群异步.同步及全同步强一致性配置,本案例为一主二备的架构. 适用版本: KingbaseES V8R3 集群架构: 集群复制配置参数说明: 1) ...