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

news/2024/11/8 13:57:44/文章来源:https://www.cnblogs.com/westworldss/p/18534919

合集 - 3个月搞定计算机二级C语言(6)1.2个月搞定计算机二级C语言——真题(5)解析10-292.2个月搞定计算机二级C语言——真题(6)解析10-303.2个月搞定计算机二级C语言——真题(7)解析11-034.2个月搞定计算机二级C语言——真题(8)解析11-035.2个月搞定计算机二级C语言——真题(9)解析11-06:FlowerCloud机场6.2个月搞定计算机二级C语言——真题(10)解析11-08收起

1. 前言

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

真题10-程序评分

2. 程序填空题

2.1 题目要求

真题10-程序填空

2.2 提供的代码

#include  
#pragma warning (disable:4996)
double  fun(double x[], int n)
{int i, k = 0;double avg = 0.0, sum = 0.0;for (i = 0; i < n; i++)avg += x[i];/**********************found***********************/avg /= ____(1)____;for (i = 0; i < n; i++)if (x[i] > avg){/**********************found***********************/____(2)____ += x[i];k++;}/**********************found***********************/return  ____(3)____;
}
main()
{double score[12] = { 50,60,70,80,90,100,55,65,75,85,95,99 };double aa;aa = fun(score, 12);printf("%f\n", aa);
}

2.3 解题思路

第(1)处填空:

在这条语句之前,程序使用for循环将所有学生的成绩加到了变量avg中,这里我们要实现的是求平均成绩,所以需要使用avg除学生的数量n,即可得到所有学生的平均成绩,并赋值给avg

其中avg /= n;等价于avg = avg / n;

avg /= n;

第(2)处填空:

经过if (x[i] > avg)判断,进来以后的x[i]都是大于平均成绩avg的,这里要执行的是将符合条件的x[i]累加至sum(程序已给出),并且每次使k++以便于后续求平均值。

sum += x[i];

第(3)处填空:

这里我们需要返回的是高于平均成绩的学生成绩的平均值,其中sum为高于平均成绩的学生总成绩,k为高于平均成绩的学生人数,用sum / k即可得到高于平均成绩的学生成绩的平均值。

return  (sum / k);

2.4 代码实现

填写完整的代码:

#include  
#pragma warning (disable:4996)
double  fun(double x[], int n)
{int i, k = 0;double avg = 0.0, sum = 0.0;for (i = 0; i < n; i++)avg += x[i];/**********************found***********************/avg /= n;for (i = 0; i < n; i++)if (x[i] > avg){/**********************found***********************/sum += x[i];k++;}/**********************found***********************/return  (sum / k);
}
main()
{double score[12] = { 50,60,70,80,90,100,55,65,75,85,95,99 };double aa;aa = fun(score, 12);printf("%f\n", aa);
}

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

3. 程序修改题

3.1 题目要求

真题10-程序修改

3.2 提供的代码

#include 
void  fun(char* s)
{int  i, j;for (i = 0, j = 0; s[i] != '\0'; i++)if (s[i] >= '0' && s[i] <= '9')/**********found**********/s[j] = s[i];/**********found**********/s[j] = "\0";
}
main()
{char  item[80];printf("\nEnter a string  :  "); gets(item);printf("\n\nThe  string  is  : \"%s\"\n", item);fun(item);printf("\n\nThe string of changing is  : \"%s\"\n", item);getchar();
}

3.3 解题思路

第(1)处修改:

这里需要将取出的数字字符形成新的字符串,并取代原字符串。

只使用s[j]是不行的,因为在程序中j始终没有改变值,一直为 0,导致每次的数字字符都会存储到s[0]的地址中,并没有形成新的字符串,所以我们要在这里让j++,从而改变存储的地址。

s[j++]=s[i];

第(2)处修改:

""是用来表示字符串的,而这里的s[j]只能存储单个字符,所以需要使用''来括起来。

这里给s[j]赋值'\0'是应为字符串是以'\0'作为结尾的。

s[j]='\0';

3.4 代码实现

修改后的代码:

#include 
void  fun(char  *s)
{  int  i,j;for(i=0,j=0; s[i]!='\0'; i++)if(s[i]>='0' && s[i]<='9')
/**********found**********/s[j++]=s[i];
/**********found**********/s[j]='\0';
}
main()
{  char  item[80];printf("\nEnter a string  :  ");gets(item);printf("\n\nThe  string  is  : \"%s\"\n",item);fun(item);printf("\n\nThe string of changing is  : \"%s\"\n",item );getchar();
}

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

4. 程序设计题

4.1 题目要求

真题10-程序设计

4.2 提供的代码

#include 
#include void  fun(char* s, char  t[])
{}main()
{char   s[100], t[100]; void NONO();printf("\nPlease enter string S:"); scanf("%s", s);fun(s, t);printf("\nThe result is: %s\n", t);NONO();getchar();
}void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */char s[100], t[100];FILE* rf, * wf;int i;rf = fopen("in.dat", "r");wf = fopen("out.dat", "w");for (i = 0; i < 10; i++) {fscanf(rf, "%s", s);fun(s, t);fprintf(wf, "%s\n", t);}fclose(rf);fclose(wf);
}

4.3 解题思路

这道题其实蛮容易的,无非就是遍历数组,再加个奇偶数的判断。

奇偶数判断前面也讲过,这里简单提一下:一个数除 2 取余等于 0,则为偶数,等于 1 则为奇数。

在函数开头要先将t所指的数组清空,然会遍历指针s所指的字符串,判断 ASCII 值为偶数则存到t中,其中t[j++]的作用和上一题一样。

题目要求将奇数的字符删除后,将剩余的字符放入t,实质就是把偶数的字符放入t,可以直接对偶数的字符操作,减少程序的复杂度。

4.4 代码实现

填写完整的代码:

#include 
#include void  fun(char* s, char  t[])
{int i = 0,j = 0;for (i = 0; i < (sizeof(t) / sizeof(t[0])); i++)  // 清空数组 t,防止出现垃圾值{t[i] = 0;}for (i = 0; i < strlen(s); i++){if ((s[i] % 2) == 0)  // 等于 0 说明是 ASCII值为偶数{t[j++] = s[i];    // 保存到 t 所指的数组中}}
}main()
{char   s[100], t[100]; void NONO();printf("\nPlease enter string S:"); scanf("%s", s);fun(s, t);printf("\nThe result is: %s\n", t);NONO();getchar();
}void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */char s[100], t[100];FILE* rf, * wf;int i;rf = fopen("in.dat", "r");wf = fopen("out.dat", "w");for (i = 0; i < 10; i++) {fscanf(rf, "%s", s);fun(s, t);fprintf(wf, "%s\n", t);}fclose(rf);fclose(wf);
}

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

5. 后记

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

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

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

相关文章

cmu15545-数据存储(Database Storage)

蓝图数据库自己管理磁盘数据和缓冲区,而不是通过操作系统管理(Os is not your friend.)。 三层视图 数据库以页(page)为存储数据的基本单位,文件(file)是一系列页的集合,页中存储页数据(data),形成文件-页-数据三层架构。 文件有不同的组织形式,页包含页头和页数据…

mysql分区表占用大量容量处理(优化)及归档分区表

背景 生产环境中,某个分区表两三年了,占用磁盘1T多,需要对前几年的数据做归档点击查看代码 SELECTtable_schema as 数据库,table_name as 表名,table_rows as 记录数,truncate(data_length/1024/1024, 2) as 数据容量(MB),truncate(index_length/1024/1024, 2) as 索引容量(…

深入理解Java虚拟机 --- 类加载机制

类的生命周期 类的生命周期:加载→验证→准备→解析→初始化→使用→卸载 类加载的时机 关于在什么情况下需要需要开始类加载过程的第一个阶段"加载",虚拟机并没有进行强制约束,这点交给虚拟机的具体实现来自由把握。 但严格规定了有且只有六种情况必须立即对类进…

深入理解Java虚拟机 --- 垃圾标记/收集算法

在开始本章之前,我们得了解一个概念,那就是我们怎么知道这个对象是"垃圾"?所以如何定义垃圾就成为我们第一个需要探讨的重要的点之一。 垃圾标记算法 常见的垃圾标记算法有:引用计数算法和可达性分析算法。 引用计数算法 实现思路 每个对象去额外存储一个引用计数…

深入理解Java虚拟机 --- 垃圾回收器

Serial收集器 HotSpot虚拟机运行在客户端模式下的默认新生代收集器。 类型:单线程串行垃圾回收器 垃圾收集算法:复制算法 作用区域:新生代 特点: 1、只会用单个线程去完成垃圾收集工作,用户线程会STW,直到收集结束。 2、没有线程交互,专心做垃圾收集,获得最高的单线程收…

【补档】玄武550电源怎么样? - 约呼的回答 - 知乎

【补档】玄武550电源怎么样? - 约呼的回答 - 知乎 约呼 一个路过的图吧用户 低预算整机非常推荐,高预算慎选。 低预算整机非常推荐,高预算慎选。 优点不少,缺点也有。 先说优点: 价格上来说便宜大碗,用料不错,部分型号反向虚标,比如550v4其实是按650w规格用料来做的,拆…

打造吸睛开场白:六招教你瞬间抓住客户心弦

开场白是在初次接触客户的头30秒至1分钟时间内,销售人员用以吸引目标客户注意力的简短言辞,通常涵盖前几句关键对话。 为了设计出一个引人入胜的开场白,以下策略值得尝试: 赞美客户赞美是人际交往中的润滑剂,恰当的赞美能迅速引起客户的关注。可以从客户的外观、着装、气质…

MM--项目中遇到的一些问题记录

采购订单: 创建采购订单时,供应商对应的信息记录已失效,但是切换供应商之后价格不会自动更新成0 1.SU01-查看用户对应的采购缺省值2.SPRO-维护采购缺省值 采购订单收货的时候,提示无符合条件的行项目 经打断点发现是由于程序中判断时公司间的内部交易所导致的,根本原因是因为采…

C#代码扫描工具SonarQube安装

前言 安装环境:Windows10+SonarQube 9.9.7 LTA Community Edition+jdk17+PostgreSQL 16.4+SonarScanner for .NET 9.0.1 在安装SonarQube 前需要搭建好jdk环境,这里我用的版本是jdk17,之前用过jdk1.8、jdk11和jdk21都失败了。还需提前安装第三方数据库,我用的是PostgreSQL …

数据结构 --树

定义 树是n(n>=0)个结点的有限集。n=0时,称为空树。在任意一棵树非空树中应满足: (1) 有且仅有一个特定的称为根 (root) 的结点 (2) 当时,其余结点可分为个互不相交的有限集,其中每一个集合本身又是一颗树,并且称为根的子树。 基本概念 结点的度:一个结点拥有的子树的…

人工智能--自然语言处理简介

上一篇:《人工智能模型训练中的数据之美——探索TFRecord》 序言:自然语言处理(NLP)是人工智能中的一种技术,专注于理解基于人类语言的内容。它包含了编程技术,用于创建可以理解语言、分类内容,甚至生成和创作人类语言的新作品的模型。在接下来的几章中,我们将会探讨这…

精选 Top10 开源调度工具,解锁高效工作负裁自动化

在大数据和现代 IT 环境中,任务调度与工作负载自动化(WLA)工具是优化资源利用、提升生产效率的核心驱动力。随着企业对数据分析、实时处理和多地域任务调度需求的增加,这些工具成为关键技术。本文将介绍当前技术发展背景下的Top 10开源任务调度工具,并探讨它们在大数据和工…