C语言学习笔记 - 12.C语言简介 - 一元二次方程详解

一、VS Code创建C语言项目基础操作

1.1 新建工作区

  1. 打开VS Code,点击"文件" → "打开文件夹"

  2. 选择或创建一个文件夹作为项目根目录

  3. 点击"打开"按钮

1.2 创建C源文件

有多种方式创建C文件:

方法一:通过资源管理器

  1. 点击左侧资源管理器图标

  2. 在项目文件夹上右键 → "新建文件"

  3. 输入文件名,必须以.c结尾,如:hello.c

方法二:通过菜单栏

  1. 点击"文件" → "新建文件"

  2. Ctrl+S保存文件

  3. 在保存对话框中选择.c扩展名

方法三:通过快捷键

  • Ctrl+N新建文件

  • Ctrl+S保存,命名为*.c


二、一元二次方程求解程序设计思路

一元二次方程通用形式为 ax2+bx+c=0,程序求解的核心逻辑与数学解题思路一致,分为三步:

  1. 数据存储:定义变量保存方程的三个系数 a、b、c。

  2. 判别式计算:计算判别式 Δ=b2−4ac并存储。

  3. 解的判断与计算

    • Δ>0:方程有两个不相等的实数解,公式为 x=2a−b±Δ​​。

    • Δ=0:方程有一个唯一的实数解(两个相等实数解),公式为 x=2a−b​。

    • Δ<0:方程无实数解。


三、一元二次方程求解程序实现

3.1 头文件与核心变量定义

3.1.1 头文件引入

使用标准输入输出函数(如printf)需引入<stdio.h>,使用平方根函数sqrt()需引入<math.h>

复制代码
#include <stdio.h>  // 引入标准输入输出头文件,支持printf等函数
#include <math.h>   // 引入数学库头文件,支持sqrt等数学函数
3.1.2 变量定义

需定义不同类型变量存储系数、判别式及方程的解(double类型避免精度丢失):

复制代码
int main()
{
    // 定义并初始化一元二次方程的系数a、b、c
    int a = 1;
    int b = 5; 
    int c = 6;

    double delta;  // 存储判别式b²-4ac的计算结果
    double x1, x2; // 存储方程的两个解

3.2 判别式计算

判别式需通过算术运算符实现,注意:平方运算用b*b(无直接平方符号),乘法需显式写*(如4*a*c而非4ac):

复制代码
// 计算判别式delta的值
    delta = b*b - 4*a*c;

3.3 条件判断与解的计算

使用if-else if-else语句判断判别式值,分别计算不同场景下的解:

复制代码
if(delta > 0) // delta大于0,有两个不相等的实数解
    {
        printf("有两个不同的解\n");
        // sqrt(delta)求delta的平方根,括号保证运算符优先级
        x1 = (-b + sqrt(delta)) / (2*a);
        x2 = (-b - sqrt(delta)) / (2*a);
        printf("x1 = %f\n", x1);
        printf("x2 = %f\n", x2);
    }
    else if(delta == 0) // delta等于0,有一个唯一的实数解
    {
        printf("有两个相等的解\n");
        x1 = -b / (2*a);
        x2 = x1; // 两个解相等,将x1的值赋给x2
        printf("x1 = %f\n", x1);
        printf("x2 = %f\n", x2);
    }
    else // delta小于0,无实数解
    {
        printf("无解\n");
    }

    return 0;
}

3.4 关键语法说明

  1. 赋值与相等判断

    • 单个等号=赋值运算符 (如a = 1,将1赋值给变量a)。

    • 两个等号==相等判断运算符 (如delta == 0,判断delta是否等于0)。

  2. 平方根函数sqrt()

    • 属于数学库函数,必须引入<math.h>才能使用。

    • 用法:sqrt(数值),返回该数值的平方根(如sqrt(delta))。

  3. 运算符优先级

    分式计算需用括号明确优先级(如(-b + sqrt(delta)) / (2*a)),避免因优先级导致计算错误。


四、程序编译运行与常见问题处理

4.1 编译警告与错误处理

  1. 精度丢失警告

    • 原因 :将double类型值赋值给float类型变量,编译器提示精度丢失。

    • 解决方案 :将存储判别式、解的变量定义为double类型(精度高于float)。

  2. 变量名错误

    • 问题 :变量名拼写不一致(如delta误写为DRTA)会导致编译错误。

    • 排查:核对变量定义与使用的名称,确保完全一致。

4.2 软件假死处理

若VC++软件出现"假死"(点击无反应、无法关闭),强制关闭步骤:

  1. 按下Ctrl + Alt + Delete打开任务管理器。

  2. 在"应用程序"栏找到VC++进程,点击"结束任务"。

  3. 若未生效,在"进程"栏找到msdev.exe进程并结束。

4.3 程序扩展方向

基础版程序系数为固定值,可扩展为交互式程序(后续学习流程控制后实现):

  1. 增加输入功能,运行时由用户输入abc的值。

  2. 增加循环逻辑,支持用户多次求解,直至选择退出。

4.4 编译运行流程

  1. 确认代码无语法错误后,点击编译按钮完成编译。

  2. 编译无错误、无警告后,点击运行按钮。

  3. 查看控制台输出结果验证正确性(如a=1b=5c=6时,解为x1=-2.000000x2=-3.000000)。

相关推荐
RainCity1 天前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
LinXunFeng9 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
通信小呆呆13 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick13 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee13 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Luminous.13 天前
C语言--day30
c语言·开发语言
Alsn8613 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
玖玥拾13 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
YM52e13 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统