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)解析的更多相关文章

  1. 二级C语言真题笔记

    二级C语言真题笔记 1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include <stdio.h> main() {     short i ...

  2. 计算机二级-C语言-程序修改题-190108记录-字符串处理

    //程序修改题:给定程序MODI1.C中函数fun的功能是:先将字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面.例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为 ...

  3. 计算机二级-C语言-程序修改题-190113记录-对指定字符串的大小写变换处理。

    //给定程序中fun函数的功能是:将p所指的字符串中每个单词的最后一个字母改成大写.(这里的“单词”是指由空格隔开的字符串) //重难点:指针对数组的遍历.大小写转换的方法.第一种使用加减32 得到, ...

  4. 计算机二级-C语言-程序设计题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。

    //程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回 ...

  5. 计算机二级-C语言-程序设计题-190111记录-两种指针赋值的不同,普通输入输出函数和文件输入输出函数的使用

    //程序设计题:函数fun的功能是:将两位数的正整数a,b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上.例如:当 ...

  6. 计算机二级-C语言-程序修改题-190123记录-对整数进行取余和除以操作。

    //函数fun功能:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中.高位仍在高位,低位仍在低位. //重难点:思路:因为不是字符串,所以可以把问题变成整数的操作,采用取余和除的操作.对整 ...

  7. 计算机二级-C语言-程序设计题-190119记录-求出一个二维数组每一列的最小值。

    //编写一个函数:tt指向一个M行N列的二维数组,求出二维数组每列中最小的元素,并依次放入pp所指的一维数组中.二维数组中的数在主函数中赋予. //重难点:求出的是每一列的最小值,这里要注意,学会简化 ...

  8. 计算机二级-C语言-程序设计题-190118记录-通过数组和指针两种方式对字符串进行处理。

    //编写一个函数fun,比较两个字符串的长度,(不使用C语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符长度相同,则返回第一个字符串. //重难点:通过数组处理和通过指针进行处理的不同 ...

  9. 计算机二级-C语言-程序修改题-190116记录-对数组进行排序的两种方法。

    //函数fun的功能是:将n个无序整数从小到大排序. //冒泡排序法:小数往下浮,大数往上浮.把数都存到一个数组,然后两两比较,大数往后交换.双层递减循环. //第二种方法:都放入一个数组中,然后记录 ...

  10. 计算机二级-C语言-程序修改题-190114记录-对整型变量进行取余操作可以取得各个位上的值。

    //给定程序中fun函数的功能是:从低位开始取出长整形变量s中奇数位上的数,依次构成一个新的数放在t中.高位仍在高位,低位仍在低位.例如:当s中的数为7654321时,t中的数为7531. //重难点 ...

随机推荐

  1. 使用分布式锁解决IM聊天数据重复插入的问题

    导航 业务背景 问题分析与定位 探索可行的解决方案 数据库层面处理--唯一索引 应用程序层面处理--分布式锁 分布式锁概述 分布式锁需要具备哪些特性? 分布式锁有哪些实现方式? 基于数据库的实现方式 ...

  2. 2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子。 在筛选过程中,每轮选择一个孩子时,所有尚未选

    2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子. 在筛选过程中,每轮选择一个孩子时,所有尚未选 ...

  3. 如果nacos注册中心挂了怎么办

    当服务异常宕机,Nacos还未反应过来时,可能会发生的状况以及现有的解决方案. Nacos的健康检查 故事还要从Nacos对服务实例的健康检查说起. Nacos目前支持临时实例使用心跳上报方式维持活性 ...

  4. Vue配置代理(devServer)解决跨域问题

    1.作用: Vue官方文档的解释是: 如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器.这个问题可以通过 vue.config.j ...

  5. Angular Material 18+ 高级教程 – Material Ripple

    介绍 Ripple (波纹) 是 Material Design 中一个标志性的特色. 点击 button 会溅起水波的感觉. 参考 Docs – Ripples When to use it? 一般 ...

  6. Yarn 3.0 Plug'n'Play (PnP) 安装和迁移

    前言 以前用 npm, 后来 yarn 火了就用 yarn. 后来 yarn 2.0 大改版, Angular 不支持就一直没用. 一直到去年的 Angular 13 才开始支持. 最近又开始写 An ...

  7. CSS – Reset CSS / Base CSS

    前言 许多 element tag 都有自带的 style. 比如 h1 默认 font-size 是 2 em anchor 默认颜色是 blue 大部分默认 style 并不会是开发人员期望的效果 ...

  8. Maven高级——分模块开发与设计

    分模块开发的意义 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享 分模块开发 创建Maven工程 书写模块代码 注意:分模块开发需要先针对模块功能进行设计,再进行编码.不会先将工 ...

  9. RDK X5首发上手体验!真的太帅啦!!!

    RDK X5首发上手体验!真的太帅啦!!! 本Blog同步发表于: 地瓜机器人开发者论坛: CSDN: 一年多以前无意中了解到了RDK X3,之后我便迅速的被地平线机器人开发者论坛(现在改名为了地瓜机 ...

  10. 【赵渝强老师】Oracle的PGA与数据库连接建立的过程

    首先,我们来了解一下Oracle的内存结构,如下: 关于Oracle的内存结构,详情请查看:[赵强老师]Oracle数据库的内存结构 (一)PGA的组成结构 PGA主要由以下三部分组成: 私有SQL区 ...