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. 首次在WebAPI中写单元测试

    xUnit 这次我使用的是xUnit测试框架,而不是VS自带的MSTest框架.在添加新建项目时选择xUnit测试项目就行了. 目前只体验到了一个差别,即xUnit可以使用特性向测试方法传参,而不用在 ...

  2. 无分号js风格注意的三个问题

    建议如果一行代码是以   (   [   `  开头的,则最好都在其前面补上一个分号. // 1.( function say() { console.log('hello world') } // ...

  3. Linux/macOS 查看网络接口

    Linux 显示网络设备的状态: $ nmcli device status DEVICE TYPE STATE CONNECTION enp0s5 ethernet connected Wired ...

  4. Drools决策表实践运用

    Drools 决策表的使用与说明 Drools决策表的使用 官方文档决策表说明 决策表使用方式 执行drl代码及结果 Drools决策表的使用 官方文档决策表说明 Drools 决策表的使用 16.7 ...

  5. Mongodb入门2

    $push 修饰符:用于往数组中追加元素  db.workmates.update({name:'xiaowang'},{$push:{interseta:"PHP"}})    ...

  6. 小tips:HTML元素属性分类以及不常用属性介绍

    HTML元素属性分类 全局属性和局部属性 属性可以分为两类:全局属性和局部属性. 其中全部元素都能使用的通用属性称为全局属性.只能运用在某些特定元素的属性,称为局部属性,例如form的action属性 ...

  7. k8s 中的 Ingress 简介

    〇.前言 前边已经介绍了 k8s 中的相关概念和 Service,本文继续看下什么是 Ingress. Ingress 的重要性不言而喻,它不仅统一了集群对外访问的入口,还提供了高级路由.七层负载均衡 ...

  8. 记一次 RabbitMQ 消费者莫名消失问题的排查

    开心一刻 今天好哥们找我借钱哥们:兄弟,我最近手头紧,能不能借我点...我:我手头也不宽裕,要不你试试银行贷款或者花呗?哥们:不行,那个借了要还的我:... 问题回顾 某天下午,生产监控告警:消息积压 ...

  9. SuperMap流数据应用技术方案

    流数据应用技术方案针对流数据应用场景,针对流数据的海量.多源.持续等特征,进行持续地获取相关的动态位置,以及持续地分析.处理和挖掘. 本章沿用基于单机SuperMap iServer环境,介绍流数据处 ...

  10. Nacos 开启鉴权设置

    Nacos 开启鉴权设置 # 开启鉴权 nacos.core.auth.enabled=true nacos.core.auth.system.type=nacos # 开启鉴权之后,你可以自定义用于 ...