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; }