信奥之路-C++第4课作业
1. 计算邮资
【问题描述】
根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内 (包含1000克),基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。
输入:输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。
输出:一行,包含一个整数,表示邮费。
【样例输入】
1200 y
【样例输出】
17
#include <iostream>
using namespace std;
int main(){
int m, money;
char n;
cin >> m >> n;
if(m<=1000){
money = 8;
}else{
if(m%500==0){
money = 8 + (m-1000)/500*4;
}else{
money = 8 + (m-1000)/500*4+4;
}
}
if(n=='y'){
money += 5;
}
cout << money <<endl;
return 0;
}
2. 判断能否被3,5,7整除
【问题描述】
给定一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);
2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔);
3、只能被其中一个数整除(输出这个除数);
4、不能被任何数整除,输出小写字符‘n’,不包括单引号。
输入:输入一行,包括一个整数。
输出:输出一行,按照描述要求给出整数被3,5,7整除的情况。
【样例输入】
105
【样例输出】
3 5 7
#include <iostream>
using namespace std;
int main(){
int n, i=0;
cin >> n;
if(n%3==0){
cout << 3 << " ";
i++;
}
if(n%5==0){
cout << 5 << " ";
i++;
}
if(n%7==0){
cout << 7 << endl;
i++;
}
if(i==0){
cout << "n" << endl;
}
return 0;
}
1. 分段函数
【问题描述】
编写程序,计算下列分段函数y=f(x)的值。
y=-x+2.5; 0 <= x < 5
y=2-1.5(x-3)(x-3); 5 <= x < 10
y=x/2-1.5; 10 <= x < 20
输入:一个浮点数N,0 <= N < 20
输出:输出N对应的分段函数值:f(N)。结果保留到小数点后三位。
【样例输入】
1.0
【样例输出】
1.500
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double x, y;
cin >> x;
if(x>=0&&x<5){
y = -x + 2.5;
}else if(x<10){
y = 2-1.5*(x-3)*(x-3);
}else if(x<20){
y = x/2-1.5;
}
cout << fixed << setprecision(3) << y << endl;
return 0;
}
2. 小玉家的电费
【问题描述】
夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。
输入:一个整数,表示用电总计(单位以千瓦时计),不超过10000
输出:输出一个数,保留到小数点后1位(单位以元计,保留到小数点后1位)。
【样例输入】
267
【样例输出】
121.5
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int n;
double money;
cin >> n;
if(n<=150){
money = n*0.4463;
}else if(n<=400){
money = 150*0.4463+(n-150)*0.4663;
}else{
money = 150*0.4463+250*0.4663+(n-400)*0.5663;
}
cout << fixed << setprecision(1) << money << endl;
return 0;
}
3. 求一元二次方程的根
【问题描述】
利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。
输入:一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax2 + bx + c =0的系数。
输出:输出一行,表示方程的解。
若b2 = 4 * a * c,则两个实根相等,则输出形式为:x1=x2=...。
若b2 > 4 * a * c,则两个实根不等,则输出形式为:x1=...;x2 = ...,其中x1>x2。
若b2 < 4 * a * c,则有两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,即x1的虚部系数大于等于x2的虚部系数,实部为0时不可省略。实部 = -b / (2*a), 虚部 = sqrt(4*a*c-b*b) / (2*a)
所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
【样例输入】
1.0 2.0 8.0
【样例输出】
x1=-1.00000+2.64575i; x2=-1.00000-2.64575i
#include <cstdio>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main(){
double a,b,c,x1,x2;
cin >> a >> b >> c;
if(b*b==4*a*c){
x1=x2=-b/(2*a);
cout<<fixed<<setprecision(5)<<"x1=x2="<<x1<<endl;
}else if(b*b>4*a*c){
x1 = (-b + sqrt(b*b-4*a*c))/(2*a);
x2 = (-b - sqrt(b*b-4*a*c))/(2*a);
cout<<fixed<<setprecision(5)<<"x1="<<x1<<";"<<"x2="<<x2<<endl;
}else{
if(-b/(2*a)==0){
x1=-b/(2*a)+sqrt(4*a*c-b*b)/(2*a);
x2=-b/(2*a)-sqrt(4*a*c-b*b)/(2*a);
cout<<fixed<<setprecision(5)<<"x1="<<b/(2*a)<<"+"<<sqrt(4*a*c-b*b)/(2*a)<<"i"<<";";
cout<<fixed<<setprecision(5)<<"x2="<<b/(2*a)<<"-"<<sqrt(4*a*c-b*b)/(2*a)<<"i"<<endl;
}else{
x1=-b/(2*a)+sqrt(4*a*c-b*b)/(2*a);
x2=-b/(2*a)-sqrt(4*a*c-b*b)/(2*a);
cout<<fixed<<setprecision(5)<<"x1="<<-b/(2*a)<<"+"<<sqrt(4*a*c-b*b)/(2*a)<<"i"<<";";
cout<<fixed<<setprecision(5)<<"x2="<<-b/(2*a)<<"-"<<sqrt(4*a*c-b*b)/(2*a)<<"i"<<endl;
}
}
return 0;
}
作者: 王春天 出处: http://www.cnblogs.com/spring_wang/ Email: spring_best@yeah.net QQ交流:903639067
QQ群:322581894 关于作者: 大连天翼信息科技有限公司 技术总监。 SNF快速开发平台 创始人。应用平台架构师、IT规划咨询专家、业务流程设计专家。 专注于快速开发平台的开发、代码生成器。同时专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,精通DotNet系列技术Vue、.NetCore、MVC、Webapi、C#、WinForm等,DB(SqlServer、Oracle等)技术,移动端开发。熟悉Java、VB及PB开发语言。在面向对象、面向服务以及数据库领域有一定的造诣。现从事项目实施、开发、架构等工作。并从事用友软件产品U8、U9、PLM 客开工作。 如有问题或建议,请多多赐教! 本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。


浙公网安备 33010602011771号