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

news/2024/11/8 9:21:00/文章来源:https://www.cnblogs.com/main-studio/p/18533920

1. 前言

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

真题10-程序评分

2. 程序填空题

2.1 题目要求

真题10-程序填空

2.2 提供的代码

#include  <stdio.h>
#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  <stdio.h>
#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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
#include <string.h>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 <stdio.h>
#include <string.h>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/828686.html

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

相关文章

我会卡常!

以下是博客签名,正文无关本文来自博客园,作者:ppllxx_9G,转载请注明原文链接:https://www.cnblogs.com/ppllxx-9G/p/18534410

考研打卡(11)

开局(11) 开始时间 2024-11-07 14:12:35 结束时间 2024-11-08 09:07:12上机ing数据结构下面关于图的存储的叙述中正确的是___(北京师范大学2015年) A 用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 B 用邻接表法存储图,占用的存储空间大小与图…

使用Kali进行Dos攻击实验

前言 1. 拒绝服务(DoS, Denial of Service)攻击是一种网络攻击手段,其目的是通过各种方式使目标系统或网络资源无法为合法用户提供正常服务。攻击者可能会利用网络协议的缺陷、发送大量无效请求或使用僵尸网络来耗尽目标系统的资源,如CPU、内存、带宽或网络连接,导致系统无…

PbootCMS提示会话目录写入权限不足

问题背景在使用 PbootCMS 时,可能会遇到“会话目录写入权限不足”的提示。这通常是由于某些目录的权限设置不正确导致的。解决方法通过设置 config、data、runtime 和 upload 等文件夹的可读写权限,可以解决这个问题。最简单的方法是将整个网站根目录设置为 777 权限。扫码添…

调度算法(一)

调度算法(一) (1)前言 此处列举的三种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。 因此这三种算法一般适合用于早期的批处理系统,当然, FCF…

PbootCMS 模板报错提示 PHP Warning: Unknown: open_basedir restriction ineffect. File

当你在使用 PbootCMS 时,如果遇到 PHP Warning: Unknown: open_basedir restriction ineffect. File 的错误提示,这通常是因为 PHP 的 open_basedir 配置限制了某些文件的访问权限。以下是解决该问题的方法: 1. 检查 PHP 版本 首先,确认你使用的 PHP 版本是否与 PbootCMS 兼…

DW修改网站教程,Dreamweaver网站修改教程

使用Dreamweaver修改网站可以通过以下步骤完成:打开项目:启动Dreamweaver,打开需要修改的网站项目。编辑HTML文件:在文件列表中,双击需要编辑的HTML文件。 修改页面的内容,包括标题、段落、链接等。编辑CSS文件:在文件列表中,双击需要编辑的CSS文件。 修改样式表中的样…

网站如何修改网站网页,网站网页修改方法

登录后台:打开网站的后台管理页面,输入用户名和密码登录。编辑内容:在后台的“内容管理”模块中,找到需要编辑的页面或文章。 点击“编辑”按钮,进入编辑页面。 修改页面的标题、正文、关键词等信息,保存修改。编辑模板:在后台的“模板管理”模块中,找到需要编辑的模板…

网站 ico图标 修改,网站ICO图标更换方法

更换网站的ICO图标通常涉及以下几个步骤:准备图标文件:准备一个新的ICO文件,确保文件格式为.ico,尺寸通常为16x16或32x32像素。 上传文件:将新的ICO文件上传到网站的根目录,通常命名为favicon.ico。 修改HTML:在网站的HTML文件中添加或修改ICO图标的链接。例如:<lin…

解决Nginx转发图片不能显示【转】

背景:最近很多小伙伴使用Nginx代理iServer,将HTTP协议成HTTPS协议,但是可能会出现以下几种情况:(1) 图片、js、css等静态资源无法加载 (2)代理后页面跳转回HTTP协议 (3)代理后访问服务管理界面提示“该用户无查询服务访问统计信息权限” 针对上述情况应该如何解决…

网络正常,所有浏览器网页却打不开?

网上一堆教程不靠谱,我请教的供应商技术支持,很简单。 设置———>网络————>代理————>关闭“使用代理服务器”本文来自博客园,作者:生物信息与育种,转载请注明原文链接:https://www.cnblogs.com/miyuanbiotech/p/18534380。若要及时了解动态信息,请关注…

国产化浪潮下,高科技企业如何选择合适的国产ftp软件方案?

高科技企业在数字化转型和创新发展中,数据资产扮演着越来越重要的角色。在研发过程中产生的实验数据、设计文档、测试结果等,专利、商标、版权之类的创新成果等,随着信息量急剧增加和安全威胁的复杂化,传统的FTP软件已经不能满足这个高端领域的需要了,需要重新寻找国产ftp…