二级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);
}

今日题的总结

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

希望本文能够帮助到你😊

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt 支持的动画格式对比,Lottie/APNG/GIF/WEBP

Qt版本&#xff1a;6.7.2 &#xff0c; QML 一&#xff0c;Lottie 在qml中使用LottieAnimation即可&#xff0c;但有三个问题&#xff1a; 1.动画加载中报错&#xff1a; 如果图片&#xff08;.json)本身存在不支持的effect 或shape type等&#xff0c;效果并不好&#xff1a…

SpringCloud - Nacos注册/配置中心

前言 该博客为Nacos学习笔记&#xff0c;主要目的是为了帮助后期快速复习使用 学习视频&#xff1a;7小快速通关SpringCloud 辅助文档&#xff1a;SpringCloud快速通关 一、简介 Nacos官网&#xff1a;https://nacos.io/docs/next/quickstart/quick-start/ Nacos /nɑ:kəʊ…

老游戏回顾:TL2

TL2是一部ARPG游戏&#xff0c;是TL的续作游戏&#xff0c;由位于美国西雅图的Runic Games开发&#xff0c;游戏于2012年9月20日上市&#xff0c;简体中文版于2013年4月10日在国内上市。 2有非常独特的艺术风格&#xff0c;这些在1中就已经形成&#xff0c;经过升级将使这款游…

DeepSeek-R1 云环境搭建部署流程

DeepSeek横空出世&#xff0c;在国际AI圈备受关注&#xff0c;作为个人开发者&#xff0c;AI的应用可以有效地提高个人开发效率。除此之外&#xff0c;DeepSeek的思考过程、思考能力是开放的&#xff0c;这对我们对结果调优有很好的帮助效果。 DeepSeek是一个基于人工智能技术…

利用ETL工具进行数据挖掘

ETL的基本概念 数据抽取&#xff08;Extraction&#xff09;&#xff1a;从不同源头系统中获取所需数据的步骤。比如从mysql中拿取数据就是一种简单的抽取动作&#xff0c;从API接口拿取数据也是。 数据转换&#xff08;Transformation&#xff09;&#xff1a;清洗、整合和转…

k8s网络插件及基础命令

一、k8s的cni网络插件 1.k8s的内部网络模式 pod内的容器与容器之间的通信。一个节点上的pod之间的通信&#xff0c;docker0网桥直接通信。不同节点上的pod之间的通信&#xff1a;通过物理网卡的ip地址和其他节点上的物理网卡的设备进行通信&#xff0c;然后把流量转发到指定的…

保姆级教程Docker部署KRaft模式的Kafka官方镜像

目录 一、安装Docker及可视化工具 二、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 三、集群部署 四、部署可视化工具 1、创建挂载目录 2、运行Kafka-ui容器 3、Compose运行Kafka-ui容器 4、查看Kafka-ui运行状态 …

【C语言】传值调用与传址调用详解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;传值调用1. 什么是传值调用&#xff1f;2. 示例代码&#xff1a;传值调用失败的情况执行结果&#xff1a; 3. 为什么传值调用无法修改外部变量&#xff1f; &#x1f4…

HarmonyOS 5.0应用开发——ContentSlot的使用

【高心星出品】 文章目录 ContentSlot的使用使用方法案例运行结果 完整代码 ContentSlot的使用 用于渲染并管理Native层使用C-API创建的组件同时也支持ArkTS创建的NodeContent对象。 支持混合模式开发&#xff0c;当容器是ArkTS组件&#xff0c;子组件在Native侧创建时&#…

Golang:Go 1.23 版本新特性介绍

流行的编程语言Go已经发布了1.23版本&#xff0c;带来了许多改进、优化和新特性。在Go 1.22发布六个月后&#xff0c;这次更新增强了工具链、运行时和库&#xff0c;同时保持了向后兼容性。 Go 1.23 的新增特性主要包括语言特性、工具链改进、标准库更新等方面&#xff0c;以下…

11.PPT:世界动物日【25】

目录 NO12​ NO34 NO56​ NO789视频音频​ NO10/11/12​ NO12 设计→幻灯片大小→ →全屏显示&#xff08;16&#xff1a;9&#xff09;确定调整标题占位符置于图片右侧&#xff1a;内容占位符与标题占位符左对齐单击右键“世界动物日1”→复制版式→大小→对齐 幻灯片大小…

力扣.623. 在二叉树中增加一行(链式结构的插入操作)

Problem: 623. 在二叉树中增加一行 文章目录 题目描述思路复杂度Code 题目描述 思路 1.首先要说明&#xff0c;对于数据结构无非两大类结构&#xff1a;顺序结构、链式结构&#xff0c;而二叉树实质上就可以等效看作为一个二叉链表&#xff0c;而对于链表插入一个节点的操作是应…

Office/WPS接入DS等多个AI工具,开启办公新模式!

在现代职场中&#xff0c;Office办公套件已成为工作和学习的必备工具&#xff0c;其功能强大但复杂&#xff0c;熟练掌握需要系统的学习。为了简化操作&#xff0c;使每个人都能轻松使用各种功能&#xff0c;市场上涌现出各类办公插件。这些插件不仅提升了用户体验&#xff0c;…

yolov11模型在Android设备上运行【踩坑记录】

0) 参考资料: https://github.com/Tencent/ncnn?tabreadme-ov-file https://github.com/pnnx/pnnx https://github.com/nihui/ncnn-android-yolov5 https://github.com/Tencent/ncnn?tabreadme-ov-file 1) &#xff1a;将xxx.pt模型转化成 xxx.onnx ONNX&#xff08;Ope…

DeepSeek与llama本地部署(含WebUI)

DeepSeek从2025年1月起开始火爆&#xff0c;成为全球最炙手可热的大模型&#xff0c;各大媒体争相报道。我们可以和文心一言一样去官网进行DeepSeek的使用&#xff0c;那如果有读者希望将大模型部署在本地应该怎么做呢&#xff1f;本篇文章将会教你如何在本地傻瓜式的部署我们的…

arcgis for js范围内天地图高亮,其余底图灰暗

在GIS地图开发中&#xff0c;有时我们需要突出显示某个特定区域&#xff0c;而将其他区域灰暗处理&#xff0c;以达到视觉上的对比效果。本文将介绍如何使用ArcGIS for JavaScript实现这一功能&#xff0c;具体效果为&#xff1a;在指定范围内&#xff0c;天地图高亮显示&#…

基于微信小程序的医院预约挂号系统的设计与实现

hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生…

Docker深度解析:安装各大环境

安装 Nginx 实现负载均衡&#xff1a; 挂载 nginx html 文件&#xff1a; 创建过载目录&#xff1a; mkdir -p /data/nginx/{conf,conf.d,html,logs} 注意&#xff1a;在挂载前需要对 conf/nginx.conf 文件进行编写 worker_processes 1;events {worker_connections 1024; …

Linux 源码编译安装httpd 2.4,提供系统服务管理脚本并测试

第一种方式 1. 下载 Apache HTTP Server 源代码 首先&#xff0c;从 Apache 官网 下载最新版本的 httpd 2.4 源码&#xff0c;或者直接使用 wget 下载&#xff1a; [rootlocalhost ~]# wget https://downloads.apache.org/httpd/httpd-2.4.36.tar.gz # 解压 [rootlocalhost ~…

ARM嵌入式学习--第十三天(I2C)

I2C --介绍 I2C&#xff08;Inter-intergrated Circuit 集成电路&#xff09;总线是Philips公司在八十年代初推出的一种串行、半双工的总线&#xff0c;主要用于近距离、低速的芯片之间的通信&#xff1b;I2C总线有俩根双向的信号线&#xff0c;一根数据线SDA用于收发数据&…