【題目描述】編程
輸入係數a、b和c,求方程ax2+bx+c=0的根。spa
【輸入格式】blog
輸入數據有多組。每組數據包括三個係數a,b,c。當a=0時,輸入數據結束。io
【輸出格式】float
輸出方程的根,格式參見輸出樣例,保留到小數點後2位。程序
【輸入樣例】im
1 2 1數據
1.0 -4.0 3.0margin
1.5 2.0 1.5img
0 0 0
【輸出樣例】
x1=x2=-1.00
x1=3.00,x2=1.00
x1=-0.67+0.75i,x2=-0.67-0.75i
根據輸入的係數a,能夠分爲a不等於0和a等於0兩種狀況。
當a==0時,結束輸入計算。
程序能夠寫成if的嵌套結構。
#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;
}
【題目描述】
任意輸入三條邊(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;
}
本題選自洛谷題庫 (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;
}
本題選自洛谷題庫 (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;
}