当前位置: 首页 > news >正文

二级C语言题解:矩阵主、反对角线元素之和,二分法求方程根,处理字符串中 * 号

目录

一、程序填空📝 --- 矩阵主、反对角线元素之和

题目📃

分析🧐

二、程序修改🛠️ --- 二分法求方程根

题目📃

分析🧐        

三、程序设计💻 --- 处理字符串中 * 号

题目📃

分析🧐

今日题的总结


前言
本文讲解:矩阵主、反对角线元素之和,二分法求方程根,处理字符串中 * 号

🏠我的主页:我的主页
📚系列专栏:系列专栏

一、程序填空📝 --- 矩阵主、反对角线元素之和

难度:⭐

题目📃

在此程序中,函数 fun 的功能是:计算 N×N 矩阵的主对角线元素和反对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加反对角线元素中的值。

例如,若 N = 3,有下列矩阵:
1 2 3
4 5 6
7 8 9

首先累加 1、5、9,然后累加 3、5、7,函数返回值为 30。

代码如下: 
在1️⃣2️⃣3️⃣处填空

#include    <stdio.h>
#define    N    4
int fun(int  t[][N], int  n)
{  int  i, sum;
/**********found**********/1️⃣;for(i=0; i<n; i++)
/**********found**********/sum+= 2️⃣;for(i=0; i<n; i++)
/**********found**********/sum+= t[i][n-i-3️⃣] ;return sum;
}
void main()
{  int  t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;printf("\nThe original data:\n");for(i=0; i<N; i++){  for(j=0; j<N; j++)  printf("%4d",t[i][j]);printf("\n");}printf("The result is:  %d",fun(t,N));
}

分析🧐

这道题相对简单

  1. 填写:sum = 0
    由下方的sum的使用可以知道
    这个sum没有赋初值
    又因为是sum是用来做累加求和
    所以初始值是0
  2. 填写:t[ i ][ i ]
    由题意可以知道,这里有两个for循环
    这里的第一个就是累加从左往右(主对角线)的长度
    可以看出规律,都是行列相等的
  3. 填写:1
    这个循环,是来实现反对角线的(从右往左)
    可以写一下反对角线的各个元素,就可以得出规律了

 

解答代码如下:

#include    <stdio.h>
#define    N    4
int fun(int  t[][N], int  n)
{  int  i, sum;
/**********found**********/1️⃣sum = 0;for(i=0; i<n; i++)
/**********found**********/2️⃣sum+= t[i][i];for(i=0; i<n; i++)
/**********found**********/3️⃣sum+= t[i][n-i-1] ;return sum;
}
void main()
{  int  t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;printf("\nThe original data:\n");for(i=0; i<N; i++){  for(j=0; j<N; j++)  printf("%4d",t[i][j]);printf("\n");}printf("The result is:  %d",fun(t,N));
}

二、程序修改🛠️ --- 二分法求方程根

难度:⭐

题目📃

在此程序中,函数 fun 和 funx 的功能是:用二分法求方程 2x³ - 4x² + 3x - 6 = 0 的一个根,并要求绝对误差不超过 0.001
例如,若给 m 输入 - 100,n 输入 90,则函数求得的一个根为 2.000。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件 modi1.c 中。
不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

代码如下:
在代码中找出2个错误并修改

#include <stdio.h>
#include <math.h>
double funx(double  x)
{   return(2*x*x*x-4*x*x+3*x-6);  }
double fun( double  m, double  n)
{
/************found************/int  r;r=(m+n)/2;
/************found************/while(fabs(n-m)<0.001){   if(funx(r)*funx(n)<0)  m=r;else  n=r;r=(m+n)/2;}return  r;
}
void main( )
{  double  m,n, root;printf("Enter  m  n :  \n"); scanf("%lf%lf",&m,&n);root=fun( m,n );printf("root = %6.3f\n",root);
}

分析🧐        

这道题的意思难以理解,但是不要被这个文字描述吓到了,看他在程序里挖的错,都是一眼能够看出来的

  1. 第8行改为
    double  r;
    函数的返回值是double类型
    而最后是返回r的,所以很明显 i 是double
  2. 第11行改为
    while(fabs(r)<0.001)
    由题目可知,绝对值不超过0.001
    所以是小于0.001

解答代码如下:

#include <stdio.h>
#include <math.h>
double funx(double  x)
{   return(2*x*x*x-4*x*x+3*x-6);  }
double fun( double  m, double  n)
{
/************found************/1️⃣ double  r;r=(m+n)/2;
/************found************/2️⃣ while(fabs(r)<0.001){   if(funx(r)*funx(n)<0)  m=r;else  n=r;r=(m+n)/2;}return  r;
}
void main( )
{  double  m,n, root;printf("Enter  m  n :  \n"); scanf("%lf%lf",&m,&n);root=fun( m,n );printf("root = %6.3f\n",root);
}

三、程序设计💻 --- 处理字符串中 * 号

难度:⭐⭐⭐

题目📃

在此程序中,规定输入的字符串中只包含字母和 * 号。
编写函数 fun,其功能是:除了字符串前导和尾部的号外,将串中其它的 * 号全部删除。形参 h 已指向字符串中第一个字母,形参 p 指向字符串的中最后一个字母。在编写函数时,不得使用 C 语言提供的字符串函数。

 

例如,若字符串中的内容为 ******ABC*DEFG******,删除后,字符串中的内容应当是:******ABCDEFG******。在编写函数时,不得使用 C 语言提供的字符串函数。

 

注意:部分源程序在文件 prog1.c 中。
请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句

代码如下:
在fun函数中编写 

#include <stdio.h>
void  fun( char *a, char *h,char *p )
{}void main()
{  char  s[81],*t, *f;printf("Enter a string:\n");gets(s);t=f=s;while(*t)t++;t--;while(*t=='*')t--;while(*f=='*')f++;fun( s , f,t );printf("The string after deleted:\n");puts(s);
}

分析🧐

可以先看main函数的功能,就是将t指针跳过后面的*号,还有将f指针是跳过前面的*号
而后在fun函数中,h指针相当于指向在左边第一个非*号地址的位置
p指针是指向右边非*号地址的位置
这也就相当于是帮我们省去了考虑前后导零的情况了

之后就可以想到覆盖,当h指针是*号,就覆盖它
如果不是*号就向前走

解答代码如下:

#include <stdio.h>
void  fun( char *a, char *h,char *p )
{//p指向最右边非星号的位置//h指向最左边非星号的位置int j;while(h < p){//让flag指向h,代替h指针移动//如果直接让h指针移动的话,就只能执行一次了char *flag = h;if(*flag == '*'){//如果是*号,就将其覆盖for(j = 0; flag[j] != '\0'; j++)flag[j] = flag[j + 1];//覆盖完后,长度也要减少一个,所以p--p--;//如果不是*号的话h指针就向前移动}else h++;}
}void main()
{  char  s[81],*t, *f;printf("Enter a string:\n");gets(s);t=f=s;while(*t)t++;t--;while(*t=='*')t--;while(*f=='*')f++;fun( s , f,t );printf("The string after deleted:\n");puts(s);
}

今日题的总结

如果遇到题目看不懂,一定不要慌,先看看代码中能不能找出解出这个空的条件

希望本文能够帮助到你😊

相关文章:

二级C语言题解:矩阵主、反对角线元素之和,二分法求方程根,处理字符串中 * 号

目录 一、程序填空&#x1f4dd; --- 矩阵主、反对角线元素之和 题目&#x1f4c3; 分析&#x1f9d0; 二、程序修改&#x1f6e0;️ --- 二分法求方程根 题目&#x1f4c3; 分析&#x1f9d0; 三、程序设计&#x1f4bb; --- 处理字符串中 * 号 题目&#x1f…...

利用 Python 爬虫获取按关键字搜索淘宝商品的完整指南

在电商数据分析和市场研究中&#xff0c;获取商品的详细信息是至关重要的一步。淘宝作为中国最大的电商平台之一&#xff0c;提供了丰富的商品数据。通过 Python 爬虫技术&#xff0c;我们可以高效地获取按关键字搜索的淘宝商品信息。本文将详细介绍如何利用 Python 爬虫技术获…...

什么是幂等性

幂等性&#xff08;Idempotence&#xff09;是一个在数学、计算机科学等多个领域都有重要应用的概念&#xff0c;下面从不同领域为你详细介绍其含义。 数学领域 在数学中&#xff0c;幂等性是指一个操作或函数进行多次相同的运算&#xff0c;其结果始终与进行一次运算的结果相…...

群晖NAS如何通过WebDAV和内网穿透实现Joplin笔记远程同步

文章目录 前言1. 检查群晖Webdav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar工具4. 创建Webdav公网地址5. Joplin连接WebDav6. 固定Webdav公网地址7. 公网环境连接测试 前言 在数字化浪潮的推动下&#xff0c;笔记应用已成为我们记录生活、整理思绪的重要工具。Joplin&…...

示例:JAVA调用deepseek

近日&#xff0c;国产AI DeepSeek在中国、美国的科技圈受到广泛关注&#xff0c;甚至被认为是大模型行业的最大“黑马”。在外网&#xff0c;DeepSeek被不少人称为“神秘的东方力量”。1月27日&#xff0c;DeepSeek应用登顶苹果美国地区应用商店免费APP下载排行榜&#xff0c;在…...

【提示工程】:如何有效与大语言模型互动

随着人工智能技术的快速发展,大语言模型(LLM)如 GPT 系列在各类任务中的应用越来越广泛。从文本生成到代码编写,从数据分析到内容创作,这些模型展现出了强大的能力。然而,要充分发挥大语言模型的潜力,关键在于如何设计高质量的提示词(Prompts)。这门技术被称为提示工程…...

操作系统—经典同步问题

补充 互斥信号量mutex初值均为1 同步信号量根据问题实际描述自己设计 生产者-消费者问题 问题描述&#xff1a;一组生产者进程和一组消费者进程 共享一个初始为空、大小为n的缓冲区。&#xff08;缓冲区&#xff1a;临界资源&#xff09; 只有缓冲区没满时&#xff0c;生产者…...

profinet工业通信协议网关:提升钢铁冶炼智能制造效率的利器

工业通信协议网关profinet转ethercat&#xff08;稳联技术WL-PN-ECATM&#xff09;在钢铁冶炼生产线中的智能应用实践 在现代钢铁冶炼生产中&#xff0c;复杂的设备互联和数据传输对生产效率和质量控制至关重要。本案例详细阐述了某大型钢铁集团通过工业通信协议网关实现生产线…...

Vue基础:计算属性(描述依赖响应式状态的复杂逻辑)

文章目录 引言computed() 方法期望接收一个 getter 函数可写计算属性:计算属性的 Setter计算属性的缓存机制调试 Computed引言 推荐使用计算属性来描述依赖响应式状态的复杂逻辑 computed 函数:它接受 getter 函数并为 getter 返回的值返回一个不可变的响应式 ref 对象。 c…...

leetcode:1534. 统计好三元组(python3解法)

难度&#xff1a;简单 给你一个整数数组 arr &#xff0c;以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件&#xff0c;则认为它是一个 好三元组 。 0 < i < j < k < arr.length|arr[i] - arr[j]| &l…...

BUU27 [SUCTF 2019]CheckIn1

题目是上传文件 直接上传muma.jpg还不成功&#xff1a; 好吧&#xff0c;那做一个图片马上去&#xff0c;换马以后发现还是不行&#xff0c;呃啊啊啊啊 干啥啥不行&#xff0c;搜wp第一名&#xff0c;哎 新面孔&#xff1a;exif_imagetype 函数在 PHP 中用于检测一个文件是否为…...

unity学习30:Audio Source, Audio clip 音效和音乐

目录 1 音乐相关必须要有 Audio listener 和Source 2 Scene里必须要有 Audio listener 3 Audio Source 3.1 Audio Source 就是音源&#xff0c;可播放的音乐clip 分类 3.2 创建Audio Source 3.3 各种属性 3.4 3D sound Settings 4 使用脚本来播放声音 4.1 声明AudioC…...

【Qt 常用控件】输入类控件1(QLineEdit和QTextEdit 输入框)

目录 1.QLineEdit 单行输入框 例&#xff1a;输入个人信息&#xff0c;通过按钮提交 例&#xff1a;为输入框设置验证器&#xff0c;检查输入的电话 例&#xff1a;验证两次输入的密码是否一致 例&#xff1a;是否显示密码按钮,toggled信号。 2.QTextEdit多行输入框 、QPl…...

openEuler22.03LTS系统升级docker至26.1.4以支持启用ip6tables功能

本文记录了openEuler22.03LTS将docker升级由18.09.0升级至26.1.4的过程&#xff08;当前docker最新版本为27.5.1&#xff0c;生产环境为保障稳定性&#xff0c;选择升级到上一个大版本26的最新小版本&#xff09;。 一、现有环境 1、系统版本 [rootlocalhost opt]# cat /etc…...

深入解析:如何利用 Java 爬虫按关键字搜索淘宝商品

在电商领域&#xff0c;通过关键字搜索商品是常见的需求。无论是商家分析竞争对手&#xff0c;还是消费者寻找心仪的商品&#xff0c;获取搜索结果中的商品信息都至关重要。本文将详细介绍如何利用 Java 爬虫按关键字搜索淘宝商品&#xff0c;并提供完整的代码示例。 一、Java…...

STM32上部署AI的两个实用软件——Nanoedge AI Studio和STM32Cube AI

1 引言 STM32 微控制器在嵌入式领域应用广泛&#xff0c;因为它性能不错、功耗低&#xff0c;还有丰富的外设&#xff0c;像工业控制、智能家居、物联网这些场景都能看到它的身影。与此同时&#xff0c;人工智能技术发展迅速&#xff0c;也逐渐融入各个行业。 把 AI 部署到 STM…...

C++ Primer 成员访问运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

芯科科技的BG22L和BG24L带来应用优化的超低功耗蓝牙®连接

全新的BG22L为常见蓝牙设备提供强大的安全性和处理能力&#xff0c;而BG24L支持先进的AI/ML加速和信道探测功能 2025年2月6日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#x…...

java后端开发面试常问

面试常问问题 1 spring相关 &#xff08;1&#xff09;Transactional失效的场景 <1> Transactional注解默认只会回滚运行时异常&#xff08;RuntimeException&#xff09;&#xff0c;如果方法中抛出了其他异常&#xff0c;则事务不会回滚&#xff08;数据库数据仍然插…...

‌双非硕士的抉择:自学嵌入式硬件开发还是深入Linux C/C++走软开?

今天给大家分享的是一位粉丝的提问&#xff0c;双非硕研一是自学嵌入式走偏硬件还是说深入学习Linuxc/c走软开呢&#xff1f; 接下来把粉丝的具体提问和我的回复分享给大家&#xff0c;希望也能给一些类似情况的小伙伴一些启发和帮助。 粉丝提问&#xff1a; 老师好&#xff…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...