当前位置: 华文世界 > 教育

NCRE二级C语言:弄懂程序结构与数据类型

2024-10-13教育

参考2023年考试大纲,如文章Visual Studio 2022 C/C++之三:计算机等级考试二级所述,这里主要讲解考试内容的前两个章节.

NCRE 2C 考试内容

C语言的程序结构

C语言程序的结构通常包括以下几个主要部分:在预处理指令中引入头文件,通过#define #ifdef 等设定引入的规则。在使用数据之前先定义数据。源程序应该便于阅读,按照程序块进行适当的缩进,与C语言的风格相适应。下面详细介绍

1. 预处理指令: 以 `#` 开头的指令,用于在编译前处理源代码。常见的预处理指令包括 `#include`(引入头文件)、`#define`(定义宏)等。

#include <stdio.h> // 设定在引入mylib.h后就定义宏,避免多次引入mylib.h#ifndef IN_MYLIB_H#define IN_MYLIB_H#include "mylib.h"#endif

2. 函数定义: C语言程序的基本单位是函数。每个程序至少有一个 `main` 函数,它是程序的入口点。函数可以有参数并返回值。

int main() { // 程序代码 return 0;}

3. 变量声明: 在函数内部或外部声明变量,以便在程序中使用。变量必须在使用之前声明,并且可以指定类型(如 `int`、`float`、`char` 等)。

int a; // 整数变量float b; // 浮点数变量

4. 语句和表达式: C语言程序由语句和表达式构成,语句用于执行操作,表达式用于计算值。常见的语句包括赋值语句、控制语句(如 `if`、`for`、`while` 等)。

a = 10; // 赋值语句if (a > 5) { printf("a is greater than 5\n");}

5. 注释: 用于解释代码,增加可读性。C语言支持单行注释(`//`)和多行注释(`/* ... */`)。

// 这是一个单行注释/* 这是一个多行注释 */

6. 返回值: `main` 函数通常返回一个整数值,表示程序的执行状态。返回0表示程序正常结束,返回其他值表示出错。

return 0; // 正常结束

7.示例程序: 以下是一个简单的C语言程序示例,展示了上述结构:

/* * 本程序用来演示C语言的基本程序结构 */#include <stdio.h> int main() { int a = 10; // 声明并初始化变量 if (a > 5) { printf("a is greater than 5\n"); // 输出 } return 0; // 返回0表示正常结束}

这个程序包含了预处理指令、函数定义、变量声明、控制语句和输出语句,展示了C语言程序的基本结构。至于风格往往是一个团队的习惯,C语言推荐如下风格,很多开源软件也是如此,建议大家遵循,这样能提高交流的效率。

1. 命名约定

- 变量和函数命名:使用有意义的名称,通常采用小写字母,单词之间用下划线分隔(如 `my_variable`)或采用驼峰命名法(如 `myVariable`)。

- 常量命名:常量通常使用全大写字母,单词之间用下划线分隔(如 `MAX_SIZE`)。

2. 缩进和格式化

- 缩进:使用一致的缩进风格,通常使用4个空格或一个制表符(Tab)。

- 代码块:在控制结构(如 `if`、`for`、`while`)中,代码块应当用大括号 `{}` 包围,即使只有一行代码。

- 行宽:尽量保持每行代码不超过80-120个字符,以提高可读性。

3. 注释

- 单行注释:使用 `//` 进行简单的注释。

- 多行注释:使用 `/* ... */` 来注释较长的说明。

- 注释内容:注释应当清晰明了,解释代码的意图、逻辑或复杂的算法。

4. 代码结构

- 函数:每个函数应当完成一个特定的任务,避免过长的函数。函数的长度应适中,通常不超过50-100行。

- 模块化:将相关的函数和数据结构放在一起,使用头文件(`.h`)进行声明,源文件(`.c`)进行实现。

5. 错误处理

- 在编写代码时,考虑如何处理潜在的错误情况,例如内存分配失败、文件打开失败等。使用适当的错误检查和处理机制。

6. 一致性

- 在整个项目中保持一致的风格,包括命名、缩进、注释等。这有助于团队成员之间的协作和代码的可维护性。

数据类型及其运算

C语言的数据类型分为三类,基础数据类型、衍生数据类型、指针。学习这块内容,建议对二进制、十六进制先进行了解,对常用的内存长度单位Byte(可存放8个二进制位的空间)了解;然后从基础数据类型开始,多写程序,并使用类似Bito之类的工具辅助提问,获得示例代码。

C语言的基本类型

理解基础数据类型的存储空间,转换规则的内存对齐规则,在看衍生数据类型,指针就比较容易了。这里可多写点代码验证下心中的疑惑。

#include <stdio.h>int hex_type_in_memory() { char c = 'A'; // 1 byte int a = 123456; // 4 bytes float f = 3.14f; // 4 bytes double d = 3.141592653589793; // 8 bytes short b = 32767; // 2 bytes long l = 1234567890; // 4 or 8 bytes depending on platform long long ll = 1234567890123456789; // 8 bytes // 打印各数据类型的十六进制表示 printf("\nhex_type_in_memory:\n"); printf("%-10s %-10s %-10s %-20s\n", "Type","Len(Byte)", "Value", "Hex in Memory"); printf("-----------------------------------------------\n"); printf("%-10s %-10d %-10c X\n","char",sizeof(c), c, c); printf("%-10s %-10d %-10d X\n", "int",sizeof(a), a, a); printf("%-10s %-10d %-10f X\n", "float",sizeof(f), f, *(unsigned int*)&f); printf("%-10s %-10d %-10f 6X\n", "double", sizeof(d), d, *(unsigned long long*)&d); printf("%-10s %-10d %-10d X\n", "short", sizeof(b), b, b); printf("%-10s %-10d %-10d X\n", "long", sizeof(l), l, l); printf("%-10s %-10d %-10d 6X\n", "long long", sizeof(ll), ll, ll); printf("-----------------------------------------------\n"); return 0; // 正常结束}struct Person { char name[50]; int age;};int print_types() { int a = 10; // 整型 char c = 'A'; // 字符型 float f = 3.14f; // 浮点型 double d = 2.71828; // 双精度浮点型 int arr[3] = { 1, 2, 3 }; // 数组 struct Person p1; // 结构体 p1.age = 25; // 结构体成员赋值 printf("Integer: %d\n", a); printf("Character: %c\n", c); printf("Float: %.2f\n", f); printf("Double: %.5f\n", d); printf("Array: %d, %d, %d\n", arr[0], arr[1], arr[2]); printf("Person: Name = %s, Age = %d\n", p1.name, p1.age); return 0; // 正常结束}

参考资料

  1. 2023年 NCRE二级 公共基础
  2. https://ncre.neea.edu.cn/res/Home/2306/7f474473f0014cdfdfc9ef4bc9cf5cd4.pdf?download=二级公共基础知识.pdf
  3. 2023年 NCRE二级 C语言设计
  4. https://ncre.neea.edu.cn/res/Home/2306/6016844d02b8b7fb5d9ea3981f0a0eb9.pdf?download=二级C语言.pdf
  5. NCRE计算机等级考试介绍
  6. https://ncre.neea.edu.cn/html1/folder/1507/909-1.htm