### 南开百题二级C 2011知识点解析 #### 一、程序填空题解析 **1. 题目概述** 本题目要求完成一个C语言函数`fun`,该函数的功能是从给定的无符号长整型数字中移除所有位上的偶数数字,保留奇数数字,并按照原有的高位到低位的顺序重新组成一个新的数字。例如,如果输入数字为27638496,则输出应为739。 **解析** 为了实现上述功能,我们首先需要了解如何遍历一个数字中的每一位,并判断该位上的数字是否为偶数。接下来,对于非偶数(即奇数)的位,我们需要将其加入到新组成的数字中。 **代码详解** ```c void fun(unsigned long *n) { unsigned long x = 0, i; // x用于存放结果,i用于存放当前位权 int t; // t用于暂存当前位的数字 i = 1; // 初始化i为最低位的位权 while (*n) // 当n还有未处理的位时循环 { t = *n % 10; // 取出当前位上的数字 if (t % 2 != 0) // 如果该位数字为奇数 { x = x + t * i; // 将该位数字加入到结果x中 i = i * 10; // 更新位权 } *n = *n / 10; // 移除已处理的最低位 } *n = x; // 最后将结果赋值给原变量 } ``` **2. 题目概述** 本题目要求完成一个C语言函数`fun`,该函数的功能是将给定的字符串、整数和浮点数写入文本文件中,然后再从文件中读取这些数据并显示在屏幕上。 **解析** 为了实现这个功能,我们首先需要打开一个文件进行写入操作,然后使用`fprintf`函数将指定的数据写入文件。接着关闭文件,再次打开同一文件进行读取操作,并使用`fgetc`函数逐字符读取文件内容,最后打印读取到的内容。 **代码详解** ```c void fun(char *s, int a, double f) { FILE *fp; // 文件指针 char ch; // 用于存储读取到的字符 fp = fopen("file1.txt", "w"); // 打开文件用于写入 fprintf(fp, "%s%d%f\n", s, a, f); // 写入数据 fclose(fp); // 关闭文件 fp = fopen("file1.txt", "r"); // 打开文件用于读取 printf("\nThe result:\n\n"); ch = fgetc(fp); // 读取第一个字符 while (!feof(fp)) // 当文件末尾没有到达时循环 { putchar(ch); // 打印当前字符 ch = fgetc(fp); // 读取下一个字符 } putchar('\n'); // 输出换行符 fclose(fp); // 关闭文件 } ``` **3. 题目概述** 本题目要求完成一个C语言函数`fun`,该函数的功能是修改二进制文件中最后一个学生的信息。该文件包含了多个学生的信息,每个学生的信息包括学号、姓名和三门课的成绩。 **解析** 为了实现上述功能,我们需要首先打开二进制文件用于读写操作,然后定位到文件的末尾位置前一个学生记录的位置,最后写入新的学生数据覆盖原有的最后一个学生数据。 **代码详解** ```c void fun(char *filename, STU n) { FILE *fp; fp = fopen(filename, "rb+"); // 打开文件用于读写 fseek(fp, -1L * sizeof(STU), SEEK_END); // 定位到文件末尾前一个学生记录的位置 fwrite(&n, sizeof(STU), 1, fp); // 写入新的学生数据 fclose(fp); // 关闭文件 } ``` 以上三个题目的解析涵盖了对每一题的功能实现、关键步骤以及具体代码实现的详细说明。希望这些解析能帮助你更好地理解这些题目及其解法。
剩余34页未读,继续阅读
- 粉丝: 2
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- VID_20250103_144816_970.mp4
- VID_20250103_141709_050.mp4
- -9214195356454737604_235797052
- szg_1682_50001_0b53s4aaaaaaj4aicy3kz5tvdf6daclqaaca.f633.mp4
- 感应电机转子磁场定向FOC仿真,异步电机调速控制仿真 电机参数是山河智能SWFE15型起重量1.5吨电动叉车使用的实际电机 采用转速电流双闭环,防饱和PI调节器,SVPWM发波,通过iq电流查表实
- szg_4578_50001_0b537qabeaaalmaebx3lentvd7gdcl6aaesa.f206513.mp4
- 机械设计双层自动上料倍数链输送机sw18可编辑非常好的设计图纸100%好用.zip
- szg_9837_50001_0b536mabmaaaoaakua3tlztvd46dc3zqafsa.f104101.mp4
- ZeroBasedOne-EXE
- IMG_20250103_145430_206.jpg
- IMG_20250103_145750_179.jpg
- IMG_20250103_145807_306.jpg
- 加速度测量系统.pdf
- 电机控制器,IGBT结温估算(算法+模型)国际大厂机密算法,多年实际应用,准确度良好 能够同时对IGBT内部6个三极管和6个二极管温度进行估计,并输出其中最热的管子对应温度 可用于温度保护,降额,提
- Simplorer与Maxwell电机联合仿真,包含搭建好的Simplorer电机场路耦合主电路与控制算法(矢量控制SVPWM),包含电路与算法搭建的详细教程视频 电机模型可替
- 大学学生信息管理系统,个人学习整理,仅供参考