C语言典型例题39

news2024/11/13 11:37:02

《C程序设计教程(第四版)——谭浩强》


例题3.7 求ax²+bx+c=0方程的解。要求能处理任何情况下a、b、c的组合。


数学知识:

①当a=0时,为一次方程bx+c=0;x=-c/b;

②当a≠0时,为二次函数ax²+bx+c=0。b²-4c≥0时,有两个实根;

                                                              b²-4c≤0,有两个共轭复根。


代码:

//《C程序设计教程(第四版)——谭浩强》
//例题3.7 求ax²+bx+c=0方程的解。要求能处理任何情况下a、b、c的组合。

//数学知识:①当a=0时,为一次方程bx+c=0;x=-c/b;②当a≠0时,为二次函数ax²+bx+c=0。b²-4c≥0时,有两个实根;b²-4c≤0,有两个共轭复根

#include <stdio.h>
#include <math.h>
int main()
{
	float a = 0;
	float b = 0;
	float c = 0;
	 
	float d = 0;
	
	float x = 0;
	float x1 = 0;
	float x2 = 0; 
	
	printf("请输入a b c的值(三个值用空格隔开):\n");
	scanf("%f %f %f",&a,&b,&c);
	
	if(a!=0)
	{
		//d=pow(b,2)-4*a*c;//d=b²-4c
		d=b*b-4*a*c;
		if(d>=0)//b²-4c≥0时,有两个实根
		{
			x1=(-b+sqrt(d))/(2*a);
			x2=(-b-sqrt(d))/(2*a);
			if(d>0)
			{
				printf("当a≠0且△>0时,二次方程有两个不等实根,x1=%.2f,x2=%.2f\n",x1,x2);
				//printf("%.2f,%.2f",x1,x2);
			}
			else
			{
				printf("当a≠0时且a=0,二次方程有两个相等实根,x1=%.2f,x2=%.2f\n",x1,x2);
				//printf("%.2f,%.2f",x1,x2);
			}
		}
		else//b²-4c﹤0,有两个共轭复根
		{
			float p = 0;//实部
			float q = 0;//虚部
				
			p=-b/(2*a);
			q=sqrt(-d)/(2*a);
				
			printf("当a≠0时且a<0,二次方程有两个共轭复根,x1=%.2f+%.2fi,x2=%.2f-%.2fi\n",p,q,p,q);
			//printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi",p,q,p,q);
		}
	}
	else//当a=0时,bx+c=0,x=-c/b
	{
		if(b==0)
		{
			printf("当a=0且b=0时,x=%.2f\n",c);	
		}
		else
		{
			x=-c/b;
			printf("当a=0时,一次方程bx+c=0有一个根,x=%.2f\n",x);	
		}
		
	}
	return 0;
}

运行结果:(只写4中情况)

(1)a=0,b=0

(2)a=0,b≠0

(3)a≠0且a>0,b≠0

(4)a≠0且a=0,b≠0

(5)a≠0且a<0,b≠0

代码编写过程中需要注意的问题:
  

(1)printf中的符号不要随便加

例如:在printf(“”);加一个符号

原来:

加上之后:(这个符号是在符号大全上随便添加的)

【运行出错!!!】

错误:

33    12    D:\课?套?业\C语言\C语言?伪?例?鈂??3.7.c    [Error] converting to execution character set: Illegal byte sequence

 [Error] converting to execution character set: Illegal byte sequence

转换为执行字符集:非法字节序列

这个错误信息 “converting to execution character set: Illegal byte sequence” 通常与字符编码有关,尤其是在处理文本时。可能是由于使用了不符合指定字符集的字符,或输入的文件中含有无法识别的字节序列,通常在编程的上下文中
解决方法:
  1. 检查文件编码

    • 如果是从某个文件读取内容,确保这个文件是以正确的编码格式保存的,例如 UTF-8。可以使用文本编辑器(如 Visual Studio Code、Notepad++)来检查和更改文件编码。
  2. 使用合适的编码

    • 在程序中,确保你设定了正确的编码。例如,在 C/C++ 中,标准输入输出默认使用系统编码,如果你使用的字符集不是该编码,就可能引发此错误。
    • 如果你在处理字符串时,确保字符串都是合法的字符,比如避免使用空字节或其他无法显示的字符。
  3. 环境设置

    • 检查你的开发环境或编译环境的字符集设置。在某些系统中,可能需要在命令行或配置文件中指定字符集。例如,在 UNIX/Linux 系统下可以使用 命令查看当前字符集设置。locale
  4. 用 UTF-8 编码编译

    • 确保你的源代码文件是用 UTF-8 编码的。如果是 Windows 系统,确保使用翻译成 ANSI、UTF-8 (无 BOM) 编码,不然字符在读取时可能导致错误。
  5. 清理输入

    • 如果你的程序会接受外部输入,考虑对输入内容进行检查和清理,确保没有奇怪的字节序列被包含在输入中。
例外情况:

如果你正在使用 Terminal 或 IDE,并且使用的语言和库需要特定的编码(如utf-8Python 的 ),确保你的环境支持这些设置。

(2)

C语言相关知识点:

(1)次方的写法(以b²为例)

d=pow(b,2);//这种写法高次幂更方便,但是要注意写上头文件include <math.h>
d=b*b;//这种写法更易理解,但是仅仅只适用于低次幂或者次幂固定时更方便

(2)if语句的嵌套使用

  1. 嵌套层次不要过多:过多的嵌套会使代码看起来混乱且难以理解,应尽量避免。

  2. 每个if或else if语句后面都应该有对应的花括号包围的语句组,即使只有一行代码(虽然可以省略,但建议不要省略,容易出错还不容易培养好的代码风格)。

  3. 在嵌套的if语句中,else关键字只与最内层的if最相邻的if匹配。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 热题100-22

相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返…

电池常用,但电芯热电耦合难?科学仿真技术轻松解决

SimLab 电池热电耦合模型 SimLab 的Battery模块&#xff0c;用于模拟电荷守恒与电池模块中的能量方程耦合。在这种方法中&#xff0c;电芯被建模为一个均匀的介质&#xff0c;可以模拟电压-电流的响应和相关热量的产生。该解决方案具有单电位&#xff08;single potential &…

创客匠人对话(上):北京惢众教育创办人揭秘如何引爆大事件发售

老蒋创客圈第63期对话标杆直播连麦&#xff0c;本期我们邀请到【惢众身心成长家园平台】王辉老师。为我们“揭秘心理疗愈赛道&#xff0c;首发GMV突破百万的方法论&#xff01;”&#xff0c;深度分享自己通过原有客源造流量&#xff0c;引爆大事件发售的核心秘籍&#xff0c;拆…

统计绘图:基于networkD3包绘制交互式桑基图

本文介绍通过R包 networkD3 绘制交互式桑基图。 桑基图&#xff08;Sankey Diagram&#xff09;&#xff0c;由节点&#xff08;Node&#xff09;和边&#xff08;分支&#xff0c;Edge&#xff09;组成&#xff0c;常用于展示数据的流动和分布情况&#xff1b;其中边的宽度与…

TypeScript 之 JavaScript文件类型检查

启用对 JavaScript 文件的类型检查 在 TypeScript 编译选项 compilerOptions 全部配置项 中&#xff0c;可以通过以下2个属性配置 JavaScript Support&#xff1a; allowJs 是否允许编译 JavaScript 文件。默认值是 false。在默认情况下&#xff0c;TypeScript 编译器只处理 .…

从0开始搭建vue + flask 旅游景点数据分析系统(十二)【完结篇】:用户管理之增删改查、用户信息更新

这一期继续完成用户管理的增删改查和登录用户修改自己信息的功能&#xff0c;首先完成后端接口的功能。 1 后端接口 这边有查询列表接口、查询单个接口、新增接口、修改接口、删除接口这5个接口&#xff1a; #** 用户信息的增删改查 *** # 用户列表 main.route(/users, meth…

离线安装prometheus与Grafana实现可视化监控

简介 prometheus 是一个专为云环境设计的开源系统监控和警报工具&#xff0c;它收集并存储多维度的时间序列数据&#xff0c;通过PromQL查询语言提供强大的数据检索能力&#xff0c;并支持可视化及警报功能。而 Grafana 则是一个开源的数据可视化平台&#xff0c;能够与包括Pr…

2024软件测试面试官在面试的时候会做些什么?

虽然没有了金九银十&#xff0c;但是公司的测试HC还是有完全锁死&#xff0c;断断续续的也在帮着面试一些人。同时星球上也有很多人在关注面试的问题&#xff0c;本文就以自己的经验&#xff0c;从面试官的角度&#xff0c;聊聊面试过程中的那些事。 一、笔试面试官 在面试开…

使用Flv.js无法播放视频

背景 由于项目需要&#xff0c;搭建了一套SRS直播服务&#xff0c;通过直播录制将视频报错并在本地播放。视频存储的格式为flv&#xff0c;所以使用flv.js插件来播放。测试时发现录制的视频无法播放&#xff0c;经过排查找到原因。 报错信息 控制台并无明显报错&#xff0c;…

Keepalived高可用集群--几个实验带你认识集群的坚实后盾

一、KeepAlived的发展 Keepalived起初是为LVS设计的&#xff0c;专门用来监控集群系统中各个服务节点的状态&#xff0c;它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态&#xff0c;如果某个服务器节点出现异常&#xff0c;或者工作出现故障&#…

神经串联式语音转换:对基于串联的单次语音转换方法的再思考 论文笔记

NEURAL CONCATENATIVE SINGING VOICE CONVERSION: RETHINKING CONCATENATION-BASED APPROACH FOR ONE-SHOT SINGING VOICE CONVERSION 笔记 发现问题&#xff1a; 在any-to-any的转换中,由于内容和说话人音色的解耦不足,导致源说话人的音色部分仍保留在转换后的音频中&#x…

Dom4j详细介绍

Dom4j 1.1 解析概览 将数据存储为XML格式后&#xff0c;程序化地访问这些数据变得至关重要。虽然Java基础的IO操作能够实现这一目标&#xff0c;但这一过程往往既复杂又繁琐&#xff0c;尤其是在处理大型文件或需要频繁读写操作的场景下。为了解决这些问题&#xff0c;开发者…

多条折线图修改图例以及自定义tooltip

在图例后面添加所有数据之和修改之后 series 中的name之后导致tooltip也加上了重新自定义tooltip&#xff0c;去掉总量统计 核心代码 监听数据改变计算总量修改name字段自定义 tooltip // 计算每条线的总和 const sum1 this.VALUE1.reduce((acc, val) > acc val, 0); co…

【python】在Python中读取和加解密PDF文件的详细教程与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Python酷库之旅-第三方库Pandas(082)

目录 一、用法精讲 341、pandas.Series.str.startswith方法 341-1、语法 341-2、参数 341-3、功能 341-4、返回值 341-5、说明 341-6、用法 341-6-1、数据准备 341-6-2、代码示例 341-6-3、结果输出 342、pandas.Series.str.strip方法 342-1、语法 342-2、参数 …

go语言源码解读之数据结构堆

概述 堆(heap)&#xff0c;是一种计算中常用的数据结构。本文我们将探讨对的特性、实现细节以及实际应用场景。 基本概念 堆是一种特殊的完全二叉树。堆分为大顶堆与小顶堆。 大顶堆的特点是&#xff0c;父节点的值总是大于或等于其子节点的值。 小顶堆的特点是&#xff0c…

SocialFi新纪元:Match革新金融与社交的融合艺术

前言 Match在SocialFi领域的创新探索&#xff0c;或将金融与社交的融合艺术推向新的高度&#xff01; SocialFi自带"爆点”属性&#xff0c;Web 3.0巨型流量池 统计数据显示&#xff0c;2023年第三季度&#xff0c;全球约有54亿人活跃在互联网上&#xff0c;而社交媒体领…

江协科技STM32学习笔记(第13章 WDG看门狗)

第13章 WDG看门狗 13.1 WDG看门狗 13.1.1 WDG简介 看门狗就是程序运行的一个保障措施&#xff0c;我们得在程序中定期地喂狗&#xff0c;如果程序卡死了&#xff0c;没有在规定的时间里喂狗&#xff0c;那么看门狗硬件电路就会自动帮我们复位一下&#xff0c;防止程序长时间…

<keep-alive> 一分钟了解

<keep-alive> 一分钟了解 <keep-alive> 是 Vue.js 提供的一个抽象组件&#xff0c;它的主要用途是在页面或组件切换时保留其状态&#xff0c;避免重复执行昂贵的渲染操作&#xff0c;从而提升应用性能。 文章目录 <keep-alive> 一分钟了解 一、 <keep-ali…

Ubuntu如何实现每天定时关机

要在Ubuntu中实现每天定时关机&#xff0c;你可以使用cron来安排定时任务。以下是具体的步骤&#xff1a; 步骤 1: 创建脚本 打开终端。使用文本编辑器创建一个新的文件。例如&#xff1a; nano ~/shutdown_script.sh 步骤 2: 编写脚本 在编辑器中输入以下内容&#xff1a…