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

news/2024/11/20 21:28:13/文章来源:https://www.cnblogs.com/main-studio/p/18559350

1. 前言

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

真题12-程序评分

2. 程序填空题

2.1 题目要求

真题12-程序填空

2.2 提供的代码

#include  <stdio.h>
#define   N   3
int fun(int  (*a)[N])
{int  i, j, m1, m2, row, colum;m1 = m2 = 0;for (i = 0; i < N; i++){j = N - i - 1;  m1 += a[i][i];  m2 += a[i][j];}if (m1 != m2) return  0;for (i = 0; i < N; i++) {/**********found**********/row = colum = __1__;for (j = 0; j < N; j++){row += a[i][j];  colum += a[j][i];}/**********found**********/if ((row != colum) __2__(row != m1)) return 0;}/**********found**********/return  __3__;
}
main()
{int  x[N][N], i, j;printf("Enter number for array:\n");for (i = 0; i < N; i++)for (j = 0; j < N; j++)  scanf("%d", &x[i][j]);printf("Array:\n");for (i = 0; i < N; i++){for (j = 0; j < N; j++)  printf("%3d", x[i][j]);printf("\n");}if (fun(x)) printf("The Array is a magic square.\n");else printf("The Array isn't a magic square.\n");getchar();
}

2.3 解题思路

第(1)处填空:

在这条语句的下方,使用了一个for循环将数组的行和列累加至rowcolum中,所以这里需要对他俩进行初始化为 0。

和上方的m1 = m2 = 0;是同种作用,在实际应用中可以直接在变量定义时初始化,例如:int m1 = 0,m2 = 0;

row = colum = 0;

第(2)处填空:

if中的语句是返回 0,则需要判断检查当前行的和是否等于当前列的和,或当前行的和是否等于对角线的和(幻方的要求),这两个中只要有一个为不等于,则可以说明该数组不是幻方。

其中判断的条件已经给出,我们只需要在中间填入||,表示有其中一个条件符合就会执行return 0;

if ((row != colum) || (row != m1)) return 0;

第(3)处填空:

经过前面一系列的判断,都没有执行到return 0;,则说明该数组是幻方,返回1即可。

return  1;

2.4 代码实现

填写完整的代码:

#include  <stdio.h>
#define   N   3
int fun(int  (*a)[N])
{int  i, j, m1, m2, row, colum;m1 = m2 = 0;for (i = 0; i < N; i++){j = N - i - 1;  m1 += a[i][i];  m2 += a[i][j];}if (m1 != m2) return  0;for (i = 0; i < N; i++) {/**********found**********/row = colum = 0;for (j = 0; j < N; j++){row += a[i][j];  colum += a[j][i];}/**********found**********/if ((row != colum) || (row != m1)) return 0;}/**********found**********/return  1;
}
main()
{int  x[N][N], i, j;printf("Enter number for array:\n");for (i = 0; i < N; i++)for (j = 0; j < N; j++)  scanf("%d", &x[i][j]);printf("Array:\n");for (i = 0; i < N; i++){for (j = 0; j < N; j++)  printf("%3d", x[i][j]);printf("\n");}if (fun(x)) printf("The Array is a magic square.\n");else printf("The Array isn't a magic square.\n");getchar();
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

3. 程序修改题

3.1 题目要求

真题12-程序修改

3.2 提供的代码

#include <stdio.h>
#include <string.h>
#define    N     80
int  fun(char* s, char* t)
{int  n;char* p, * r;n = 0;while (*s){p = s;/*********found**********/r = p;while (*r)if (*r == *p) { r++;  p++; }else  break;/*********found**********/if (*r = 0)n++;s++;}return  n;
}
main()
{char  a[N], b[N];    int   m;printf("\nPlease enter string a : "); gets(a);printf("\nPlease enter substring b : "); gets(b);m = fun(a, b);printf("\nThe result is :  m = %d\n", m);getchar();
}

3.3 解题思路

第(1)处修改:

先执行了p = s;,又执行了r = p;,此时r等于p等于s,下方的语句会判断*r*p是否相等。在程序里它没有用形参t,也就是说程序运行起来,一直是s自己比较。

这里需要将t的地址赋值给r,才能达到题目要求的效果。

r = t;

第(2)处修改:

这里没啥好说的,少个等号,加上即可。

if (*r == 0)

3.4 代码实现

修改后的代码:

#include <stdio.h>
#include <string.h>
#define    N     80
int  fun(char* s, char* t)
{int  n;char* p, * r;n = 0;while (*s){p = s;/*********found**********/r = t;while (*r)if (*r == *p) { r++;  p++; }else  break;/*********found**********/if (*r == 0)n++;s++;}return  n;
}
main()
{char  a[N], b[N];    int   m;printf("\nPlease enter string a : "); gets(a);printf("\nPlease enter substring b : "); gets(b);m = fun(a, b);printf("\nThe result is :  m = %d\n", m);getchar();
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

4. 程序设计题

4.1 题目要求

真题12-程序设计

4.2 提供的代码

#include <stdio.h>
#pragma warning (disable:4996)
#define N 5
struct mpow
{double a;int t;
};
double fun(struct mpow* x, int n)
{}
void main()
{void NONO();struct mpow x[N] = { 12,0,9,2,23,1,7,2 };double sum;sum = fun(x, 4);printf("sum=%lf\n", sum);NONO();
}
void NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE* in, * out;struct mpow x[N];int i, j;double sum;in = fopen("in.dat", "r");out = fopen("out.dat", "w");for (i = 0; i < 10; i++) {for (j = 0; j < 4; j++) fscanf(in, "%lf,%d,", &x[j].a, &x[j].t);sum = fun(x, 4);fprintf(out, "sum=%lf\n", sum);}fclose(in);fclose(out);
}

4.3 解题思路

在数学中,幂是用来表示一个数被自身乘以若干次的运算结果。幂由两部分组成:底数和指数。

这个大家在数学中都学过,这里便不再赘述,下面主要来看如何用代码来实现功能。

我们可以采用两层循环嵌套的方式,依次求出结构体数组中计算的结果,外层循环为 n个幂数,内层循环则将幂的底a自乘t次,计算完一个幂数之和后累加到sum中,这样遍历结束后即可得到x所指数组中n个幂数之和,将其返回即可。

4.4 代码实现

填写完整的代码:

#include <stdio.h>
#pragma warning (disable:4996)
#define N 5
struct mpow
{double a;int t;
};
double fun(struct mpow* x, int n)
{double sum = 0.0, number = 1.0;int i = 0, j = 0;for (i = 0; i < n; i++){number = 1.0;for (j = 0; j < x[i].t; j++){number *= x[i].a;}sum += number;}return sum;
}
void main()
{void NONO();struct mpow x[N] = { 12,0,9,2,23,1,7,2 };double sum;sum = fun(x, 4);printf("sum=%lf\n", sum);NONO();
}
void NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE* in, * out;struct mpow x[N];int i, j;double sum;in = fopen("in.dat", "r");out = fopen("out.dat", "w");for (i = 0; i < 10; i++) {for (j = 0; j < 4; j++) fscanf(in, "%lf,%d,", &x[j].a, &x[j].t);sum = fun(x, 4);fprintf(out, "sum=%lf\n", sum);}fclose(in);fclose(out);
}

提示:为确保代码正常运行,请在题库编程环境的对应题目中进行测试和运行。

5. 后记

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/837543.html

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

相关文章

mini-lsm通关笔记Week2Day5

项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsmSummary 在本章中,您将:实现manifest文件的编解码。 系统重启时从manifest文件中恢复。要将测试用例复制到启动器代码中并运行它们, cargo x copy-test --week 2 --day 5 ca…

SSTI(模板注入)

SSTI:SSTI(Server-Side Template Injection)即服务端模板注入,它是一种安全漏洞攻击技术。 当应用程序在服务器端使用模板引擎来呈现动态生成的内容时,如果用户可以控制模板引擎的输入,就可能导致 SSTI 漏洞。 服务端接收攻击者的恶意输入以后,未经任何处理就将其作为 Web…

blktrace分析IO

前言 上篇博客介绍了iostat的一些输出,这篇介绍blktrace这个神器。上一节介绍iostat的时候,我们心心念念希望得到块设备处理io的service time,而不是service time + wait time,因为对于评估一个磁盘或者云磁盘而言,service time才是衡量磁盘性能的核心指标和直接指标。很不…

数据库 校验名称唯一性,用于新增和修改功能

数据库 校验名称唯一性,用于新增和修改功能@目录概述代码 概述应用场景:xml,注解方式的自己略微改造即可使用。 提示:存粹方便自己拷贝代码,用于新增和修改前校验名称唯一性问题。代码Service/*** 校验名称是否重名* @Author 211145187* @Date 2022/5/5 15:37* @param nam…

人工智能之机器学习最优化基础——凸优化

凸优化(Convex Optimization) 是优化问题的一个重要分支,其目标是最小化或最大化一个凸函数(或凹函数),通常受限于一组凸约束条件。由于凸优化问题具有良好的数学性质,许多优化问题可以转化为凸优化问题并高效求解。1. 什么是凸优化问题? 一个标准的凸优化问题可以表示…

可信执行环境(TEE)学习笔记

可信执行环境(TEE)学习笔记来越多的数据在云环境下进行存储、共享和计算,云环境下的数据安全与隐私保护也逐渐成为学术界以及工业界关注的热点问题。目前阶段,隐私保护技术主要基于密码算法及协议(如安全多方计算、同态加密等)完成场景落地,其优点主要在于具有较高的安全…

同步与互斥与通信

同步与互斥 同步:两任务要协调 互斥:两任务要争用 举一个例子。在团队活动里,同事A先写完报表,经理B才能拿去向领导汇报。经理B必须等同事A完成报表,AB之间有依赖,B必须放慢脚步,被称为同步。在团队活动中,同事A已经使用会议室了,经理B也想使用,即使经理B是领导,他也…

Windows 自动色彩管理(ACM)

在一些笔记本上Win11可以看到设置里有“自动管理应用的颜色”选项,有些笔记上没有。这里讲下“自动管理应用的颜色”的显示规则 看华为MetaBook E设置界面显示:“自动管理应用的颜色”与“颜色自适应”是一个功能? 不是,颜色自适应是要依赖环境颜色传感器来实现的,有环境颜…

闲话 11.20

杂题乱写 11.2010 days left. 不说闲话,捡重点说。P4113 [HEOI2012] 采花 hh 的项链加强版。 首先考虑莫队,轻松写,轻松 133pts,轻松过不了后两个 hack,考虑优化。 既然是加强版,那么就考虑沿用之前的思路。记录上次出现某个数的位置和上上次出现某个数的位置,离线之后将…

CTFshow渗透知识点

1.robot.txtRobots是一个协议,全称为“网络爬虫协议”,也称爬虫协议、机器人协议等。网站通过Robots协议告诉搜索引擎哪些页面可以访问,哪些不可以访问。 使用方法: 在浏览器的网址搜索框中,输入根域名,再输入/robots.txt即可 博客:Robots.txt在渗透测试中的利用_robots.…

Goby 漏洞发布|超高危!Palo-alto-panos createRemoteAppwebSession.php 命令执行漏洞CVE-2024-0012 CVE-2024-947

漏洞名称:Palo-alto-panos createRemoteAppwebSession.php 命令执行漏洞CVE-2024-0012 CVE-2024-947 English Name:Palo-alto-panos /php/utils/createRemoteAppwebSession.php Command Execution Vulnerability CVE-2024-0012 CVE-2024-9474 CVSS core: 9.5 漏洞描述: Palo…

一个.NET开源、快速、功能丰富的跨平台阅读服务器

前言 今天大姚给大家分享一个基于.NET开源的快速、功能丰富的跨平台阅读服务器,它的设计初衷是提供一个全面的解决方案,满足用户的所有阅读需求。用户可以设置自己的服务器,并与朋友和家人分享阅读收藏:Kavita。 支持格式书籍:epub, pdf。 漫画/网络漫画/漫画书:cbr, cbz…