02题:
/*
*题目:输入圆半径r和圆柱高h,计算圆周长l,圆面积s,圆球表面积sq,圆球体积vq和圆柱体体积vz
*/
#include <iostream>
using namespace std;
int noj_002()
{
double r, h, l, s, sq, vq, vz;
static double pi = 3.1415926;
cout << "请输入圆半径r:";
cin >> r;
cout << endl;
cout << "请输入圆柱高h:";
cin >> h;
cout << endl;
l = 2 * pi * r;
s = pi * r * r;
sq = 4 * pi * r * r;
vq = 4 * pi * r * r * r / 3;
vz = s * h;
cout << "圆周长l=" << l << endl;
cout << "圆面积s=" << s << endl;
cout << "圆球表面积sq=" << sq << endl;
cout << "圆球体积vq=" << vq << endl;
cout << "圆柱体体积=" << vz << endl;
return 0;
}
03题:
/*
*题目:输入某学生的数学,英语和C语言课程成绩,输出三门课程的总成绩和平均成绩(保留6位小数)
*/
#include <iostream>
#include <iomanip>
using namespace std;
int noj_003()
{
double math, english, clang, ttlpnt, averagepnt;
cout << "依次输入数学,英语,C语言成绩:";
cin >> math >> english >> clang;
cout << setiosflags(ios::fixed) << setprecision(6);
ttlpnt = math + english + clang;
averagepnt = ttlpnt / 3;
cout << "总成绩为:" << ttlpnt << endl;
cout << "平均成绩为:" << averagepnt << endl;
return 0;
}
04题:
/*
*题目:找出三个数据A,B和C的最大值
*/
#include <iostream>
using namespace std;
int noj_004()
{
int A, B, C, D;
cout << "请输入数据:";
cin >> A >> B >> C;
D = (A >= B? A : B);
cout << "最大值为:";
cout << (C >= D? C : D);
return 0;
}
05题:
/*
*题目:如果一个整数逆序后得到的数值与原数值相同,则称为“幸运数”,输入一个整数N(N<100000),判断是否为幸运数
*/
#include <iostream>
using namespace std;
int noj_005()
{
int N;
cout << "请输入数据:";
cin >> N;
if ((N > 10000 && N < 100000) && (N / 10000 == N % 10) && (N / 1000 % 10 == N / 10 % 10))
cout << "yes";
else if ((N > 1000 && N < 10000) && (N /1000 == N % 10) && (N / 100 % 10 == N / 10 % 10))
cout << "yes";
else if ((N > 100 && N < 1000) && (N / 100 == N % 10))
cout << "yes";
else if ((N > 10 && N < 100) && (N / 10 == N % 10))
cout << "yes";
else if ((N > 0 && N < 10))
cout << "yes";
else
cout << "no";
return 0;
}
06题:
/*
*题目:企业发放的奖金按利润提成,利润低于或等于10万元可提10%,利润高于10万元低于20万元时低于10万元的部分按10%提成,
* 高于10万元的部分可提成7.5%,20万到40万之间,高于20万的部分,可提成5%,40万到60万之间时高于40万元的部分,可提成3%,
* 60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分提成1%,算奖金(保留6位小数)
*/
#include <iostream>
#include <stdio.h>
using namespace std;
int noj_006()
{
double profit, royalty;
cout << "请输入利润(万元):";
cin >> profit;
if (profit >= 0 && profit <= 10)
{
royalty = profit * 0.1;
}
else if (profit > 10 && profit <= 20)
{
royalty = 10 * 0.1 + (profit - 10) * 0.075;
}
else if (profit > 20 && profit <= 40)
{
royalty = 10 * 0.1 + (20 - 10) * 0.075 + (profit - 20) * 0.05;
}
else if (profit > 40 && profit <= 60)
{
royalty = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (profit - 40) * 0.03;
}
else if (profit > 60 && profit <= 100)
{
royalty = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (60 - 40) * 0.03 + (profit - 60) * 0.015;
}
else if (profit > 100)
{
royalty = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (60 - 40) * 0.03 + (100 - 60) * 0.015 + (profit - 100) * 0.01;
}
else
{
cout << "输入有误,请重新输入!" << endl;
noj_006();
}
printf("%5.6f\n", royalty);
return 0;
}
07题:
/*
*题目:出租车起步价(2公里内,含2公里)为7元,超过2公里且在15(含)公里以内,每公里收费1.5元,超过15公里每公里收费2.1元,不足1公里按1公里算,算车费(保留6位小数)
*/
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
int noj_007()
{
double mile, cost;
cout << "请输入里程数:";
cin >> mile;
if (mile <= 2)
{
cost = 7;
}
else if (mile > 2 && mile <= 15)
{
cost = 7 + ceil((mile - 2)) * 1.5;
}
else if (mile > 15)
{
cost = 7 + 8 * 1.5 + ceil((mile - 15)) * 2.1;
}
printf("%5.6f", cost);
return 0;
}
08题:
/*
*题目:输入一个日期(YYYY-MM-DD),判断这是一年的第几天
*/
#include <iostream>
#include <string>
using namespace std;
int noj_008()
{
string date;
int year, month, day, sum;
cout << "请按YYYY-MM-DD的格式输入日期:";
cin >> date;
year = stoi(date.substr(0, 4)); //stoi()非标准库函数,慎用
month = stoi(date.substr(5, 2));
day = stoi(date.substr(8, 2));
int Jan = 31, Mar = 31, Apr = 30, May = 31, June = 30, July = 31, Aug = 31, Sep = 30, Oct = 31, Nov = 30, Dec = 31, Feb;
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
Feb = 29;
}
else
{
Feb = 28;
}
switch(month)
{
case 1:
sum = day;
break;
case 2:
sum = Jan + day;
break;
case 3:
sum = Jan + Feb + day;
break;
case 4:
sum = Jan + Feb + Mar + day;
break;
case 5:
sum = Jan + Feb + Mar + Apr + day;
break;
case 6:
sum = Jan + Feb + Mar + Apr + May + day;
break;
case 7:
sum = Jan + Feb + Mar + Apr + May + June + day;
break;
case 8:
sum = Jan + Feb + Mar + Apr + May + June + July + day;
break;
case 9:
sum = Jan + Feb + Mar + Apr + May + June + July + Aug + day;
break;
case 10:
sum = Jan + Feb + Mar + Apr + May + June + July + Aug + Sep + day;
break;
case 11:
sum = Jan + Feb + Mar + Apr + May + June + July + Aug + Sep + Oct + day;
break;
case 12:
sum = Jan + Feb + Mar + Apr + May + June + July + Aug + Sep + Oct + Nov + day;
break;
default:
break;
}
cout << sum << endl;
return 0;
}
09题:
/*
*题目:百分制成绩转换为五分制成绩,规则:A:90~100;B:80~89;C:70——79;D:60~69;E:60分以下
*/
#include <iostream>
using namespace std;
int noj_009()
{
int score;
char grade;
cout << "请输入百分制成绩:";
cin >> score;
if (score >= 90 && score <= 100)
{
grade = 'A';
}
else if (score >= 80 && score <= 89)
{
grade = 'B';
}
else if (score >= 70 && score <= 79)
{
grade = 'C';
}
else if (score >= 60 && score <= 69)
{
grade = 'D';
}
else
{
grade = 'E';
}
cout << grade;
return 0;
}
10题(补图):
/*
*题目:有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,高度为10m,塔外高度为0,输入一点坐标,求该点建筑高度
*/
#include <iostream>
using namespace std;
int noj_010()
{
double x, y;
cout << "请输入x轴坐标:";
cin >> x;
cout << endl;
cout << "请输入y轴坐标:";
cin >> y;
cout << endl;
if (((x-2) * (x-2) + (y-2) * (y-2) <= 1) ||
((x-2) * (x-2) + (y+2) * (y+2) <= 1) ||
((x+2) * (x+2) + (y-2) * (y-2) <= 1) ||
((x+2) * (x+2) + (y+2) * (y+2) <= 1))
{
cout << 10;
}
else
{
cout << 0;
}
return 0;
}