2个月搞定计算机二级C语言——真题(10)解析
1. 前言
本篇我们讲解2个月搞定计算机二级C语言——真题10

2. 程序填空题
2.1 题目要求

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 题目要求

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 题目要求

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. 后记
本篇博客到这就结束了,如果您有疑问或建议欢迎您在留言区留言。
2个月搞定计算机二级C语言——真题(10)解析的更多相关文章
- 二级C语言真题笔记
二级C语言真题笔记 1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include <stdio.h> main() { short i ...
- 计算机二级-C语言-程序修改题-190108记录-字符串处理
//程序修改题:给定程序MODI1.C中函数fun的功能是:先将字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面.例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为 ...
- 计算机二级-C语言-程序修改题-190113记录-对指定字符串的大小写变换处理。
//给定程序中fun函数的功能是:将p所指的字符串中每个单词的最后一个字母改成大写.(这里的“单词”是指由空格隔开的字符串) //重难点:指针对数组的遍历.大小写转换的方法.第一种使用加减32 得到, ...
- 计算机二级-C语言-程序设计题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。
//程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回 ...
- 计算机二级-C语言-程序设计题-190111记录-两种指针赋值的不同,普通输入输出函数和文件输入输出函数的使用
//程序设计题:函数fun的功能是:将两位数的正整数a,b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上.例如:当 ...
- 计算机二级-C语言-程序修改题-190123记录-对整数进行取余和除以操作。
//函数fun功能:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中.高位仍在高位,低位仍在低位. //重难点:思路:因为不是字符串,所以可以把问题变成整数的操作,采用取余和除的操作.对整 ...
- 计算机二级-C语言-程序设计题-190119记录-求出一个二维数组每一列的最小值。
//编写一个函数:tt指向一个M行N列的二维数组,求出二维数组每列中最小的元素,并依次放入pp所指的一维数组中.二维数组中的数在主函数中赋予. //重难点:求出的是每一列的最小值,这里要注意,学会简化 ...
- 计算机二级-C语言-程序设计题-190118记录-通过数组和指针两种方式对字符串进行处理。
//编写一个函数fun,比较两个字符串的长度,(不使用C语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符长度相同,则返回第一个字符串. //重难点:通过数组处理和通过指针进行处理的不同 ...
- 计算机二级-C语言-程序修改题-190116记录-对数组进行排序的两种方法。
//函数fun的功能是:将n个无序整数从小到大排序. //冒泡排序法:小数往下浮,大数往上浮.把数都存到一个数组,然后两两比较,大数往后交换.双层递减循环. //第二种方法:都放入一个数组中,然后记录 ...
- 计算机二级-C语言-程序修改题-190114记录-对整型变量进行取余操作可以取得各个位上的值。
//给定程序中fun函数的功能是:从低位开始取出长整形变量s中奇数位上的数,依次构成一个新的数放在t中.高位仍在高位,低位仍在低位.例如:当s中的数为7654321时,t中的数为7531. //重难点 ...
随机推荐
- C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用的技术文章.社区动态.优质项目和学习资源等.让你时刻站 ...
- C# 导出Excel NPOI 修改指定单元格的样式 或者行样式
参考文章:原文链接:https://blog.csdn.net/chensirbbk/article/details/52189985 #region 2.NPOI读取Excel 验证Excel数据的 ...
- CD、VCD、DVD、BD 傻傻分不清楚?
CD 激光唱片(Compact Disk, CD),于 1982 年面世,最初用于存储数字音频.容量约 700 MB(80 分钟音频). 激光唱片 | 维基百科 VCD 影音光盘(Video Comp ...
- uni-app 小程序 前置摄像头
在小程序拍照的话,uni.chooseImage()可以直接调取摄像头拍照,而如果要调用前置摄像头,这个api就没有提供了. 在查找官方文档发现,可以通过camera有提供这么一个组件,页面内嵌的区域 ...
- SpringMVC获取请求参数
目录 通过ServletAPI获取 通过控制器方法的形参获取请求参数 @RequestParam @RequestHeader @CookieValue 通过POJO获取请求参数 解决获取请求参数的乱 ...
- 探索 Nuxt Devtools:功能全面指南
title: 探索 Nuxt Devtools:功能全面指南 date: 2024/9/3 updated: 2024/9/3 author: cmdragon excerpt: 摘要:本文介绍了Nu ...
- zabbix-server无法启动
部署:Zabbix-(1)安装 - xiao智 - 博客园 (cnblogs.com) 故障现象: 监控界面状态为 "否" 1.服务状态果然报错了 ,报错提示是被退出的 2.net ...
- C++源码中司空见惯的PIMPL是什么?
前言: C++源码中司空见惯的PIMPL是什么?用原始指针.std::unique_ptr和std::shared_ptr指向Implementation,会有什么不同?优缺点是什么?读完这篇文章,相 ...
- 工具 – Prettier、ESLint、Stylelint
前言 以前在 Webpack 学习笔记 有稍微介绍过它们.这篇是单独整理版. 参考 一文彻底读懂ESLint 你的ESLint真的需要Prettier吗? 搞懂eslint和prettier等的关系 ...
- ASP.NET Core Library – Hangfire
前言 以前写过 Hangfire 的学习笔记, 但写的很乱. 这篇做个整理. 介绍 Hangfire 是用来做 server task 的, 比如: background job, delay job ...