首页 > 其他分享 >2个月搞定计算机二级C语言——真题(10)解析qg

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

时间:2024-11-08 13:46:00浏览次数:5  
标签:真题 ++ double C语言 char qg fun 100 avg

合集 - 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. 后记

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

标签:真题,++,double,C语言,char,qg,fun,100,avg
From: https://www.cnblogs.com/westworldss/p/18534919

相关文章

  • c语言入门学习这一篇就够了-知识点总结(三万字二级必看)
    C语言   C语言是中高级语言的代表之一,它是所有现代编程语言的基石,包括C++、Java、C#、Python、JavaScript、Swift等。C语言是学习其他编程语言的基础,因为它提供了对系统底层的精确控制,这使得它在开发操作系统、驱动程序、嵌入式系统、高性能计算等领域中有着不可替代的......
  • 华为OD机试真题-整数编码-2024年OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述实现一种整数编码方法......
  • 真题练习45-Excel电子表格-全国计算机等级考试一级计算机基础及MS Office应用考试【汪
    第45组请根据题目要求,完成下列操作:打开考生文件夹下的电子表格,打开EXCEL.XLSX工作簿文件,按照下列要求完成对此表格的操作并保存。1.选择Sheet1工作表,将A1:G1单元格合并为一个单元格,文字居中对齐;计算每个员工A、B、C三种产品的销售额(每种产品的单价见Sheet1工作表I3:J6单元格......
  • 真题练习49-Word字处理-全国计算机等级考试一级计算机基础及MS Office应用考试【汪老
    第49组请根据题目要求,完成下列操作:在考生文件夹下,打开文档WORD.DOCX,按照要求完成下列操作并以该文件名(WORD.DOCX)保存文档。1.将标题段文字(“样本的选取和统计性描述”)设置为二号、楷体、加粗、居中,颜色为:深蓝,文字2,深色50%;文本效果设为“映像/映像变体:全映像,8磅偏移量(或:全映像......
  • (C语言)内存函数
    目录1)memcpy 1)memcpy的模拟实现2)memmove2)memmove的模拟实现3)memset4)memcmp1)memcpymemcpy是内存拷贝函数,其不同于strncpy在于其能拷贝任意数组;形式:void*memcpy(void*destinatoin,char*source,size_t num);destination是目标空间地址,source是源空间地址;num是拷贝......
  • 重温c语言之,7天开整,就是随便的写写,第八天
    一:函数1、递归题目:求n的阶乘(不考虑溢出)上代码1#include<stdio.h>2intfactorial(intn){3if(n>1){4returnn*(factorial(n-1));5}6else7{8return1;9}10}11#include<stdio.h>12in......
  • C语言入门第二天常量
    一:常量1:整形常量a:八进制开头是0开头例如06434b:十六进制开头是0x开头例如0xd1cc:代码展示其中%d表示十进制,%o表示八进制,%x表示十六进制。2:浮点类型a:浮点常量又被称为实数,一般含有小数部分。b:float类型小数点的精度为6位c:想printf输出为浮点类型用%f;d:代码展示......
  • 2个月搞定计算机二级C语言——真题(10)解析
    1.前言本篇我们讲解2个月搞定计算机二级C语言——真题102.程序填空题2.1题目要求2.2提供的代码#include<stdio.h>#pragmawarning(disable:4996)doublefun(doublex[],intn){ inti,k=0; doubleavg=0.0,sum=0.0; for(i=0;i<n;i++) avg......
  • c语言二维数组
    一、创建二维数组并初始化在c语言中二维数组可以在声明时直接初始化。#include<stdio.h>intmain(){//创建一个3x3的二维数组并初始化intmatrix[3][3]={{1,2,3},{4,5,6},{7,8,9}};return0;}二、访问二......
  • c语言一维数组
    一维数组数组的目的主要是为了解决在编程中需要存储和处理多个相同类型数据的问题。#include<stdio.h>intmain(){intarr[5]={1,2,3,4,5};//定义一个一维数组for(inti=0;i<5;i++){//使用for循环遍历数组printf("%d",arr[i]);//打......