南京理工大学 程序设计基础(Ⅰ) SPOC | 学校专有课程 编程作业 第4章作业1
第一题
二元一次方程的求解(100分) *
感谢 #include<xyz 分享的代码!
题目内容:
求一元二次方程ax^2+bx+c=0的根。根据提示输入系数a、b、c的值,显示方程的根。注意a为0、b为0、实数根、复数根等不同情况。
输入格式:
依次输入a、b和c的 值
输出格式:
见样例,两个根之间用一个空格分隔
输入样例1:
0 2 4
输出样例1:
x=-2
输入样例2:
1 2 3
输出样例2:
x1=-1+1.41421i x2=-1-1.41421i
输入样例3:
1 4 3
输出样例3:
x1=-1 x2=-3
输入样例4:
0 0 4
输出样例4:
It’s not an equation.
输入样例5:
2 4 2
输出样例5:
x1=-1 x2=-1
#include<iostream>
#include<cmath>
using namespace std;
int main(){
float a, b, c;
cin >> a >> b >> c;
if (a == 0 && b == 0 && c != 0) {
cout << "It's not an equation.";
return 0;
}
if (a == 0) cout << "x=" << -c / b;
else if (b * b - 4 * a * c > 0){
cout << "x1=" << (-b + sqrt(b * b - 4 * a * c)) / (2 * a) << " ";
cout << "x2=" << (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
}
else {
cout << "x1=" << (-b / (2 * a)) << "+" << sqrt(4 * a * c - b * b) / 2 * a << "i ";
cout << "x2=" << (-b / (2 * a)) << "-" << sqrt(4 * a * c - b * b) / 2 * a << "i";
}
return 0;
}
第二题
**个人所得税的计算(100分)
结果有误,扣40分!为什么呀?呜呜呜~~~
题目内容:根据以下个人所得税计算方法,完成一个工资个人所得税计算器。**
工资个税计算公式:
全月应纳税额 = (月收入 – 五险一金 – 3500) × 适用税率 - 速算扣除数
其中,适用税率和速算扣除率如表所示。
输入格式:
从键盘依次输入月收入和五险一金
输出格式:
输出相应的全月应纳税额(>=0元),所有金额到小数点后两位。
输入样例:
10000 2220
输出样例:
全月应缴税额为323.00元
补充:
在C++中,要实现小数点后固定位数显示,需要用到头文件中的setprecision()函数。可自行运行以下程序体会该函数的作用:
#include <iostream>
#include <iomanip>
//用setprecision(n)设置精度,其中n表示精确到小数点后n位
using namespace std;
int main()
{
cout<<fixed<<setprecision(2)<<123.8888<<endl;
cout<<fixed<<setprecision(2)<<12<<endl;
return 0;
}
答案:
#include<iostream>
#include <iomanip>
using namespace std;
int main() {
float income, insurance, money;
cin >> income >> insurance;
money = income - insurance - 3500;
if (money <= 1500 && money >= 0) cout << fixed << setprecision(2) << "全月应缴税额为" << money * 0.03 - 0 << "元";
else if (money <= 4500 && money * 0.1 - 105 >= 0) cout << fixed << setprecision(2) << "全月应缴税额为" << money * 0.1 - 105 << "元";
else if (money <= 9000 && money * 0.2 - 555 >= 0) cout << fixed << setprecision(2) << "全月应缴税额为" << money * 0.2 - 555 << "元";
else if (money <= 35000 && money * 0.25 - 1005 >= 0) cout << fixed << setprecision(2) << "全月应缴税额为" << money * 0.25 - 1005 << "元";
else if (money <= 55000 && money * 0.3 - 2755 >= 0) cout << fixed << setprecision(2) << "全月应缴税额为" << money * 0.3 - 2755 << "元";
else if (money <= 80000 && money * 0.35 - 5505 >= 0) cout << fixed << setprecision(2) << "全月应缴税额为" << money * 0.35 - 5505 << "元";
else if (money > 80000 && money * 0.1 - 13505 >= 0) cout << fixed << setprecision(2) << "全月应缴税额为" << money * 0.45 - 13505 << "元";
else cout << "全月应缴税额为0.00元";
system("pause");
return 0;
}
第三题
某年某月某日是该年中的第几天(100分)
题目内容:计算某年某月某日是该年中的第几天。
输入格式:
依次输入年、月和日
输出格式:
输出这一天是该年中的第几天。注意年月日合法性的判定和闰年的计算
输入样例1:
2009 3 2
输出样例1:
这是2009年的第61天
输入样例2:
2009 3 32
输出样例2:
日期有误
#include<iostream>
using namespace std;
int main(){
int year, month, day;
cin >> year >> month >> day;
//判断闰年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
switch (month){
case 1:
if (day > 0 && day <= 31) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 2:
day += 31;
if (day > 0 && day <= 60) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 3:
day += 60;
if (day > 0 && day <= 91) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 4:
day += 91;
if (day > 0 && day <= 121) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 5:
day += 121;
if (day > 0 && day <= 152) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 6:
day += 152;
if (day > 0 && day <= 182) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 7:
day += 182;
if (day > 0 && day <= 213) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 8:
day += 213;
if (day > 0 && day <= 244) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 9:
day += 244;
if (day > 0 && day <= 274) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 10:
day += 274;
if (day > 0 && day <= 305) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 11:
day += 305;
if (day > 0 && day <= 335) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 12:
day += 335;
if (day > 0 && day <= 366) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
default:
cout << "日期有误";
}
}
else {
switch (month){
case 1:
if (day > 0 && day <= 31) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 2:
day += 31;
if (day > 0 && day <= 59) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 3:
day += 59;
if (day > 0 && day <= 90) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 4:
day += 90;
if (day > 0 && day <= 120) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 5:
day += 120;
if (day > 0 && day <= 151) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 6:
day += 151;
if (day > 0 && day <= 181) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 7:
day += 181;
if (day > 0 && day <= 212) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 8:
day += 212;
if (day > 0 && day <= 243) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 9:
day += 243;
if (day > 0 && day <= 273) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 10:
day += 273;
if (day > 0 && day <= 304) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 11:
day += 304;
if (day > 0 && day <= 334) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
case 12:
day += 334;
if (day > 0 && day <= 365) {
cout << "这是" << year << "年的第" << day << "天";
}
else cout << "日期有误";
break;
default:
cout << "日期有误";
}
}
return 0;
}