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 ,也可以指定宽度。

  1. 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

结构化程序设计的三种基本结构

顺序结构,选择结构, 循环结构 。

三种基本结构的共同特点:

  • 只有一个入口;
  • 只有一个出口;
  • 结构内的每一部分都有机会被执行到;
  • 结构内不存在“死循环”。

字符串处理函数

  1. 字符串输出函数 puts

    格式:puts (字符数组名)

    功能:把字符数组中的字符串输出到显示器。 即在屏幕上显示该字符串。
  2. 字符串输入函数 gets

    格式: gets (字符数组名)

    功能:从标准输入设备键盘上输入一个字符串。
  3. 字符串连接函数 strcat

    格式: strcat (字符数组名 1,字符数组名 2)

    功能:把字符数组2中的字符串连接到字符数组1 中字符串的后面,并删去字符串1后的串标志“\0”。 本函数返回值是字符数组 1 的首地址。
  4. 字符串拷贝函数 strcpy

    格式: strcpy (字符数组名 1,字符数组名 2)

    功能:把字符数组 2 中的字符串拷贝到字符数组 1 中。串结束标志“\0”也一同拷贝。字符数名2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。
  5. 字符串比较函数 strcmp

    格式: strcmp(字符数组名 1,字符数组名 2)

    功能:按照 ASCII 码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。

    字符串 1=字符串 2,返回值=0;

    字符串 2 > 字符串 2,返回值 > 0;

    字符串 1 < 字符串 2,返回值 < 0。

    本函数也可用于比较两个字符串常量,或比较数组和字符串常量。
  6. 测字符串长度函数 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]);

局部变量和全局变量

在一个函数内部定义的变量是内部变量,它只在本函数范围内有效。也就是说只有在本函数内才能使用它们。在此函数以外是不能使用这些变量。

说明:

    1. 主函数中定义的也只有主函数中有效,主函数也不能使用其他函数中定义的变量。
  • 2)不同函数可以使用相同名字的变量,他们代表不同的对象,互不干扰。
  • 3) 形参也就是局部变量。
  • 4)在一个函数内部,可以在复合语句中定义变量,此变量只在本复合语句中有效,这种语句叫做分程序或程序块。

在函数外部定义的变量是全局变量,全局变量可以为本文件中其他函数所共用,他的有效范围从定义变量的位置开始到本源文件结束。

说明:

  • 1)设置全局变量的作用是为了增加函数间数据联系的渠道。 (一个函数能有好几个返回值)
  • 2)建议不在必要时候不要使用

    ① 全局变量在程序的全部执行过程中都占有存储单元,而不仅在需要时候 才开辟的。

    ② 它使函数的通用性降低。

    ③ 使用全局变量过多,程序清晰性降低。

    ④ 在一个源文件中,外部变量和局部变量同名,则在局部变量的作用范围 内,外部变量被屏蔽。 P187

动态存储方式和静态存储方式

变量存在的时间来分,可以分为动态存储方式和静态存储方式。

所谓静态存储,是指在程序运行期间由系统分配固定的存储空间的方式

动态存储是指程序运行期间,根据需要进行动态的分配存储空间的方式。

在动态存储区中存放以下数据: ① 函数形参 ② 自动变量 ③ 函数调用是的现场保护和返回地址等

直接访问与间接访问

直接访问:已知变量 i 的地址。根据此地址直接对变量 i 的存储单元进行存取访问。

间接访问:先找到存放 i 地址的变量。从其中得到变量 i 的地址再找到 i 的存储单元进行访问。

一个变量的地址称为该变量的指针。存放指针的变量叫做指针变量。

C语言专业课复试整理的更多相关文章

  1. Django模板语言,过滤器整理

    Django模板语言,过滤器整理 1. add {{ value|add:"2" }} 把add后的参数加给value: 处理时,过滤器首先会强制把两个值转换成Int类型. 如果强 ...

  2. Go 语言优秀资源整理,为项目落地加速🏃

    最后更新于2019.11.22 Go 语言优秀资源整理,为项目落地加速

  3. 以太坊solidity智能合约语言学习资源整理

    暂时看到篇文章写的不错,先收集下来,后面有机会自己也整理一个 Solidity语言学习(一)Solidity语言学习(二)——Solidity的安装与编译Solidity语言学习(三)——智能合约编程 ...

  4. C语言入门基础整理

    学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...

  5. Flutter教程- Dart语言规范-知识点整理

    Flutter教程- Dart语言知识点整理 Dart语言简介 Dart语言介绍 ① 注释的方式 ② 变量的声明 ③ 字符串的声明和使用 ④ 集合变量的声明 ⑤ 数字的处理 ⑥ 循环的格式 ⑦ 抛异常 ...

  6. python语言学习笔记整理

    什么是程序? 程序等于数据结构加算法,那么数据结构是一个静态的东西,算法是一个动态的东西,我们用一个新的语言编写这个程序,我们要考虑到语言也主要由数据结构和算法相关的东西,或静态或动态的东西来构成,所 ...

  7. C语言关键字分类整理

    C语言总览: 强类型,面向过程 简洁.灵活:32个关键字(C99标准新增5个,C11新增7个),9种控制语句,34种运算符 数据类型丰富,运算符丰富 结构化(控制语句).模块化(函数) 灵魂.特色:指 ...

  8. c语言格式大整理

    1.C语言中,非零值为真,真用1表示:零值为假,假用0表示. 2.转义字符参考: \a 蜂鸣,响铃 \b 回退:向后退一格 \f 换页 \n 换行 \r 回车,光标到本行行首 \t 水平制表 \v 垂 ...

  9. pascal语言中学版整理

    P1:主菜单File中的Command shell选项,可以暂时退出Pascal,进入DOS提示符状态,但Pascal仍然驻留在内存中.输入命令exit即可返回Pascal. P3:Edit菜单中Un ...

  10. sql语言分类与整理:DQL\DML\DDL

    整体分为三类: 数据库查询语言(DQL,data QUERY LANGUAGE):对表的查询语句,select 数据库定义语言(DDL,data defined LANGUAGE):create da ...

随机推荐

  1. 我和我的DBA之路

    这几天,突然想写写这些年的工作总结,毕业至今快20年的回顾. 想到20年前,在做毕业设计的时候,当时是学的机械工程类专业,因为带毕业设计的老师兼职企业有个门户网站的需求,而我又会做点网站设计,带的老师 ...

  2. Codeforces Round 651 (Div. 2)C. Number Game(数学思维数论)

    C. Number Game 我们考虑那些状态是必胜态 我的回合时n为奇数(除1外),直接除以n则必胜 下面偶数的情况稍复杂 偶数我们能进行的操作只有除以一个奇数,需要考虑怎么把当前状态变为对手的必败 ...

  3. 2FA双因素认证 - 原理和应用

    主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 我们在登陆网站.或者通过VPN访问公司内网时,除了输入用户口令外 ...

  4. base64 转文件上传

    // 将base64转换为blob dataURLtoBlob (dataurl) { let arr = dataurl.split(',') let mime = arr[0].match(/:( ...

  5. iot梳理

    近段时间一直在搞公司的iot项目,没啥时间学习新的知识(也是自己懒),这边记录下整体对iot知识领域的认识. 首先说到iot会想到物联网,对于我们开发来说物联网很明显要用到几个不太常用到的技术,如mq ...

  6. 通过抓包分析RTP包头格式信息

    目录 RTP概览 RTP Header格式 Rtp 数据包拆解 Version Padding X(扩展) CC(CSRC计数) M(marker) PT(payload type) sequence ...

  7. 在Blazor中使用Chart.js快速创建图表

    前言 BlazorChartjs是一个在Blazor中使用Chart.js的库(支持Blazor WebAssembly和Blazor Server两种模式),它提供了简单易用的组件来帮助开发者快速集 ...

  8. 03.Java数据结构问题

    目录介绍 3.0.0.1 在arrayList中System.arraycopy()和Arrays.copyOf()方法区别联系?System.arraycopy()和Arrays.copyOf()代 ...

  9. Java SE 22 新增特性

    Java SE 22 新增特性 作者:Grey 原文地址: 博客园:Java SE 22 新增特性 CSDN:Java SE 22 新增特性 源码 源仓库: Github:java_new_featu ...

  10. 记录--vue3的宏到底是什么东西?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 从vue3开始vue引入了宏,比如defineProps.defineEmits等.我们每天写vue代码时都会使用到这些宏,但是你有 ...