7-1-1 计算摄氏温度
给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出一个华氏温度。
输出格式:
在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。
输入样例:
150
输出样例:
Celsius = 65
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
printf("Celsius = %d",5*(n-32)/9);
return 0;
}
7-1-2 计算火车运行时间
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出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 x,y;
cin>>x>>y;
int a,b,c;
a=x/100*60+x%100;b=y/100*60+y%100;
c=b-a;
printf("%02d:%02d",c/60,c%60);
return 0;
}
7-1-3 混合类型数据格式化输入
本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。
输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
输入样例:
2.12 88 c 4.7
输出样例:
c 88 2.12 4.70
#include<bits/stdc++.h>
using namespace std;
int main(){
double a,d;int b;char c;
cin>>a>>b>>c>>d;
printf("%c %d %.2f %.2f",c,b,a,d);
return 0;
}
7-1-4 算术入门之加减乘除
对于输入的两个整数,按照要求输出其和差积商。
输入格式:
在一行内输入两个不超过100的非负整数a和b,中间以一个空格间隔,且保证b不为0。
输出格式:
共四行,格式是:
[a] + [b] = [a+b]
[a] - [b] = [a-b]
[a] * [b] = [a*b]
[a] / [b] = [a/b]
其中,带有方括号的内容(如[a]
、[b]
、[a+b]
等)表示相应整数或运算结果的值,在输出时要用实际的值代替。
并且:如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为带两位小数的格式。
提示:注意表达式中的空格。
输入样例1:
6 3
输出样例1:
6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2
输入样例2:
8 6
输出样例2:
8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
printf("%d + %d = %d\n",a,b,a+b);
printf("%d - %d = %d\n",a,b,a-b);
printf("%d * %d = %d\n",a,b,a*b);
if(a%b==0)
printf("%d / %d = %d",a,b,a/b);
else printf("%d / %d = %.2f",a,b,a*1.0/b);
return 0;
}
7-1-5 求三角形面积
输入三角形的三边长,求其面积。
输入格式:
在一行中输入能够构成三角形的3个实数,3个数之间用逗号间隔。
输出格式:
对每一组输入,在一行中输出面积值,结果保留两位小数,没有附加字符。
输入样例:
3,3,3
输出样例:
3.90
#include<bits/stdc++.h>
using namespace std;
int main(){
double a,b,c,x,y;char z;
cin>>a>>z>>b>>z>>c;
x=(a+b+c)/2;
y=sqrt(x*(x-a)*(x-b)*(x-c));
printf("%.2lf",y);
return 0;
}
7-1-6 圆球的体积
请编写程序,输入球的半径 r (cm),计算并输出球的体积 v (cm3)。
输入格式
r
输出格式
v
要求:输出2位小数(末位四舍五入)。
输入样例
1.25
输出样例
8.18
注:π=3.1415926535897932384626...
#include<bits/stdc++.h>
using namespace std;
int main(){
double r,v;
cin>>r;
v=4*r*r*r*3.1415926535897932384626/3;
printf("%.2lf",v);
return 0;
}
7-1-7 快速求和
请编写程序,输入整数 n,快速计算:
输入格式
n
输出格式
s
要求:输出 6 位小数,末位四舍五入。
输入样例1
4
输出样例1
0.800000
输入样例2
300
输出样例2
0.996678
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;double s;
cin>>n;
for(int i=1;i<=n;i++)
s+=1.0/(i*(i+1));
printf("%.6f",s);
return 0;
}
7-1-8 圆锥的体积
请编写程序,输入圆锥的底圆半径 r (cm) 和高 h (cm),计算并输出圆锥的体积 v (cm3)。
输入格式
r 和 h
输出格式
v
要求:输出 4 位小数(末位四舍五入)。
输入样例
1.36 5.87
输出样例
11.3696
注:π=3.1415926535897932384626...
#include<bits/stdc++.h>
using namespace std;
int main(){
double r,h,v;
cin>>r>>h;
v=3.1415926535897932384626*r*r*h/3;
printf("%.4f",v);
return 0;
}
7-1-9 宇宙无敌大招呼
据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。
输入格式:
输入在第一行给出一个星球的名字S
,是一个由不超过7个英文字母组成的单词,以回车结束。
输出格式:
在一行中输出Hello S
,跟输入的S
星球打个招呼。
输入样例:
Mars
输出样例:
Hello Mars
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
cout<<"Hello "<<s;
return 0;
}
7-2-1 温度转换
本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出
fahr = 150, celsius = 计算所得摄氏温度的整数值
#include<bits/stdc++.h>
using namespace std;
int main(){
printf("fahr = 150, celsius = %d",5*(150-32)/9);
return 0;
}
7-2-2 求整数均值
本题要求编写程序,计算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,s;
cin>>a>>b>>c>>d;
s=a+b+c+d;
printf("Sum = %d; Average = %.1f",s,s*1.0/4);
return 0;
}
7-2-3 计算摄氏温度
本题要求编写程序,计算华氏温度100°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出
fahr = 100, celsius = 计算所得摄氏温度的整数值
#include<bits/stdc++.h>
using namespace std;
int main(){
printf("fahr = 100, celsius = %d",5*(100-32)/9);
return 0;
}
7-2-4 计算平均分
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。
输入格式:
本题无输入
输出格式:
按照下列格式输出结果:
math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩
#include<bits/stdc++.h>
using namespace std;
int main(){
printf("math = 87, eng = 72, comp = 93, average = %d",(87+72+93)/3);
return 0;
}
7-2-5 将x的平方赋值给y
假设x的值为3,计算x的平方并赋值给y,分别以“y = x ∗ x”和“x ∗ x = y”的形式输出x和y的值。
输入格式:
本题无输入
输出格式:
按照下列格式输出代入x
=3的结果:
y = x * x
x * x = y
#include<bits/stdc++.h>
using namespace std;
int main(){
printf("9 = 3 * 3\n3 * 3 = 9");
return 0;
}
7-2-6 整数152的各位数字
本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值。
输入格式:
本题无输入。
输出格式:
按照以下格式输出:
152 = 个位数字 + 十位数字*10 + 百位数字*100
#include<bits/stdc++.h>
using namespace std;
int main(){
printf("152 = 2 + 5*10 + 1*100");
return 0;
}
7-2-7 计算存款利息
本题目要求计算存款利息,计算公式为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 m,y,r,i;
cin>>m>>y>>r;
i=m*pow((1+r),y)-m;
printf("interest = %.2f",i);
return 0;
}
7-2-8 然后是几点
有时候人们用四位数字表示一个时间,比如 1106
表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530
;0 点 30 分表示为 030
。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。
输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530
;0 点 30 分表示为 030
。流逝的分钟数可能超过 60,也可能是负数。
输出格式:
输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y;
cin>>x>>y;
int a,c;
a=x/100*60+x%100;
c=y+a;
printf("%d%02d",c/60,c%60);
return 0;
}
7-2-9 逆序的三位数
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a,k=0;
cin>>n;
while(n){
a=n%10;
if(a)k=1;
if(a||k==1)cout<<a;
n=n/10;
}
return 0;
}
7-2-10 后天
如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。
输入格式:
输入第一行给出一个正整数D
(1 ≤ D
≤ 7),代表星期里的某一天。
输出格式:
在一行中输出D
天的后天是星期几。
输入样例:
3
输出样例:
5
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n>5)n=(n+2)%7;
else n=n+2;
cout<<n;
return 0;
}
7-2-11 交换a和b的值
交换变量a,b的值,如输入a的值为1,b的值为5,则输出a的值为5,b的值为1。
输入格式:
输入两个整数,之间用一个空格间隔。
输出格式:
在一行中按照“a=x,b=y”的格式输出,其中x和y均是原样输出,不加宽度控制。
输入样例:
1 5
输出样例:
a=5,b=1
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
printf("a=%d,b=%d",b,a);
return 0;
}
7-3-1 计算分段函数[1]
本题目要求计算下列分段函数f(x)的值:
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。
输入样例1:
10
输出样例1:
f(10.0) = 0.1
输入样例2:
0
输出样例2:
f(0.0) = 0.0
#include<bits/stdc++.h>
using namespace std;
int main(){
double x;
cin>>x;
if(x==0)printf("f(0.0) = 0.0");
else printf("f(%.1f) = %.1f",x,1.0/x);
return 0;
}
7-3-2 计算分段函数[2]
本题目要求计算下列分段函数f(x)的值:
注:可在头文件中包含math.h
,并调用sqrt
函数求平方根,调用pow
函数求幂。
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。
输入样例1:
10
输出样例1:
f(10.00) = 3.16
输入样例2:
-0.5
输出样例2:
f(-0.50) = -2.75
#include<bits/stdc++.h>
using namespace std;
int main(){
double x,y;
cin>>x;
if(x>=0)y=pow(x,0.5);
else y=pow((x+1),2)+2*x+1/x;
printf("f(%.2f) = %.2f",x,y);
return 0;
}
7-3-3 阶梯电价
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。
输入样例1:
10
输出样例1:
cost = 5.30
输入样例2:
100
输出样例2:
cost = 55.50
#include<stdio.h>
int main()
{
double x,cost;
scanf("%lf",&x);
if(x<0){
printf("Invalid Value!");}
else if(x>50){
cost=(x-50)*0.58+50*0.53;
printf("cost = %.2lf",cost);}
else
{ cost=0.53*x;
printf("cost = %.2lf",cost);}
return 0;
}
7-3-4 计算符号函数的值
对于任一整数n,符号函数sign(n)的定义如下:
请编写程序计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:
10
输出样例1:
sign(10) = 1
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-98
输出样例3:
sign(-98) = -1
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y;
cin>>x;
if(x>0)y=1;
else if(x==0)y=0;
else y=-1;
printf("sign(%d) = %d",x,y);
return 0;
}
7-3-5 输出闰年
输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输入格式:
输入在一行中给出21世纪的某个截止年份。
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
输入样例1:
2048
输出样例1:
2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048
输入样例2:
2000
输出样例2:
Invalid year!
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,x=0;
cin>>n;
if(n<=2000||n>2100)cout<<"Invalid year!";
else{
for(i=2001;i<=n;i++)
{
if((i%4==0&&i%100)||i%400==0){cout<<i<<endl;x=1;}
}
if(x==0)cout<<"None";
}
return 0;
}
7-3-6 比较大小
本题要求将输入的任意3个整数从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。
输入样例:
4 2 8
输出样例:
2->4->8
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[5],i;
for(i=0;i<3;i++)cin>>a[i];
sort(a,a+3);
for(i=0;i<3;i++){
cout<<a[i];
if(i!=2)cout<<"->";
}
return 0;
}
7-3-7 高速公路超速处罚
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
输入格式:
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。
输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。
输入样例1:
65 60
输出样例1:
OK
输入样例2:
110 100
输出样例2:
Exceed 10%. Ticket 200
输入样例3:
200 120
输出样例3:
Exceed 67%. License Revoked
#include<stdio.h>
int main()
{
int v,s;double x;
scanf("%d %d",&v,&s);
x=(v-s)*1.0/s*100;
if(v*10<11*s)
printf("OK");
else if(v*10>=s*11&&v*10<15*s){
printf("Exceed %.lf%%. Ticket 200\n",x);}
else
printf("Exceed %.lf%%. License Revoked\n",x);
return 0;
}
7-3-8 出租车计价
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
- 起步里程为3公里,起步费10元;
- 超起步里程后10公里内,每公里2元;
- 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
- 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x,s;int y;
cin>>x>>y;
s+=y/5*2;
if(x<=3)s+=10;
else if(x>3&&x<=10)s=s+10+(x-3)*2;
else s=s+24+(x-10)*3;
printf("%.0f",s);
return 0;
}
7-3-9 三角形判断
给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。
输入格式:
输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1、y1、x2、y2、x3、y3。
输出格式:
若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。
输入样例1:
4 5 6 9 7 8
输出样例1:
L = 10.13, A = 3.00
输入样例2:
4 6 8 12 12 18
输出样例2:
Impossible
#include <stdio.h>
#include<math.h>
int main()
{double x1,y1,x2,y2,x3,y3,d1,d2,d3,l,area,s;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);//输入三个顶点的坐标
d1=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); //计算顶点1与顶点2之间的边长
d2=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); //计算顶点1与顶点3之间的边长
d3=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));//计算顶点2与顶点3之间的边长
if(d1+d2>d3&&fabs(d1-d2)<d3) //三角形条件,两边之和大于第三边,两边之差小于第三边
{l=d1+d2+d3; //周长
s=(d1+d2+d3)/2;
area=sqrt(s*(s-d1)*(s-d2)*(s-d3));//面积,海伦公式
printf("L = %.2lf, A = %.2lf",l,area);
}
else
printf("Impossible");
return 0;
}
7-3-10 计算分段函数[3]
本题目要求计算下列分段函数f(x)的值:
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。
输入样例1:
10
输出样例1:
f(10.0) = 0.1
输入样例2:
234
输出样例2:
f(234.0) = 234.0
#include<bits/stdc++.h>
using namespace std;
int main(){
double x;
cin>>x;
if(x==10)printf("f(10.0) = 0.1");
else printf("f(%.1f) = %.1f",x,x);
return 0;
}
7-3-11 求一元二次方程的根
本题目要求一元二次方程ax2+bx+c=0的根,结果保留2位小数。(注意:0.00会在gcc下被输出为-0.00,需要做特殊处理,输出正确的0.00。)
输入格式:
输入在一行中给出3个浮点系数a、b、c,中间用空格分开。
输出格式:
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;
2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;
3)如果方程只有一个根,则直接输出此根;
4)如果系数都为0,则输出"Zero Equation";
5)如果a和b为0,c不为0,则输出"Not An Equation"。
输入样例1:
2.1 8.9 3.5
输出样例1:
-0.44
-3.80
输入样例2:
1 2 3
输出样例2:
-1.00+1.41i
-1.00-1.41i
输入样例3:
0 2 4
输出样例3:
-2.00
输入样例4:
0 0 0
输出样例4:
Zero Equation
输入样例5:
0 0 1
输出样例5:
Not An Equation
//太懒了,直接参考网上代码 ,7-10 求一元二次方程的根 (20分)-CSDN博客
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c;
scanf("%f %f %f",&a,&b,&c);
double delt = b*b-4*a*c;
double x1,x2;
double x;
if(a!=0){
if(delt>0){
x1 = (-b+sqrt(delt))/(a*2);
x2 = (-b-sqrt(delt))/(a*2);
printf("%.2f\n",x1);
printf("%.2f\n",x2);
}
else if(delt < 0){
if(b!=0)
{
double real = (-b)*1.0/(2*a);
double imag = sqrt(-delt)/(2*a);
printf("%.2f%+.2lfi\n",real,imag);
printf("%.2f%+.2lfi\n",real,-imag);
}else{
double x = sqrt(-delt)*1.0/(2*a);
printf("%.2f%+.2lfi\n",0.0,x);
printf("%.2f%+.2lfi\n",0.0,-x);
}
}
else{
printf("%.2f\n",-b*1.0/(2*a));
}
}
else if(a==0&&b==0&&c==0){
printf("Zero Equation\n");
}
else if(a==0&&b==0&&c!=0){
printf("Not An Equation\n");
}
else if(a==0&&b!=0&&c!=0)
printf("%.2f\n",(-c*1.0)/b);
return 0;
}
7-3-12 计算个人所得税
假设个人所得税为:税率×(工资−1600)。请编写程序计算应缴的所得税,其中税率定义为:
- 当工资不超过1600时,税率为0;
- 当工资在区间(1600, 2500]时,税率为5%;
- 当工资在区间(2500, 3500]时,税率为10%;
- 当工资在区间(3500, 4500]时,税率为15%;
- 当工资超过4500时,税率为20%。
输入格式:
输入在一行中给出非负工资。
输出格式:
在一行输出个人所得税,精确到小数点后2位。
输入样例1:
1600
输出样例1:
0.00
输入样例2:
1601
输出样例2:
0.05
输入样例3:
3000
输出样例3:
140.00
输入样例4:
4000
输出样例4:
360.00
输入样例5:
5000
输出样例5:
680.00
#include<stdio.h>
int main()
{
double a,y;
scanf("%lf",&a);
if(a<=1600)
y=0;
if(a>1600&&a<=2500)
y=0.05*(a-1600);
if(a>2500&&a<=3500)
y=0.10*(a-1600);
if(a>3500&&a<=4500)
y=0.15*(a-1600);
if(a>4500)
y=0.20*(a-1600);
printf("%.2lf",y);
return 0;
}
7-3-13 三天打鱼两天晒网
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例1:
103
输出样例1:
Fishing in day 103
输入样例2:
34
输出样例2:
Drying in day 34
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin>>x;
if(x%5>=1&&x%5<=3)cout<<"Fishing in day "<<x;
else cout<<"Drying in day "<<x;
return 0;
}
7-3-14 计算油费
现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
输入格式:
输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。
输出格式:
在一行中输出应付款额,保留小数点后2位。
输入样例:
40 97 m
输出样例:
301.34
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y;char c;double z;
cin>>x>>y>>c;
if(y==90)z=x*6.95;
else if(y==93)z=x*7.44;
else z=x*7.93;
if(c=='m')z*=0.95;
else z*=0.97;
printf("%.2f",z);
return 0;
}
7-3-15 超速判断
模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。
输入格式:
输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。
输出格式:
在一行中输出测速仪显示结果,格式为:Speed: V - S
,其中V
是车速,S
或者是Speeding
、或者是OK
。
输入样例1:
40
输出样例1:
Speed: 40 - OK
输入样例2:
75
输出样例2:
Speed: 75 - Speeding
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin>>x;
if(x>60)printf("Speed: %d - Speeding",x);
else printf("Speed: %d - OK",x);
return 0;
}
7-3-16 分段计算居民水费
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。
输入格式:
输入在一行中给出非负实数x。
输出格式:
在一行输出应交的水费,精确到小数点后2位。
输入样例1:
12
输出样例1:
16.00
输入样例2:
16
输出样例2:
22.50
#include<bits/stdc++.h>
using namespace std;
int main(){
double x,y;
cin>>x;
if(x>15) y=2.5*x-17.5;
else y=4*x/3;
printf("%.2f",y);
return 0;
}
7-3-17 计算工资
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。
输出格式:
在一行输出该员工的周薪,精确到小数点后2位。
输入样例1:
5 40
输出样例1:
2000.00
输入样例2:
3 50
输出样例2:
1650.00
#include<bits/stdc++.h>
using namespace std;
int main(){
double x,y,z;
cin>>x>>y;
if(x>=5) {
if(y>40)z=40*50+(y-40)*75;
else z=y*50;
}
else {
if(y>40)z=40*30+(y-40)*45;
else z=y*30;
}
printf("%.2f",z);
return 0;
}
7-3-17 计算工资
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。
输出格式:
在一行输出该员工的周薪,精确到小数点后2位。
输入样例1:
5 40
输出样例1:
2000.00
输入样例2:
3 50
输出样例2:
1650.00
#include<bits/stdc++.h>
using namespace std;
int main(){
double x,y,z;
cin>>x>>y;
if(x>=5) {
if(y>40)z=40*50+(y-40)*75;
else z=y*50;
}
else {
if(y>40)z=40*30+(y-40)*45;
else z=y*30;
}
printf("%.2f",z);
return 0;
}
7-4-1 星期几换算
今天是周六,又到了可以休息的日子了,7天后又会是一个周六。请你帮忙计算下,n(n为整数,可以是正也可以为负)天后会是星期几呢?
输入格式:
输入天数
输出格式:
输出星期几
输入样例1:
8
输出样例1:
星期日
输入样例2:
-2
输出样例2:
星期四
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int day;
if((6+n)>=0)
day=(6+n)%7;
else day=7+(6+n)%7;
switch(day){
case 0:printf("星期日\n");
break;
case 1:printf("星期一\n");
break;
case 2:printf("星期二\n");
break;
case 3:printf("星期三\n");
break;
case 4:printf("星期四\n");
break;
case 5:printf("星期五\n");
break;
case 6:printf("星期六\n");
break;
}
return 0;
}
7-4-2 古时年龄称谓知多少?
输入一个人的年龄(岁),判断出他属于哪个年龄段 ?
0-9 :垂髫之年;
10-19: 志学之年;
20-29 :弱冠之年;
30-39 :而立之年;
40-49 :不惑之年;
50-59: 知命之年;
60-69 :花甲之年;
70-79 :古稀之年;
80-89 :杖朝之年;
90-99 :耄耋之年。
输入格式:
输入一个人的年龄(整数)。题目保证输入整数的范围[0 , 99]
输出格式:
输出年龄对应的年龄段。
输入样例:
55
输出样例:
知命之年
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin>>x;
if(x>=0&&x<=9)cout<<"垂髫之年";
if(x>=10&&x<=19)cout<<"志学之年";
if(x>=20&&x<=29)cout<<"弱冠之年";
if(x>=30&&x<=39)cout<<"而立之年";
if(x>=40&&x<=49)cout<<"不惑之年";
if(x>=50&&x<=59)cout<<"知命之年";
if(x>=60&&x<=69)cout<<"花甲之年";
if(x>=70&&x<=79)cout<<"古稀之年";
if(x>=80&&x<=89)cout<<"杖朝之年";
if(x>=90&&x<=99)cout<<"耄耋之年";
return 0;
}
7-4-3 输出该月天数
从键盘输入一个年份year和月份month,输出该月有多少天(考虑闰年)。
提示:如果年份能被400整除,则它是闰年;如果能被4整除,而不能被100整除,则也是闰年,否则不是闰年。
输入格式:
输入任意符合范围(1月~12月)的月份和(1900年~9999年)年份,且两个值之间空格分隔。
输入样例:
2000 2
输出样例:
year = 2000 month = 2 days=29
输入样例:
2014 8
输出样例:
year = 2014 month = 8 days=31
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y;
cin>>x>>y;
int a[20]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(x%400==0||(x%4==0&&x%00))a[2]+=1;
printf("year = %d month = %d days=%d",x,y,a[y]);
return 0;
}
7-4-4 成绩转换
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
- 大于等于90分为A;
- 小于90且大于等于80为B;
- 小于80且大于等于70为C;
- 小于70且大于等于60为D;
- 小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin>>x;
if(x>=90)cout<<"A";
else if(x>=80&&x<90)cout<<"B";
else if(x>=70&&x<80)cout<<"C";
else if(x>=60&&x<70)cout<<"D";
else cout<<"E";
return 0;
}
7-5-1 求N分之一序列前N项和
本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
6
输出样例:
sum = 2.450000
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;double s=0;
cin>>n;
for(int i=1;i<=n;i++)
s+=1.0/i;
printf("sum = %.6f",s);
return 0;
}
7-5-2 求奇数分之一序列前N项和
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
23
输出样例:
sum = 2.549541
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;double s=0;
cin>>n;
for(int i=1;i<=n;i++){
s+=1.0/(2*i-1);
}
printf("sum = %.6f",s);
return 0;
}
7-5-3 求简单交错序列前N项和
本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。
输入样例:
10
输出样例:
sum = 0.819
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;double s=0;
cin>>n;
for(int i=1;i<=n;i++){
if(i%2==1)
s+=1.0/(3*i-2);
else s-=1.0/(3*i-2);
}
printf("sum = %.3f",s);
return 0;
}
7-5-4 求平方与倒数序列的部分和
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m2+1/m+(m+1)2+1/(m+1)+⋯+n2+1/n。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例:
5 10
输出样例:
sum = 355.845635
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y;double s=0;
cin>>x>>y;
for(int i=x;i<=y;i++){
s+=i*i;
s+=1.0/i;
}
printf("sum = %.6f",s);
return 0;
}
7-5-5 求交错序列前N项和
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,结果保留三位小数。
输入样例:
5
输出样例:
0.917
#include<stdio.h>
int main()
{
int n,k;
double sum;
sum=0;
k=1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
sum=sum+k*i*1.0/(2*i-1);
k=k*(-1);
}
printf("%.3lf",sum);
return 0;
}
7-5-6 求平方根序列前N项和
本题要求编写程序,计算平方根序列1+2+3+⋯的前N项之和。可包含头文件math.h
,并调用sqrt
函数求平方根。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
10
输出样例:
sum = 22.47
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;double s=0;
cin>>n;
for(int i=1;i<=n;i++){
s+=sqrt(i);
}
printf("sum = %.2f",s);
return 0;
}
7-5-7 求阶乘序列前N项和
本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。
输入格式:
输入在一行中给出一个不超过12的正整数N。
输出格式:
在一行中输出整数结果。
输入样例:
5
输出样例:
153
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,x=1, s=0;
cin>>n;
for(int i=1;i<=n;i++){
x*=i;
s+=x;
}
printf("%d",s);
return 0;
}
7-6-1 统计字符
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
输入格式:
输入为10个字符。最后一个回车表示输入结束,不算在内。
输出格式:
在一行内按照
letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。
输入样例:
aZ &
09 Az
输出样例:
letter = 4, blank = 3, digit = 2, other = 1
#include<bits/stdc++.h>
using namespace std;
int main(){
char c;int l=0,b=0,d=0,o=0;
for(int i=0;i<10;i++){
scanf("%c",&c);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))l++;
else if(c==' '||c=='\n')b++;
else if(c>='0'&&c<='9')d++;
else o++;
}printf("letter = %d, blank = %d, digit = %d, other = %d",l,b,d,o);
return 0;
}
7-6-2 统计学生成绩
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
- 大于等于90分为A;
- 小于90且大于等于80为B;
- 小于80且大于等于70为C;
- 小于70且大于等于60为D;
- 小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
输入样例:
7
77 54 92 73 60 65 69
输出样例:
1 0 2 3 1
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,x,a=0,b=0,c=0,d=0,e=0;
cin>>n;
while(n--){
cin>>x;
if(x>=90)a++;
else if(x>=80&&x<90)b++;
else if(x>=70&&x<80)c++;
else if(x>=60&&x<70)d++;
else e++;
}cout<<a<<' '<<b<<' '<<c<<' '<<d<<' '<<e;
return 0;
}
7-6-3 奇偶分家
给定N
个正整数,请统计奇数和偶数各有多少个?
输入格式:
输入第一行给出一个正整N
(≤1000);第2行给出N
个非负整数,以空格分隔。
输出格式:
在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。
输入样例:
9
88 74 101 26 15 0 34 22 77
输出样例:
3 6
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,x,a=0,b=0;
cin>>n;
while(n--){
cin>>x;
if(x%2)a++;
else b++;
}cout<<a<<' '<<b;
return 0;
}
7-6-4 统计低2位均为偶数的数
给定两个正整数,m和n,m< n,请计算在 m和n之间(包括m和n)所有符合以下条件的数的和
条件:个位数和十位数都是偶数
输入格式:
输入两个正整数m和n,数据保证m<n,10<= m < n <=1000。
输出格式:
输出m和n之间满足条件的所有数的和,输出数值后需要输出回车换行。
输入样例:
在这里给出一组输入。例如:
20 25
输出样例:
在这里给出相应的输出。例如20+22+24=86:
66
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,i,x=0;
cin>>a>>b;
for(i=a;i<=b;i++){
if(i%10%2==0&&i/10%2==0)x+=i;
}cout<<x<<endl;
return 0;
}
7-6-5 统计 十位 比 个位 大的数
给定两个正整数,m和n,m< n,请计算在 m和n之间(包括m和n)所有符合以下条件的数的和
条件:十位数比个位数大
输入格式:
输入两个正整数m和n,数据保证m<n,10<= m < n <=1000。
输出格式:
输出m和n之间满足条件的所有数的和,输出数值后需要输出回车换行。
输入样例:
在这里给出一组输入。例如:
150 160
输出样例:
在这里给出相应的输出。例如150+151+152+153+154+160:
920
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,i,x=0;
cin>>a>>b;
for(i=a;i<=b;i++){
if(i/10%10>i%10 )x+=i;
}cout<<x<<endl;
return 0;
}
7-6-6 统计成绩(*)
输入一个班的成绩,输出最高分、最低分和平均分。
输入格式
班级人数n (n>0)
n 名学生的成绩 s1,s2,⋯,sn (0≤si≤100,1≤i≤n)
输出格式
最高分、最低分、平均分
要求:所有分数只输出1位小数。
输入样例
15
98.5 67.3 45.5 90 75.2 65 77 99.5 20 100 80.5 69.5 88.5 66.5 87.5
输出样例
100.0 20.0 75.4
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;double x,max=0,min=100,s;
cin>>n;m=n;
while(m--){
cin>>x;
if(x>max)max=x;
if(x<min)min=x;
s+=x;
}printf("%.1f %.1f %.1f",max,min,s/n);
return 0;
}
7-6-7 统计数字
输入一个字符串,统计其中数字字符的个数。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个仅由字母和数字组成的字符串(长度不超过80)。
输出格式:
对于每组测试,在一行上输出该字符串中数字字符的个数。
输入样例:
2
ac520ac520
a1c2m3sdf
输出样例:
6
3
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;string s;
cin>>n;
getchar();
while(n--){
cin>>s;
int x=0;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9')x++;
}
cout<<x<<endl;
}
return 0;
}
7-7-1 换硬币
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
输入样例:
13
输出样例:
fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4
#include<stdio.h>
int main(){
int n=0,x,a,b,c;
scanf("%d",&x);
for(a=x/5;a>=1;a--){
for(b=x/2;b>=1;b--){
for(c=x;c>=1;c--){
if((a*5+b*2+c)==x){
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",a,b,c,a+b+c);
n++;
}
}
}
}printf("count = %d",n);
return 0;
}
7-7-2 人民币兑换
1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,会有很多种兑换方案。请编写程序给出各种兑换方案。
输入格式:
输入为一个正整数n,表示要求输出前n种可能的方案。方案的顺序,是按照5分硬币从少到多排列的。
输出格式:
显示前n种方案中5分、2分、1分硬币各多少枚。每行显示一种方案,数字之间空一格,最后一个数字后没有空格。
注意:如果全部方案不到n种,就顺序输出全部可能的方案。
输入样例:
5
输出样例:
1 46 53
2 42 56
3 38 59
4 34 62
5 30 65
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,j,k;
cin>>n;
for(i=1;i<=20;i++){
for(j=1;j<=50;j++){
for(k=1;k<=100;k++){
if(((i*5+2*j+k)==150)&&(i+j+k==100)&&n)
{ printf("%d %d %d\n",i,j,k);n--;}
}
}
}
return 0;
}
7-7-3 猜算式?2*7?=3848中的数字
算式:?2*7?=3848中缺少一个十位数和一个个位数。编程求出使该算式成立时的这两个数,并输出正确的算式。
输出格式:
在一行中输出A2*B7=C的值。
输出样例:
52*74=3848
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int i=1;i<10;i++){
for(int j=1;j<10;j++){
if(((i*10+2)*(70+j))==3848)
cout<<i*10+2<<"*"<<7*10+j<<"=3848"<<endl;
}
}
return 0;
}
7-7-4 打印直角九九乘法表
输出直角九九乘法口诀,输出效果如样例。
输出格式:
以左下直角的格式输出九九乘法表,每个式子按“a*b=c”形式输出,其中a和b各占1位列宽,c占3位列宽并左对齐。
输出样例:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
#include<bits/stdc++.h>
using namespace std;
int main(){
int n=9,i,j;
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
printf("%d*%d=%-3d",i,j,i*j);
}
cout<<endl;
}
return 0;
}
7-7-5 数字金字塔
输入正整数n,输出n层数字金字塔。
输入格式:
正整数n,1<=n<=9。
输出格式:
n层的金字塔,其中第1层的“1”在第1行的第39列(列从1开始计数)。
输入样例:
5
输出样例:
1
121
12321
1234321
123454321
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,j;
cin>>n;
for(i=0;i<n;i++){
for(j=1;j<=38-i;j++)cout<<' ';
for(j=1;j<=i+1;j++)cout<<j;
for(j=i;j>=1;j--)cout<<j;
cout<<endl;
}
return 0;
}
7-7-6 输出2到n之间的全部素数
本题要求输出2
到n
之间的全部素数,每行输出10
个。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
输入格式:
输入在一行中给出一个长整型范围内的整数。
输出格式:
输出素数,每个数占6位,每行输出10个。如果最后一行输出的素数个数不到10个,也需要换行。
输入样例:
10
输出样例:
2 3 5 7
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,j,y=0;
cin>>n;
if(n<=1)return 0;
for(i=2;i<=n;i++){
int x=0;
for(int j=2;j<=sqrt(i);j++){
if(i%j==0){x=1;break;}
}
if(x==0){
printf("%6d",i);
y++;
if(y%10==0)cout<<endl;
}
}
if(y%10)cout<<endl;
return 0;
}
7-13 穷举 穷举问题-搬砖
某工地需要搬运砖块,已知男人一人搬3
块,女人一人搬2
块,小孩两人搬1
块。如果想用n
人正好搬n
块砖,问有多少种搬法?
输入格式:
输入在一行中给出一个正整数n
。
输出格式:
输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c
"的格式,输出男人的数量cnt_m
,女人的数量cnt_w
,小孩的数量cnt_c
。请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。
如果找不到符合条件的方案,则输出"None
"
输入样例:
45
输出样例:
men = 0, women = 15, child = 30
men = 3, women = 10, child = 32
men = 6, women = 5, child = 34
men = 9, women = 0, child = 36
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,j,k,x=0;
cin>>n;
for(i=0;i<=n/3;i++){
for(j=0;j<=n/2;j++){
for(k=0;k<=2*n;k++){
if(((i*3+2*j+k/2.0)==n)&&(i+j+k==n))
{ printf("men = %d, women = %d, child = %d\n",i,j,k);x=1;}
}
}
}if(x==0)cout<<"None";
return 0;
}
7-7-8 百鸡问题扩展-N鸡问题
N
元钱买N
只鸡,公鸡每只5元,母鸡每只3元,小鸡1元3只,N
元钱必须刚好买N
只鸡,而且鸡必须整只买,不能劈开买。
有几种买法呢?这就是N鸡问题。
输入格式:
在一行中输入一个正整数N
。(N<500
)
输出格式:
在一行中输出两个整数c
s
,中间用一个空格隔开,表示N
元钱买N
只鸡共有 c
种买法,且所有买法的公鸡数量之和是 s
。
如果无解,则 s
为 -1
.
输入样例1:
100
输出样例1:
4 24
输入样例2:
1
输出样例2:
0 -1
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,j,k,x=0,y=0;
cin>>n;
for(i=0;i<=n/5;i++){
for(j=0;j<=n/3;j++){
for(k=0;k<=3*n;k++){
if(((i*5+3*j+k/3.0)==n)&&(i+j+k==n))
{x++;y+=i;}
}
}
}
if(x==0)cout<<"0 -1";
else
cout<<x<<' '<<y;
return 0;
}
7-8-1 求给定精度的简单交错序列部分和
本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
输入格式:
输入在一行中给出一个正实数eps。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例1:
4E-2
输出样例1:
sum = 0.854457
输入样例2:
0.02
输出样例2:
sum = 0.826310
#include<bits/stdc++.h>
using namespace std;
int main(){
double n,s=0,x=0,y=1;int i=1;
cin>>n;
do{
x=1.0/i;
s+=x*y;
y=-y;i+=3;
}while(x>n);
printf("sum = %.6f",s);
return 0;
}
7-8-2 最大公约数和最小公倍数
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,a,x,y;
cin>>n>>m;x=n,y=m;
if(n%m==0)a=n/m;
while(1){
a=abs(n-m);
n=m;
m=a;
if(n%m==0)break;
}
cout<<a<<' '<<x/a*y;;
return 0;
}
7-8-3 兔子繁衍问题
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
输入样例:
30
输出样例:
9
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i;
cin>>n;
int a[n];
a[0]=1;a[1]=2;
for(i=2;i<=n;i++)a[i]=a[i-2]+a[i-1];
for(i=0;;i++){
if(a[i]/2>=n){cout<<i;break;}
}
return 0;
}
7-8-4 求整数的位数及各位数字之和
对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过109的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入样例:
321
输出样例:
3 6
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,x=0,y=0;
cin>>n;
while(n){
int a=n%10;
y+=a;
n/=10;
x++;
}cout<<x<<' '<<y;
return 0;
}