2023-2024-1高级语言程序设计第1次月考

7-1-1 计算摄氏温度

给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出一个华氏温度。

输出格式:

在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。

输入样例:

150

输出样例:

Celsius = 65
#include
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
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
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
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
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)。

2023-2024-1高级语言程序设计第1次月考_第1张图片

输入格式

r

输出格式

v

要求:输出2位小数(末位四舍五入)。

输入样例
1.25

输出样例
8.18

注:π=3.1415926535897932384626...

#include
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,快速计算:

题图.jpg

输入格式

n

输出格式

s

要求:输出 6 位小数,末位四舍五入。

输入样例1
4

输出样例1
0.800000

输入样例2
300

输出样例2
0.996678
#include
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)。

2023-2024-1高级语言程序设计第1次月考_第2张图片

输入格式

r 和 h

输出格式

v

要求:输出 4 位小数(末位四舍五入)。

输入样例
1.36 5.87

输出样例
11.3696

注:π=3.1415926535897932384626...

#include
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
using namespace std;
int main()
{
string s;
cin>>s;
cout<<"Hello "<

 

7-2-1 温度转换

本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。

输入格式:

本题目没有输入。

输出格式:

按照下列格式输出

fahr = 150, celsius = 计算所得摄氏温度的整数值
#include
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
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
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
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
using namespace std;
int main(){
    printf("9 = 3 * 3\n3 * 3 = 9");
    return 0;
}

 

7-2-6 整数152的各位数字

本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值。

输入格式:

本题无输入。

输出格式:

按照以下格式输出:

152 = 个位数字 + 十位数字*10 + 百位数字*100
#include
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
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
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
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<

 

7-2-10 后天

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。

输入格式:

输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。

输出格式:

在一行中输出D天的后天是星期几。

输入样例:

3

输出样例:

5
#include
using namespace std;
int main(){
    int n;
    cin>>n;
    if(n>5)n=(n+2)%7;
    else n=n+2;
    cout<

 

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
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
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)的值:

f2-11

注:可在头文件中包含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
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
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
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
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<

 

7-3-6 比较大小

本题要求将输入的任意3个整数从小到大输出。

输入格式:

输入在一行中给出3个整数,其间以空格分隔。

输出格式:

在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:

4 2 8

输出样例:

2->4->8

 

#include
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<";
    }
    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
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
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 
#include
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)

 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
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
#include
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
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
using namespace std;
int main(){
    int x;
    cin>>x;
    if(x%5>=1&&x%5<=3)cout<<"Fishing in day "<

 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
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
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
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
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
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
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 古时年龄称谓知多少?

2023-2024-1高级语言程序设计第1次月考_第3张图片

输入一个人的年龄(岁),判断出他属于哪个年龄段 ?

0-9 :垂髫之年;

10-19: 志学之年;

20-29 :弱冠之年;

30-39 :而立之年;

40-49 :不惑之年;

50-59: 知命之年;

60-69 :花甲之年;

70-79 :古稀之年;

80-89 :杖朝之年;

90-99 :耄耋之年。

输入格式:

输入一个人的年龄(整数)。题目保证输入整数的范围[0 , 99]

输出格式:

输出年龄对应的年龄段。

输入样例:

55

输出样例:

知命之年

 

#include
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
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
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
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
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
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
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
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
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
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
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
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<

 7-6-3 奇偶分家

给定N个正整数,请统计奇数和偶数各有多少个?

输入格式:

输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。

输出格式:

在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。

输入样例:

9
88 74 101 26 15 0 34 22 77

输出样例:

3 6
#include
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<

 

7-6-4 统计低2位均为偶数的数

给定两个正整数,m和n,m< n,请计算在 m和n之间(包括m和n)所有符合以下条件的数的和
条件:个位数和十位数都是偶数

输入格式:

输入两个正整数m和n,数据保证m

输出格式:

输出m和n之间满足条件的所有数的和,输出数值后需要输出回车换行。

输入样例:

在这里给出一组输入。例如:

20 25

输出样例:

在这里给出相应的输出。例如20+22+24=86:

66
#include
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<

 

7-6-5 统计 十位 比 个位 大的数

给定两个正整数,m和n,m< n,请计算在 m和n之间(包括m和n)所有符合以下条件的数的和
条件:十位数比个位数大

输入格式:

输入两个正整数m和n,数据保证m

输出格式:

输出m和n之间满足条件的所有数的和,输出数值后需要输出回车换行。

输入样例:

在这里给出一组输入。例如:

150 160 

输出样例:

在这里给出相应的输出。例如150+151+152+153+154+160:

920
#include
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<

 

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

7-6-7 统计数字

输入一个字符串,统计其中数字字符的个数。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个仅由字母和数字组成的字符串(长度不超过80)。

输出格式:

对于每组测试,在一行上输出该字符串中数字字符的个数。

输入样例:

2
ac520ac520
a1c2m3sdf

输出样例:

6
3
#include
using namespace std;
int main(){
      int n;string s;
    cin>>n;
    getchar();
    while(n--){
        cin>>s;
        int x=0;
        for(int i=0;i='0'&&s[i]<='9')x++;
        }
        cout<

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

 

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

 7-7-5 数字金字塔

输入正整数n,输出n层数字金字塔。

输入格式:

正整数n,1<=n<=9。

输出格式:

n层的金字塔,其中第1层的“1”在第1行的第39列(列从1开始计数)。

输入样例:

5

输出样例:

                                      1
                                     121
                                    12321
                                   1234321
                                  123454321
#include
using namespace std;
int main(){
         int n,i,j;
    cin>>n;
    for(i=0;i=1;j--)cout<

 

7-7-6 输出2到n之间的全部素数

本题要求输出2n之间的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。

输入格式:

输入在一行中给出一个长整型范围内的整数。

输出格式:

输出素数,每个数占6位,每行输出10个。如果最后一行输出的素数个数不到10个,也需要换行。

输入样例:

10

输出样例:

     2     3     5     7
#include
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<

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

 

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

 7-8-3 兔子繁衍问题

一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

输入格式:

输入在一行中给出一个不超过10000的正整数N。

输出格式:

在一行中输出兔子总数达到N最少需要的月数。

输入样例:

30

输出样例:

9
#include
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<

 

7-8-4 求整数的位数及各位数字之和 

对于给定的正整数N,求它的位数及其各位数字之和。

输入格式:

输入在一行中给出一个不超过109的正整数N。

输出格式:

在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

输入样例:

321

输出样例:

3 6
#include
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<

 

你可能感兴趣的:(pta,算法,c++,数据结构)