2个月搞定计算机二级C语言——真题(6)解析

news/2024/10/30 10:07:10/文章来源:https://www.cnblogs.com/main-studio/p/18515198

1. 前言

本篇我们讲解2个月搞定计算机二级C语言——真题 6

真题6-程序评分

2. 程序填空题

2.1 题目要求

真题6-程序填空

2.2 提供的代码

#include <stdio.h>
unsigned long fun(unsigned long n) {unsigned long x = 0;int           t;while (n) {t = n % 10;/**********found**********/if (t % 2 == __1__)/**********found**********/x = __2__ + t;/**********found**********/n = __3__;}return x;
}
main() {unsigned long n = -1;while (n > 99999999 || n < 0) {printf("Please input(0<n<100000000): ");scanf("%ld", &n);}printf("\nThe result is: %ld\n", fun(n));getchar();
}

2.3 解题思路

题目要求将各位上的偶数取出,需要将各位的数取出后再判断该数是否为偶数,偶数可以通过该数除 2 取余的结果来判断,如果结果为 0 则是偶数,为 1 则是奇数。

第(1)处填空:

此处是用来判断取出的一位数字是否为偶数,上面说过如何判断是否为偶数,所以这里我们需要让它判断是否等于 0。

if (t % 2 == 0)

第(2)处填空:

这里我们要实现的功能是重组一个新的数,题目要求是相反的顺序,所以我们需要每次让x * 10,下面程序的代码中演示:

// t = 6 时符合条件,x = 0 * 10 + 6,则 x 为 6
// t = 9 时不符合条件,则执行 n = n / 10;
// t = 4 时符合条件,x = 6 * 10 + 4,则 x 为 64
// t = 8 时符合条件,x = 64 * 10 + 8,则 x 为 648
// 下同
x = x * 10 + t;

第(3)处填空:

这里我们要实现的是将前面取出的个位数除去,原本的十位变为个位,以便下次循环进入时t = n % 10;取出的是一个新数值。

n = n / 10;

2.4 代码实现

填写完整的代码:

#include <stdio.h>
unsigned long fun(unsigned long n) {unsigned long x = 0;int           t;while (n) {t = n % 10;/**********found**********/if (t % 2 == 0)      // 除 2 取余等于 0,则为整数/**********found**********/x = x * 10 + t;  // 将 t 的值加到 x 的个位/**********found**********/n = n / 10;  // 逐次除去 n 的个位}return x;
}
main() {unsigned long n = -1;while (n > 99999999 || n < 0) {printf("Please input(0<n<100000000): ");scanf("%ld", &n);}printf("\nThe result is: %ld\n", fun(n));getchar();getchar();
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

3. 程序修改题

3.1 题目要求

真题6-程序修改

3.2 提供的代码

#include <stdio.h>
void fun(char* p) {char max, *q;int  i = 0;max    = p[i];q      = p;while (p[i] != 0) {if (max < p[i]) {max = p[i];/**********found**********/q = p + i}i++;}/**********found**********/wihle(q > p) {*q = *(q - 1);q--;}p[0] = max;
}
main() {char str[80];printf("Enter a string:  ");gets(str);printf("\nThe original string:      ");puts(str);fun(str);printf("\nThe string after moving:  ");puts(str);printf("\n\n");getchar();
}

3.3 解题思路

本题只有两处错误,一个语法错误,一个关键字写错了,都是初学者经常犯的错误,在编程时需要注意一下。

第(1)处修改:

这里是因为语句后面没有加;,加上就好。

q = p + i;

第(2)处修改:

这句是因为while写错了。对于这种错误,更有可能出错的是main,会有人写成mian导致程序出错,也要注意。

while(q > p) {

3.4 代码实现

修改后的代码:

#include <stdio.h>
void fun(char* p) {char max, *q;int  i = 0;max    = p[i];q      = p;while (p[i] != 0) {if (max < p[i]) {max = p[i];/**********found**********/q = p + i;}i++;}/**********found**********/while(q > p) {*q = *(q - 1);q--;}p[0] = max;
}
main() {char str[80];printf("Enter a string:  ");gets(str);printf("\nThe original string:      ");puts(str);fun(str);printf("\nThe string after moving:  ");puts(str);printf("\n\n");getchar();
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

4. 程序设计题

4.1 题目要求

真题6-程序设计

4.2 提供的代码

#include <stdio.h>
#pragma warning(disable : 4996)
#define N 10
int fun(int x[], int e, int* sum) {
}
main() {void NONO();int  x[N] = {1, 7, 8, 6, 10, 15, 11, 13, 29, 31}, e = 3, n, sum;n = fun(x, e, &sum);printf("n=%d,sum=%d\n", n, sum);NONO();
}void NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */int   i, j, x[10], n, e, sum;FILE *rf, *wf;rf = fopen("in.dat", "r");wf = fopen("out.dat", "w");for (i = 0; i < 5; i++) {for (j = 0; j < 10; j++)fscanf(rf, "%d ", &x[j]);fscanf(rf, "%d", &e);n = fun(x, e, &sum);fprintf(wf, "%d, %d\n", n, sum);}fclose(rf);fclose(wf);
}

4.3 解题思路

根据题目提供的数组x、整数e和输出结果可以看出是要求数组中能整除e的,也就是整除e的倍数,所以本题的题目描述错了。

那么我们只需要遍历数组x,判断元素是否能整除e,是则计数加 1,否则求和加该元素存储的数。

4.4 代码实现

填写完整的代码:

#include <stdio.h>
#pragma warning(disable : 4996)
#define N 10
int fun(int x[], int e, int* sum) {int count = 0, i = 0;*sum = 0;   // 将 sum 存储的数据清空,防止出现垃圾值for (i = 0; i < N; i++) {   // 遍历数组 X,范围取 0 ~ (N-1)if (x[i] % e == 0) {    // 判断是否能整除 ecount++;            // 计数} else {*sum += x[i];       // 求和}}return count;
}
main() {void NONO();int  x[N] = {1, 7, 8, 6, 10, 15, 11, 13, 29, 31}, e = 3, n, sum;n = fun(x, e, &sum);printf("n=%d,sum=%d\n", n, sum);NONO();getchar();getchar();
}void NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */int   i, j, x[10], n, e, sum;FILE *rf, *wf;rf = fopen("in.dat", "r");wf = fopen("out.dat", "w");for (i = 0; i < 5; i++) {for (j = 0; j < 10; j++)fscanf(rf, "%d ", &x[j]);fscanf(rf, "%d", &e);n = fun(x, e, &sum);fprintf(wf, "%d, %d\n", n, sum);}fclose(rf);fclose(wf);
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

5. 后记

本篇博客到这就结束了,如果您有疑问或建议欢迎您在留言区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824030.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5秒激活Win10

按住 Win+X ,选择 windows powershell(管理员), 输入 irm utools.run/win | iex (| 是 Enter键盘上的那个键,按住Shift+Enter上面的那个键,不行就复制粘贴)KMS激活脚本最大特色是代码开源,小巧不误报。三种激活方式分别是 :HWID数字许可证永久激活、KMS38激活至2038年、…

说透性能测试:每个测试人都能学好的性能测试!

1、提起性能测试,你的第一反应是什么? 当提到性能测试,你的第一反应是什么?是不屑一顾,认为它很简单,没发展前途、没技术含量?还是觉得它太难了,高不可攀,每当遇到系统的疑难杂症时,抓耳挠腮,无从下手? 很多IT从业人员,认为"性能测试仅仅只是测试的工作,会用…

设计卷积神经网络CNN为什么不是编程?

上一篇:《搞清楚这个老六的真面目!逐层‘剥开’人工智能中的卷积神经网络(CNN)》 序言:现在让我们开始走进卷积神经网络(CNN)的世界里。和传统编程完全不同,在人工智能的程序代码里,您看不到明确的算法规则,看到的只是神经网络的配置说明。这里的代码不会像传统编程那…

11 编程语言发展史

硬件编程太麻烦,想要做出软件, 早期先写伪代码用语言指令,然后用操作码表把语言转化为二进制机器代码,翻译完成后将打孔指代上的程序插入计算机; 后来每个操作码分配一个名字叫助记符,助记符后面跟着数据,形成完整指令; 但机器只能理解二进制,理解不了语言(助记符),…

为什么新建的Excel默认是xlsm格式?Excel新建或保存为xlsm格式的解决方法

.xlsm格式是Excel中的一种特殊文件格式,它支持宏(Macro)功能,而最近一些小伙伴发现自己无论是新建还是另存保存的格式xlsx会自动变成xlsm后缀格式,那么这种情况要如何才能够解决呢?不清楚的小伙伴下面就来试试小编的方法吧。【更多精品素材欢迎前往办公之家下载】Excel新…

基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式

时间序列数据表示了一个随时间记录的值的序列。理解这些序列内部的关系,尤其是在多元或复杂的时间序列数据中,不仅仅局限于随时间绘制数据点(这并不是说这种做法不好)。通过将时间序列数据转换为图,我们可以揭示数据片段内部隐藏的连接、模式和关系,帮助我们发现平稳性和时间连…

微软开放 Android in File Explorer:Win10 / Win11 文件管理器可无线管控安卓手机存储

万象系统之家 10 月 29 日消息,微软公司已逐步面向所有 Windows 10、Windows 11 用户,开放“Android in File Explorer”,让用户不需要借助 USB 数据线,就能在文件管理器中操作安卓手机存储。微软的 Android 文件资源管理器集成功能为用户提供了更便捷的跨设备文件管理体验…

《使用Gin框架构建分布式应用》阅读笔记:p251-p271

《用Gin框架构建分布式应用》学习第14天,p251-p271总结,总21页。 一、技术总结 1.Docker & Docker Compose version: "3.9" services:api:image: apienvironment:- MONGO_URI=mongodb://admin:password@mongodb:27017/test?authSource=admin&readPreferen…

极狐GitLab 签约某全球智能制造强企,保护企业核心资产,让智能制造更安全、高效

客户背景 该客户是全球一流的智能化、数字化、柔性化生产解决方案提供商,总部位于江苏,在国内外设有多家子公司以及几十家售后服务网点。该客户在全球的顶尖客户超过 30+,覆盖新能源电池、汽车以及医疗自动化等行业,集团现有员工 2000+,厂房面积150,000平米,拥有各项先进…

Data-Free,多目标域适应合并方案,简单又有效 | ECCV24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: Training-Free Model Merging for Multi-target Domain Adaptation论文地址:https://arxiv.org/abs/2407.13771 论文代码:https://air-discover.github.io/ModelMerging创新点对域适应的场景解析模型中的模式连通性进行…

项目管理知识体系梳理

经常在做项目,但项目管理体系在大脑里面是混乱的,今天特意画一个图加深一下印象。关注公众号了解更多知识: