美文网首页C++
NEUQ-Cpp-02-编程题

NEUQ-Cpp-02-编程题

作者: 往sir_b2a2 | 来源:发表于2020-01-14 20:22 被阅读0次

7-1 求整数均值 (5分)

本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出4个整数,其间以空格分隔。
输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。
输入样例:
1 2 3 4
输出样例:
Sum = 10; Average = 2.5

include<bits/stdc++.h>//万能头文件,平常不建议,用常规的有助于理解,人家竞赛才用,我当时不知道

using namespace std;

int main()
{
int a,b,c,d;
float sum ,average ;
cin>>a>>b>>c>>d;
sum=a+b+c+d;
average=sum/4;
cout<<"Sum = "<<sum<<"; Average = "<<fixed<<setprecision(1)<<average<<endl;
return 0;
}
7-2 计算存款利息 (5分)

本题目要求计算存款利息,计算公式为interest=money×(1+rate)
​year
​​−money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。
输入格式:
输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。
输出格式:
在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。
输入样例:
1000 3 0.025
输出样例:
interest = 76.89

include <bits/stdc++.h>

using namespace std;
int main()
{
double money, year, rate,a;
double interest;
cin>>money>>year>>rate;
a=(1+rate);
interest=money*pow(a,year)-money;
cout<<fixed<<setprecision(2)<<"interest = "<<interest<<endl;
return 0;
}
7-3 BCD解密 (5分)

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!
现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。
输入格式:
输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。
输出格式:
输出对应的十进制数。
输入样例:
18
输出样例:
12

include<bits/stdc++.h>//就是让你把这个数变回16进制

using namespace std;
int main(){
int a;
double s;
cin>>a;
s=a/16*10+a%16;
cout<<s<<endl;
return 0;
}
7-4 求圆面积 (5分)

输入圆的半径r,求其面积并输出。
输入格式:
输入一个大于零的实数,没有任何附加字符。
输出格式:
直接输出结果,结果是一个保留6位小数的实数,没有任何附加字符。
输入样例:
1
输出样例:
3.140000

include <bits/stdc++.h>

using namespace std;
int main()
{
double r ,s,pi;
cin>>r;
pi=3.140000;
s=pi*pow(r,2);
cout<<fixed<<setprecision(6)<<s<<endl;
return 0;
}
7-5 过几天是星期几 (5分)

告诉你今天是星期几,算过几天后是星期几?
请编写程序,输入今天的星期数和所过的天数,计算并输出未来这一天的星期数。
要求:用整数 0 ~ 6 表示星期日、星期一、... 、星期六。
注:输入的整数和计算结果都在整型 int 表示范围内。
输入样例
3 100
输出样例
5

include <bits/stdc++.h>

using namespace std;
int main()
{
long a,d,n;
cin>>a>>n;
d=(a+n)%7;
cout<<d<<endl;
return 0;
}
7-6 计算火车运行时间 (5分)

本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29

include<bits/stdc++.h>

using namespace std;
int main()
{
int h1,h2, m1,m2,a,b,t1,t2,c,d,e;
cin>>t1>>t2;
h1=t1/100;
h2=t2/100;
m1=t1%100;
m2=t2%100;
a=h2-h1;
b=m2-m1;
c=a*60+b;
d=c/60;
e=c%60;
cout<<setfill('0')<<setw(2)<<d<<":"<<setfill('0')<<setw(2)<<e<<endl;
return 0;
}
7-7 表格输出 (5分)

本题要求编写程序,按照规定格式输出表格。
输入格式:
本题目没有输入。
输出格式:
要求严格按照给出的格式输出下列表格:


Province Area(km2) Pop.(10K)

Anhui 139600.00 6461.00
Beijing 16410.54 1180.70
Chongqing 82400.00 3144.23
Shanghai 6340.50 1360.26
Zhejiang 101800.00 4894.00


include<bits/stdc++.h>

using namespace std;
int main()

{
cout<<"------------------------------------"<<endl;
cout<<"Province Area(km2) Pop.(10K)"<<endl;
cout<<"------------------------------------"<<endl;
cout<<"Anhui 139600.00 6461.00"<<endl;
cout<<"Beijing 16410.54 1180.70"<<endl;
cout<<"Chongqing 82400.00 3144.23"<<endl;
cout<<"Shanghai 6340.50 1360.26"<<endl;
cout<<"Zhejiang 101800.00 4894.00"<<endl;
cout<<"------------------------------------"<<endl;
return 0;
}
7-8 求三角形面积 (5分)

输入三角形的三边长,求其面积。
输入格式:
在一行中输入能够构成三角形的3个实数,3个数之间用逗号间隔。
输出格式:
对每一组输入,在一行中输出面积值,结果保留两位小数,没有附加字符。
输入样例:
3,3,3
输出样例:
3.90

include<bits/stdc++.h>

using namespace std;
int main(){

double a,b,c,d;
char j,k;
double s,p;
cin>>a>>j>>b>>k>>c;
 
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
cout<<fixed<<setprecision(2)<<s<<endl;
return 0;

}
7-9 日期格式化 (5分)

世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式:
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式:
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
输入样例:
03-15-2017
输出样例:
2017-03-15

include<bits/stdc++.h>

using namespace std;
int main()
{
double y,m,d;
char j;
cin>>m>>j>>d>>j>>y;
cout<<setfill('0')<<setw(4)<<y<<"-"<<setfill('0')<<setw(2)<<m<<"-"<<setfill('0')<<setw(2)<<d;
return 0;
}
7-10 身份证校验 (5分)

中国居民身份证校验码算法如下:
将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
将这17位数字和系数相乘的结果相加。用加出来和除以11,取余数。
余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字, 其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。余数和校验码的对应关系可以用公式:m=(12-n) mod 11计算,其中mod为求余运算,m为校验码,n为之前计算出来的余数。如果之前计算出的余数是3,第18位的校验码就是9。如果余数是2那么对应的校验码就是X,X实际是罗马数字10。
例如:某男性的身份证号码为【53010219200508011x】, 我们看看这个身份证是不是合法的身份证。首先我们得出前17位的乘积和【(57)+(39)+(010)+(15)+(08)+(24)+(12)+(91)+(26)+(03)+(07)+(59)+(010)+(85)+(08)+(14)+(1*2)】是189,然后用189除以11得出的结果是189/11=17----2,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的检验码是X。所以,可以判定这是一个正确的身份证号码。
请编写一个程序,输入身份证前17位后,计算并输出最后的校验码,
输入格式:
前17位的每个数字分别输入,中间用空格间隔
输出格式:
输出校验码,如果校验码是10,不必转成X
输入样例:
5 3 0 1 0 2 1 9 2 0 0 5 0 8 0 1 1

include<bits/stdc++.h>

using namespace std;
int main()
{
int sum=0,i,c;
int gu[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
int shu;
for(i=0;i<17;i++)
{
cin>>shu;
sum=gu[i]*shu+sum;
}
c=sum%11;
switch(c)
{
case 0: cout<<"1"<<endl;break;
case 1: cout<<"0"<<endl;break;
case 2: cout<<"10"<<endl;break;
case 3: cout<<"9"<<endl;break;
case 4: cout<<"8"<<endl;break;
case 5: cout<<"7"<<endl;break;
case 6: cout<<"6"<<endl;break;
case 7: cout<<"5"<<endl;break;
case 8: cout<<"4"<<endl;break;
case 9: cout<<"3"<<endl;break;
case 10:cout<<"2"<<endl;break;
}
return 0;
}

相关文章

网友评论

    本文标题:NEUQ-Cpp-02-编程题

    本文链接:https://www.haomeiwen.com/subject/fkoaactx.html