C语言程序设计100例之(2):一元二次方程
例2 一元二次方程
【题目描述】
输入系数a、b和c,求方程ax2+bx+c=0的根。
【输入格式】
输入数据有多组。每组数据包括三个系数a,b,c。当a=0时,输入数据结束。
【输出格式】
输出方程的根,格式参见输出样例,保留到小数点后2位。
【输入样例】
1 2 1
1.0 -4.0 3.0
1.5 2.0 1.5
0 0 0
【输出样例】
x1=x2=-1.00
x1=3.00,x2=1.00
x1=-0.67+0.75i,x2=-0.67-0.75i
(1)编程思路。
根据输入的系数a,可以分为a不等于0和a等于0两种情况。

当a==0时,结束输入计算。
程序可以写成if的嵌套结构。
(2)源程序。
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,dlt,real,imag,x1,x2;
while (1)
{
scanf("%lf%lf%lf",&a,&b,&c);
if (a==0) break;
dlt=b*b-4*a*c;
if (dlt>0)
{
x1=(-b+sqrt(dlt))/(2*a);
x2=(-b-sqrt(dlt))/(2*a);
printf("x1=%.2f,x2=%.2f\n",x1,x2);
}
else if (dlt==0)
{
x1=x2=(-b)/(2*a);
printf("x1=x2=%.2f\n",x1);
}
else
{
real=(-b)/(2*a);
imag=sqrt(-dlt)/(2*a);
printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n",real,imag,real,imag);
}
}
return 0;
}
习题2
2-1 三角形面积
【题目描述】
任意输入三条边(a,b,c实型),若能构成三角形,则计算并输出其面积,否则输出标志“No Triangle!”。
三角形面积计算公式:

【输入格式】
输入数据有多组。每组数据包括三个数a,b,c,代表三角形的三个边长。当a=0时,输入数据结束。
【输出格式】
输出三角形的面积,保留到小数点后2位。或者No Triangle!信息,若给定的三个边长值不能构成一个三角形。
【输入样例】
3 4 5
6.0 6.0 6.0
1 1 3
0 0 0
【输出样例】
6.00
15.59
No Triangle!
(1)编程思路。
输入的a、b、c三个数,只有当a+b>c、a+c>b和b+c>a同时满足时,才能构成一个三角形。因此,用选择结构
if (a+b>c && a+c>b && b+c>a)
{ 计算三角形面积并输出; }
else
{ 输出不能构成三角形的提示信息; }
(2)源程序。
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,t,s;
while (1)
{
scanf("%f%f%f",&a,&b,&c);
if (a==0) break;
if (a+b>c && a+c>b && b+c>a)
{
t=(a+b+c)/2.0;
s=sqrt(t*(t-a)*(t-b)*(t-c));
printf("%.2f\n",s);
}
else
printf("No Triangle!\n");
}
return 0;
}
2-2 小玉家的电费
本题选自洛谷题库 (https://www.luogu.org/problem/P1422)。
【题目描述】
夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。
【输入格式】
输入一个整数,表示用电总计(单位以千瓦时计),不超过10000。
【输出格式】
输出一个数,保留到小数点后1位(单位以元计,保留到小数点后1位)。
【输入样例】
267
【输出样例】
121.5
(1)编程思路。
根据月用电量x的情况,其计费规则分为三个梯度。
在第一梯度(x<=150),电费y = 第一梯度单位电费*用电量=0.4463*x;
在第二梯度(150<x<=400),电费y=第二梯度部分用电*第二梯度部分单位电费+在第一梯度用电*第一梯度单位电费 =(x-150)*0.4663+150*0.4463。
在第三梯度(x>400),电费y=第三梯度部分用电*第三梯度部分单位电费+第二梯度部分用电*第二梯度部分单位电费+在第一梯度用电*第一梯度单位电费 =(x-400)*0.5663 +250*0.4663+150*0.4463。
一个简单的多分支结构即可解决。
(2)源程序。
#include <stdio.h>
int main()
{
int x;
double y;
scanf("%d",&x);
if (x<=150) y=0.4463*x;
else if (x<=400) y=150*0.4463+(x-150)*0.4663;
else y=150*0.4463+250*0.4663+(x-400)*0.5663;
printf("%.1lf\n",y);
return 0;
}
2-3 买铅笔
本题选自洛谷题库 (https://www.luogu.org/problem/P1909)。
【题目描述】
P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。
现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。
【输入格式】
第一行包含一个正整数n,表示需要的铅笔数量。
接下来三行,每行用2个正整数描述一种包装的铅笔:其中第1个整数表示这种包装内铅笔的数量,第2个整数表示这种包装的价格。
保证所有的7个数都是不超过10000的正整数。
【输出格式】
1个整数,表示P老师最少需要花费的钱。
【输入样例】
57
2 2
50 30
30 27
【输出样例】
54
(1)编程思路。
设P老师需要购买的铅笔数为n,某种包装内铅笔的数量为a,这种包装的价格为b。P老师需要购买某种包装铅笔的包装数为c。
显然,若n能整除a,则c=n/a;否则c=n/a+1。
求三种包装的c*b的最小值即可。
(2)源程序。
#include <stdio.h>
int main()
{
int n,a,b,c,i,min;
scanf("%d",&n);
scanf("%d%d",&a,&b);
if (n%a==0) c=n/a;
else c=n/a+1;
min=c*b;
for (i=1;i<=2;i++)
{
scanf("%d%d",&a,&b);
if (n%a==0) c=n/a;
else c=n/a+1;
if (min>c*b) min=c*b;
}
printf("%d\n",min);
return 0;
}
C语言程序设计100例之(2):一元二次方程的更多相关文章
- 黑马程序员——经典C语言程序设计100例
1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯 ...
- C语言程序设计100例之(1):鸡兔同笼
例1 鸡兔同笼 [问题描述] 一个笼子里面关了鸡和兔子(鸡有2 只脚,兔子有4 只脚,没有例外).已知笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物? [输入数据] 第1 行是测 ...
- C语言程序设计100例之(22):插入排序
例22 插入排序 问题描述 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素或记录的任意序列,重新排列成一个以关键字递增(或递减)排列的有序序列. 排序的方法有很多,简单插入排序就是一 ...
- C语言程序设计100例之(9):生理周期
例9 生理周期 问题描述 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为 23 天.28 天和33 天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如 ...
- C语言程序设计100例之(4):水仙花数
例4 水仙花数 题目描述 一个三位整数(100-999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数. 输入格式 没有输入 输出格式 若 ...
- C语言程序设计100例之(6):数字反转
例6 数字反转 题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入格式 ...
- C语言程序设计100例之(14):丑数
例14 丑数 问题描述 丑数是其质因子只可能是2,3或5的数.前10个丑数分别为1, 2, 3, 4, 5, 6, 8, 9, 10, 12.输入一个正整数n,求第n个丑数. 输入格式 每行为一个 ...
- C语言程序设计100例之(17):百灯判亮
例17 百灯判亮 问题描述 有序号为1.2.3.….99.100的100盏灯从左至右排成一横行,且每盏灯各由一个拉线开关控制着,最初它们全呈关闭状态.有100个小朋友,第1位走过来把凡是序号为1的 ...
- C语言程序设计100例之(25):确定进制
例25 确定进制 问题描述 6*9 = 42 对于十进制来说是错误的,但是对于13进制来说是正确的.即 6(13)* 9(13)= 42(13),因为,在十三进制中,42 = 4 * 13 + ...
随机推荐
- python(二) jupyter 快捷键
jupyter notebook 中的快捷键介绍 当你熟练使用notebooks的基本功能后,掌握他的快捷键是十分必要的,这样可以大大提高你的工作效率.下面是一些比较常用的快捷键: 编辑模式:点击单元 ...
- 一步一步创建聊天程序2-利用epoll来创建简单的聊天室
如图,这个是看视频时,最后的作业,除了客户端未使用select实现外,其它的要求都有简单实现. 服务端代码如下: #include <stdio.h> #include <strin ...
- Error:Cannot build artifact 'ssm:war exploded' because it is included into a circular dependency (artifact 'ssm:war exploded', artifact 'apinb-master:war exploded')
打开 File->Project Structure –> Artifacts(ctrl+alt+shift+s) ,这里会有4个,我已经删除了,把 ssm:war 和 ssm:war e ...
- 通过SSH隧道的本地转发实现Django连接远程数据库
SSH连接命令 默认连接的端口为22 1. 使用私钥 ssh -p connect_port user_name@host -i your_private_identity 2. 使用用户密码 ssh ...
- 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
目录 一. 概述 二. 线程与进程 三. cluster模块源码解析 3.1 起步 3.2 入口 3.3 主进程模块master.js 3.4 子进程模块child.js 四. 小结 示例代码托管在: ...
- Thinkphp <= 5.0.10 缓存getshell复现
目录 Thinkphp <= 5.0.10 缓存getshell复现 0x01 poc 0x02 跟踪源码 0x03 审计思路 0x04 补丁 0x05 参考 Thinkphp <= 5. ...
- (五十六)c#Winform自定义控件-瓶子(工业)-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
- In .net 4.8,calculate the time cost of serialization in BinaryFormatter,NewtonSoft.json,and System.Text.Json.JsonSerializer.Serialize
using ConsoleApp390.Model; using Newtonsoft.Json; using System; using System.Collections.Generic; us ...
- 谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图
明天又双叒叕是一年一度的七夕恋爱节了! 又是一波绝好的机会!恩爱秀起来! 购物车清空!礼物送起来!朋友圈晒起来! 等等! 什么?! 你还没准备好七夕礼物么? 但其实你不知道要送啥? 原来又双叒叕要 ...
- Android Service 启动流程
执行顺序 : startService -> bindService -> unbindService -> stopService 回调的结果为: 执行顺序 : startServ ...