pta初级题库51~100


7-51 求奇数分之一序列前N项和

分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + … 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。

输入样例:
23
输出样例:
sum = 2.549541

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    double sum;
    int i=1;
    while(n--){
        sum+=pow(i,-1);
        i+=2;
    }
    printf("sum = %.6f",sum);
    return 0;
}

7-52 生成3的乘方表

分数 5
作者 C课程组
单位 浙江大学
输入一个非负整数n,生成一张3的乘方表,输出3
0
~3
n
的值。可调用幂函数计算3的乘方。

输入格式:
输入在一行中给出一个非负整数n。

输出格式:
按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。

输入样例:
3
输出样例:
pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    for(int i=0;i<=n;i++){
       printf("pow(3,%d) = %d\n",i,(int)pow(3,i));
    }
    return 0;
}

求组合数

本题要求编写程序,根据公式C
n
m

=
m!(n−m)!
n!

算出从n个不同元素中取出m个元素(m≤n)的组合数。

建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。

输入格式:
输入在一行中给出两个正整数m和n(m≤n),以空格分隔。

输出格式:
按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。

输入样例:
2 7
输出样例:
result = 21

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
double fact(int n){
    double sum=1;
    for(int i=1;i<=n;i++){
        sum*=i;
    }return sum;
}
int main(){
    int m,n;
    cin>>m>>n;
    double sum;
   sum=fact(n)/(fact(m)*fact(n-m));
    cout<<"result = "<<sum;
    return 0;
}

7-54 求整数均值

分数 5
作者 乔林
单位 清华大学
本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。

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

输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。

输入样例:
1 2 3 4
输出样例:
Sum = 10; Average = 2.5

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    double sum=0;
    int x,x2,num=0,x3,x4;
    cin>>x>>x2>>x3>>x4;
    sum=(x+x2+x3+x4)/4.0;
    printf("Sum = %d; Average = %.1f",x+x2+x3+x4,sum);
    
    return 0;
}

7-55 阶梯电价

分数 5
作者 陈建海
单位 浙江大学
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。

输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。

输入样例1:
10
输出样例1:
cost = 5.30
输入样例2:
100

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    double sum=0;
    if(n>50){sum=50*0.53+(n-50)*0.58;printf("cost = %.2f",sum);}
    else if(n>=0){sum=n*0.53;printf("cost = %.2f",sum);}
    else cout<<"Invalid Value!";
    return 0;
}

7-56 求平方与倒数序列的部分和

分数 5
作者 C课程组
单位 浙江大学
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m
2
+1/m+(m+1)
2
+1/(m+1)+⋯+n
2
+1/n。

输入格式:
输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。

输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。

输入样例:
5 10
输出样例:
sum = 355.845635

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n,m;
    cin>>m>>n;
    double sum=0;
    for(int i=m;i<=n;i++){
        sum+=pow(i,2)+pow(i,-1);
    }
    printf("sum = %.6f",sum);
    return 0;}

7-57 求交错序列前N项和

分数 5
作者 陈建海
单位 浙江大学
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值,结果保留三位小数。

输入样例:
5
输出样例:
0.917

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int N;
    cin>>N;
    double sum=0;
    for(int i=1,j=1;i<=N;i++,j+=2){
        sum+=i*pow(-1,i+1)/j;
    }
    printf("%.3f",sum);
    return 0;
}

7-58 求平方根序列前N项和

分数 5
作者 颜晖
单位 浙江大学
本题要求编写程序,计算平方根序列
1

+
2

+
3

+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:
10
输出样例:
sum = 22.47

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
    int main(){
        int n;
        cin>>n;
        double sum=0;
        for(int i=1;i<=n;i++){
            sum+=sqrt(i);
        }
        printf("sum = %.2f",sum);
        return 0;
    }

7-59 求阶乘序列前N项和

分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。

输入格式:
输入在一行中给出一个不超过12的正整数N。

输出格式:
在一行中输出整数结果。

输入样例:
5
输出样例:
153

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
double fact(int n){
    double sum=1;
    for(int i=1;i<=n;i++){
        sum*=i;
    }return sum;
}
int main(){
    int n;
    cin>>n;
    int sum;
    for(int i=1;i<=n;i++){
        sum+=fact(i);
    }
    cout<<sum;
    return 0;
}

7-60 统计学生平均成绩与及格人数

分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。

输入格式:
输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。

输出格式:
按照以下格式输出:

average = 成绩均值
count = 及格人数
其中平均值精确到小数点后一位。

输入样例:
5
77 54 92 73 60
输出样例:
average = 71.2
count = 4

#include<stdio.h>
int main()
{
  int n;
  scanf("%d",&n);
  if(n>=0){

    if(n==0){printf("average = 0.0\n");printf("count = 0");}
    else{
  int i;
  int sum=0;
  int temp=0;
  for(i=1;i<=n;i++)
  {
    int t;
    scanf("%d",&t);
    sum+=t;
    if(t>=60) temp++;
  }
  printf("average = %.1lf\n",(double)sum/n);
  printf("count = %d\n",temp);}}
  return 0;
}

7-61 统计字符

分数 5
作者 颜晖
单位 浙大城市学院
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:
输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:
在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。

输入样例:
aZ &
09 Az
输出样例:
letter = 4, blank = 3, digit = 2, other = 1

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    char s;
    s=getchar();
    int n=1;
    int letter=0,blank=0,digit=0,ot=0;
    while(s!='\n'||n<=10){
        if(isdigit(s))digit++;
        else if(isupper(s)||islower(s))letter++;
        else if(s==' '||s=='\n')blank++;
        else ot++;
        s=getchar();
        n++;
    }
    cout<<"letter = "<<letter<<", blank = "<<blank<<", digit = "<<digit<<", other = "<<ot;
    
    return 0;
}

7-62 输出闰年

分数 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>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    if(n<=2000||n>2100){
        cout<<"Invalid year!";
    }else {
        int k=1;
        for(int i=2001;i<=n;i++){
            if(i%4==0&&i%100!=0||i%400==0){
                cout<<i<<endl;k=0;
            }
        }
        if(k)cout<<"None";
    }
    return 0;
}

7-63 成绩转换

分数 6
作者 沈睿
单位 浙江大学
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。

输出格式:
在一行中输出对应的五分制成绩。

输入样例:
90
输出样例:
A

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    switch(n/10){
        case 10:
        case 9:cout<<"A";break;
        case 8:cout<<"B";break;
        case 7:cout<<"C";break;
        case 6:cout<<"D";break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:cout<<"E";break;
            
    }
    return 0;}

7-64 查询水果价格

分数 5
作者 C课程组
单位 浙江大学
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。

输入格式:
输入在一行中给出用户连续输入的若干个编号。

输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。

输入样例1:
3 -1 0 2
输出样例1:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00
输入样例2:
1 2 3 3 4 4 5 6 7 8
输出样例2:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n;
    
    cout<<"[1] apple"<<endl;
    cout<<"[2] pear"<<endl;
    cout<<"[3] orange"<<endl;
    cout<<"[4] grape"<<endl;
    cout<<"[0] exit"<<endl;
    cin>>n;
        int sum=0;
        while(sum<5&&n!=0){
            sum++;
            switch(n){
                case 1:cout<<"price = 3.00"<<endl;break;
                case 2:cout<<"price = 2.50"<<endl;break;
                case 3:cout<<"price = 4.10"<<endl;break;
                case 4:cout<<"price = 10.20"<<endl;break;
                    
            }
            if(n!=1&&n!=2&&n!=3&&n!=4)cout<<"price = 0.00"<<endl;
        cin>>n;}
            return 0;
        }

7-65 高速公路超速处罚

分数 5
作者 陈建海
单位 浙江大学
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的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<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    double n;
    double m;
    
    cin>>n>>m;
    int t=((n-m)*100+50)/m;
    
    //(int)t;
    if(t<10)cout<<"OK"<<endl;
    else if(t<50&&t>=10)cout<<"Exceed "<<t<<"%. Ticket 200";
    else if(t>=50)cout<<"Exceed "<<t<<"%. License Revoked";
    
    return 0;
}

7-66 出租车计价

分数 5
作者 沈睿
单位 浙江大学
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

起步里程为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>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n;
    double m;
    cin>>m>>n;
    double sum=0;
    if(m<=3)sum+=10;
    else if(m<=10)sum+=2*(m-3)+10;
    else sum+=3*(m-10)+24;
    if(n>=5)sum+=n/5*2;
    cout<<(int)(sum+0.5);
    return 0;
}

7-67 统计学生成绩

分数 5
作者 陈建海
单位 浙江大学
本题要求编写程序读入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>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    int A=0,B=0,C=0,D=0,E=0;
    while(n--){
        int x;
        cin>>x;
        if(x>=90)A++;
        else if(x>=80)B++;
        else if(x>=70)C++;
        else if(x>=60)D++;
        else E++;
    }
    cout<<A<<" "<<B<<" "<<C<<" "<<D<<" "<<E;
    return 0;
}

7-68 三角形判断

分数 5
作者 杨起帆
单位 浙江大学
给定平面上任意三个点的坐标(x
1

,y
1

)、(x
2

,y
2

)、(x
3

,y
3

),检验它们能否构成三角形。

输入格式:
输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x
1

、y
1

、x
2

、y
2

、x
3

、y
3

输出格式:
若这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<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    double x1,x2,x3,y1,y2,y3,A=0,L=0;
    cin>>x1>>y1>>x2>>y2>>x3>>y3;
    double l1=sqrt(pow(abs(x2-x1),2)+pow(abs(y2-y1),2)),l2=sqrt(pow(abs(x3-x2),2)+pow(abs(y3-y2),2)),l3=sqrt(pow(abs(x3-x1),2)+pow(abs(y3-y1),2));
    if(l1+l2<=l3||l1+l3<=l2||l2+l3<=l1)cout<<"Impossible"<<endl;
    else{
        double p=0;
        p=(l1+l2+l3)/2;
    printf("L = %.2f, A = %.2f\n",l1+l2+l3,sqrt(p*(p-l1)*(p-l2)*(p-l3)));
    }
    return 0;}

7-69 求给定精度的简单交错序列部分和

分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列部分和 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 <stdio.h>
#include <math.h>
 
int main(){
    int fm = 1;    
    double eps, item = 0.0, sum = 0.0, sign = 1.0;    
    
    scanf("%lf", &eps);
    
    do{
        item = sign*(1.0/fm);
        sign = -sign;   
        fm += 3;   
        sum += item;    
    }while( fabs(item) > eps );
 
    printf("sum = %lf", sum);
    
    return 0;
}

7-70 猜数字游戏

分数 5
作者 C课程组
单位 浙江大学
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

输入格式:
输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。

输出格式:
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。

输入样例:
58 4
70
50
56
58
60
-2
输出样例:
Too big
Too small
Too small
Good Guess!

#include <stdio.h>
int main(){
    // randNum:随机数  guessNum:用户猜测数  N:次数  flag:标志
    int randNum, guessNum, N, flag = 0;
    
    scanf("%d %d", &randNum, &N);
    
    for( int i=1; i<=N; i++ ){ //循环输入N次结束
        scanf("%d", &guessNum);
        
        if( guessNum < 0 )   // 输入不合法
            break;
        
        if( guessNum > randNum ) // 输入太大
            printf("Too big\n");
        else if( guessNum < randNum )  // 输入太小
            printf("Too small\n");
        else if( guessNum == randNum ){  // 相等
            if( i == 1 )  // 1次成功
                printf("Bingo!\n");
            else if( i <= 3 )  // 3次以内成功
                printf("Lucky You!\n");
            else if( i > 3 )   // 3次以上成功
                printf("Good Guess!\n");
            flag = 1;
            break;
        }
    }
    // 判断是否在N次内猜对
    if( flag == 0 )
        printf("Game Over\n");
    
    return 0;
}

7-71 求e的近似值

分数 5
作者 C课程组
单位 浙江大学
自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。

输入格式:
输入第一行中给出非负整数 n(≤1000)。

输出格式:
在一行中输出部分和的值,保留小数点后八位。

输入样例:
10
输出样例:
2.71828180

#include <stdio.h>
 
double fact( int n );
 
int main(){
    int n;
    double sum = 1.0;
    
    do{
        scanf("%d", &n);
    }while( n<0 || n>1000 );    //保证n的范围
    
    for( int i=1; i<=n; i++){
        sum += 1.0 / fact(i);
    }
    
    printf("%.8lf", sum);
    
    return 0;
}
 
double fact( int n ){
    if( n <= 1 )
        return n;
    else
        return n * fact( n-1 );
}

7-72 求奇数和

分数 5
作者 C课程组
单位 浙江大学
本题要求计算给定的一系列正整数中奇数的和。

输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。

输出格式:
在一行中输出正整数序列中奇数的和。

输入样例:
8 7 4 3 70 5 6 101 -1
输出样例:
116

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int n,sum=0;
    cin>>n;
    while(n>0){
        if(n%2==1){
            sum+=n;
        }
        cin>>n;
    }
    cout<<sum;
    return 0;}

7-73 求分数序列前N项和

分数 6
作者 张彤彧
单位 浙江大学
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:
20
输出样例:
32.66


#include <stdio.h>
#include<stdlib.h>
int main(){
    int N;
    double sum = 2, fz = 2, fm = 1; // fz:分子  fm:分母
    
    scanf("%d", &N);
        
    if( N == 0 ){ // N为0,恒为零
        printf("0.00");
        exit(0);
    }
    
    if( N == 1 ){ // N为1,恒为2
        printf("2.00");
        exit(0);
    }
    
    for( int i=2; i<=N; i++ ){  // 从第二项开始
        fz = fm + fz; // 计算分子
        fm = fz - fm; // 计算分母
        sum += (fz / fm);
    }
    
    printf("%.2lf\n", sum);
    
    return 0;
}

7-74 最大公约数和最小公倍数

分数 7
作者 张彤彧
单位 浙江大学
本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:
输入在一行中给出两个正整数M和N(≤1000)。

输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:
511 292
输出样例:
73 2044

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int a,b,t;
	scanf("%d %d",&a,&b);
    int m=a,n=b;
	while(b!=0){
		t=a%b;
		a=b;
		b=t;
	}
    cout<<a<<" "<<m*n/a;
    return 0;
}

7-75 猴子吃桃问题

分数 6
作者 徐镜春
单位 浙江大学
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式:
输入在一行中给出正整数N(1<N≤10)。

输出格式:
在一行中输出第一天共摘了多少个桃子。

输入样例:
3
输出样例:
10

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int a;
    cin>>a;
    int sum=1;
    for(int i=1;i<a;i++){
        sum+=1;
        sum*=2;
        
    }cout<<sum;
    return 0;}

7-76 兔子繁衍问题

分数 5
作者 徐镜春
单位 浙江大学
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

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

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

输入样例:
30
输出样例:
9

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
//int aa[100000000];
int f(int x){
    if(x==1||x==2)return 1;
    else return f(x-1)+f(x-2);
}
int main(){
    int a;
    cin>>a;
    /*aa[1]=1,aa[2]=1;
    for(int i=3;;i++){
        
        aa[i]=aa[i-1]+aa[i-2];
        if(aa[i]>=a){cout<<i;break;}
    }
    if(a==1)cout<<"1";*/
    for(int i=1;;i++){
        if(f(i)>=a){ cout<<i;break;}
    }
    return 0;}

7-77 查找指定字符

分数 5
作者 颜晖
单位 浙江大学
本题要求编写程序,从给定字符串中查找某指定的字符。

输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1:
m
programming
输出样例1:
index = 7
输入样例2:
a
1234
输出样例2:
Not Found

/*#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    char a;
    cin>>a;
    getchar();
    char s[100];
    cin.getline(s,100);
    //cin>>s;
    char * x;
        x=strchr(s,a);
    if(x==NULL)cout<<"Not Found";
    else cout<<"index = "<<x-s+1;
    
    return 0;}*/
#include <stdio.h>
int main()
{
	int i, index, count;
	char a, ch, str[80];
	scanf("%c\n", &a);
	i=0;
	index=-1;
	count=0;
	ch=getchar();
	for(i=0; ch!='\n'; i++){
		str[i]=ch;
		count++;
		ch=getchar();
	}
	for(i=0; i<count; i++)
		if(a==str[i])
			index=i;
		if(index!=-1)
			printf("index = %d", index);
		else
			printf("Not Found");
			
	return 0;
}

7-78 字符串逆序

分数 5
作者 白洪欢
单位 浙江大学
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

输入格式:
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:
在一行中输出逆序后的字符串。

输入样例:
Hello World!
输出样例:
!dlroW olleH

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    string s;
    //char s[100];
    getline(cin,s);
    for(int i=s.length()-1;i>=0;i--){
        cout<<s[i];
    }
    return 0;}

7-79 字符串转换成十进制整数

分数 5
作者 张彤彧
单位 浙江大学
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

输入格式:
输入在一行中给出一个以#结束的非空字符串。

输出格式:
在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

输入样例:
±P-xf4±1!#
输出样例:
-3905

#此题用python
import re

# 16进制 0-9 A-F a-f
s = input()
ans = re.sub(r'[^0-9a-fA-F]', '', s)
if not ans:
    ans = '0'
int_ans = int(ans, 16)
if -1 < s.find('-') < s.find(ans[0]):
    int_ans = -int_ans
print(int_ans)

7-80 求矩阵各行元素之和

分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间

以空格分隔。

输出格式:
每行输出对应矩阵行元素之和。

输入样例:
3 2
6 3
1 -8
3 12
输出样例:
9
-7
15

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int m,n;
    cin>>m>>n;
    int sum=0;
    for(int i=0;i<m;i++){
        sum=0;
        for(int j=0;j<n;j++){
            int x;
            cin>>x;
            sum+=x;
        }
        cout<<sum<<endl;
    }
    return 0;
    
        
}

7-81 统计大写辅音字母

分数 5
作者 C课程组
单位 浙江大学
英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。

输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:
输出在一行中给出字符串中大写辅音字母的个数。

输入样例:
HELLO World!
输出样例:
4

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    char s[100];
    cin.getline(s,100);
    int sum=0;
    for(int i=0;i<strlen(s);i++){
        if(isupper(s[i])&&s[i]!='A'&&s[i]!='E'&&s[i]!='I'&&s[i]!='O'&&s[i]!='U')
            sum++;
        
    }
    cout<<sum;
    return 0;}

7-82 输出菱形图案

分数 5
作者 张高燕
单位 浙大城市学院
本题要求编写程序,输出指定的由“A”组成的菱形图案。

输入格式:
本题无输入

输出格式:
按照下列格式输出由“A”组成的菱形图案。

A
A A
A

php 

7-83 计算分段函数[3]

分数 5
作者 颜晖
单位 浙大城市学院
本题目要求计算下列分段函数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>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    double x;
    cin>>x;
    if(x==10)
        cout<<"f(10.0) = 0.1";
    else printf("f(%.1f) = %.1f",x,x);
    return 0;}

7-84 求1到100的和

分数 4
作者 颜晖
单位 浙大城市学院
本题要求编写程序,计算表达式 1 + 2 + 3 + … + 100 的值。

输入格式:
本题无输入。

输出格式:
按照以下格式输出:

sum = 累加和

php
sum = 5050

7-85 计算存款利息

分数 4
作者 颜晖
单位 浙大城市学院
本题目要求计算存款利息,计算公式为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>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    double m,y,r;
    cin>>m>>y>>r;
    double i=m*pow(1+r,y)-m;
    printf("interest = %.2f",i);
    
    return 0;}

7-86 求幂之和

分数 6
作者 颜晖
单位 浙大城市学院
本题要求编写程序,计算sum=2
1
+2
2
+2
3
+⋯+2
n
。可以调用pow函数求幂。

输入格式:
输入在一行中给出正整数n(≤10)。

输出格式:
按照格式“result = 计算结果”输出。

输入样例:
5
输出样例:
result = 62

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int x;
    cin>>x;
    double sum=0;
    for(int i=1;i<=x;i++){
        sum+=pow(2,i);
    }
    cout<<"result = "<<sum;
    return 0;
}

7-87 计算个人所得税

分数 6
作者 沈睿
单位 浙江大学
假设个人所得税为:税率×(工资−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<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    double x,sum=0;
    cin>>x;
    if(x<=1600)cout<<"0.00";
    else if(x<=2500)printf("%.2f",0.05*(x-1600));
    else if(x<=3500)printf("%.2f",0.10*(x-1600));
    else if(x<=4500)printf("%.2f",0.15*(x-1600));
    else printf("%.2f",0.20*(x-1600));
    
    return 0;}

7-88 输出三角形面积和周长

分数 6
作者 C课程组
单位 浙江大学
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=
s(s−a)(s−b)(s−c)

,其中s=(a+b+c)/2。

输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。

输出格式:
如果输入的边能构成一个三角形,则在一行内,按照

area = 面积; perimeter = 周长
的格式输出,保留两位小数。否则,输出

These sides do not correspond to a valid triangle
输入样例1:
5 5 3
输出样例1:
area = 7.15; perimeter = 13.00
输入样例2:
1 4 1
输出样例2:
These sides do not correspond to a valid triangle

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int x,y,z;
    cin>>x>>y>>z;
    if(x+y<=z||z+x<=y||z+y<=x){
        cout<<"These sides do not correspond to a valid triangle\n";
        return 0;
    }
    double sum=0,zou=x+y+z,s=zou/2;
    sum=sqrt(s*(s-x)*(s-y)*(s-z));
    printf("area = %.2f; perimeter = %.2f",sum,zou);
        return 0;}

7-89 三天打鱼两天晒网

分数 5
作者 C课程组
单位 浙江大学
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第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>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int x;
    cin>>x;
    if(x%5<=3&&x%5!=0){
        cout<<"Fishing in day "<<x;
    }else cout<<"Drying in day "<<x;
    
    return 0;}

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

分数 5
作者 C课程组
单位 浙江大学
对于给定的正整数N,求它的位数及其各位数字之和。

输入格式:
输入在一行中给出一个不超过10
9
的正整数N。

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

输入样例:
321
输出样例:
3 6

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    long long x;
    cin>>x;
    int sum=0,num=0;
    while(x){
        sum+=x%10;
        num++;
        x/=10;
    }
    cout<<num<<" "<<sum;
    return 0;}

7-91 输出三角形字符阵列

分数 6
作者 颜晖
单位 浙大城市学院
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。

输入格式:
输入在一行中给出一个正整数n(1≤n<7)。

输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。

输入样例:
4
输出样例:
A B C D
E F G
H I
J

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int x;
    cin>> x;
    if(x==1)cout<<"A ";
    if(x==3){cout<<"A B C \n";
             cout<<"D E \n";
             cout<<"F ";}
    if(x==6){cout<<"A B C D E F \n";
             cout<<"G H I J K \n";
             cout<<"L M N O \n";
             cout<<"P Q R \n";
             cout<<"S T \n";
             cout<<"U ";}
    return 0;}

7-92 简化的插入排序

分数 7
作者 C课程组
单位 浙江大学
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。

输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。

输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int x;
    cin>>x;
    set<int>a;
    while(x--){
        int d;
        cin>>d;
        a.insert(d);
    }
    int d;
    cin>>d;
    a.insert(d);
    for(set<int>::iterator it =a.begin();it!=a.end();it++){
        cout<<*it<<" ";
    }
    
    return 0;}

7-93 数字加密

分数 5
作者 陈建海
单位 浙江大学
输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。

输入格式:
输入在一行中给出一个四位的整数x,即要求被加密的数。

输出格式:
在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。

输入样例:
1257
输出样例:
The encrypted number is 4601

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    int x;
    cin>>x;
    int a,b,c,d;
    a=((x/1000)+9)%10;
    b=((x/100)+9)%10;
   c=((x/10)+9)%10;
    d=((x%10)+9)%10;
    cout<<"The encrypted number is "<<c<<d<<a<<b;
    return 0;}

7-94 交换最小值和最大值

分数 5
作者 C课程组
单位 浙江大学
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。

注意:题目保证最大和最小值都是唯一的。

输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。

输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。

输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8

#include <stdio.h>
int main()
{
    int count,arr[12],brr[10],temp,max = 0,min = 0,max_index=0,min_index = 0;
    scanf("%d",&count);   //输入N的值
    for(int i = 0; i < count;i++)
        scanf("%d",&arr[i]);
        /*最小N的情况*/
    if(count == 1){
        printf("%d ",arr[0]);
        return 0;
    }
    /*只有两个数交换的情况*/
    if(count == 2)
    {
        if(arr[0] > arr[1])
            printf("%d %d ",arr[1],arr[0]);
        else
            printf("%d %d ",arr[0],arr[1]);
        return 0;
    }
    /*循环两次的目的是为了解决 “sample等价,最大值出现在最前 ”的情况*/
    for (int m = 0; m < 2; m++)
    {
        min = arr[0];
       	/*此循环的目的是找出最大值与最小值*/
        for (int i = 0; i < count; i++) 
        { 
        	/* 判断最大值 及 其数组下标 */
            if(arr[i] >= max){
                max = arr[i];
                max_index = i;
            }
            /* 判断最小值 及 其数组下标 */
            if(arr[i] <= min){      
                min = arr[i];
                min_index = i;
            }
        }
        /*将第一位与最小值交换*/
        temp = arr[0];
        arr[0] = arr[min_index];
        arr[min_index] = temp;
		/*将最后一位与最大值交换*/
        temp = arr[count-1];
        arr[count - 1] = arr[max_index];
        arr[max_index] = temp;
    }
    
	/*输出数组*/
    for(int i = 0;i <count;i++){
        printf("%d ",arr[i]);
    } 
    return 0;}

7-95 求整数序列中出现次数最多的数

分数 5
作者 张彤彧
单位 浙江大学
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。

输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。

输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
int main(){
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    sort(a,a+n);
    int sum=0,num=1,t=1;
    for(int i=0;i<n;i++){
        if(a[i]==a[i+1])num++;
        else num=1;
        sum=max(sum,num);
    }
    t=sum-1;
    for(int i=0;i<n;i++){
        if(a[i]==a[i+1]){
            t--;
        }else{
            t=sum-1;
        }
        if(t==0){
            num=a[i];break;
        }
    }cout<<num<<" "<<sum;
    return 0;}

7-96 求矩阵的局部极大值

分数 8
作者 徐镜春
单位 浙江大学
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

输入样例1:
4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1
输出样例1:
9 2 3
5 3 2
5 3 4
输入样例2:
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
输出样例2:
None 3 5

 
 
#include<iostream>
using namespace std;
int main()
{
	int n; int m;
	int arr[20][20];
	cin >> n >> m;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)  //(0 0) (0  1)  (0  2)
									 //(1 0) (1  1)  (1  2)
			cin >> arr[i][j];
	int flag = 0;
	for (int i = 1; i < n - 1; i++)
	{
		for (int j = 1; j < m - 1; j++)
		{
			if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i - 1][j])
			{
				cout << arr[i][j] << " " << i+1 << " " << j+1 << endl;
				flag = 1;
			}
		}
	}
	if (flag == 0)
		cout << "None" <<" " << n << " " << m << endl;
	system("pause");
}

7-97 字符串字母大小写转换

分数 3
作者 颜晖
单位 浙大城市学院
本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。

输入格式:
输入为一个以“#”结束的字符串(不超过30个字符)。

输出格式:
在一行中输出大小写转换后的结果字符串。

输入样例:
Hello World! 123#
输出样例:
hELLO wORLD! 123

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
    char s;
    s=getchar();
    while(s!='#'){
        if(isupper(s))s=s+32;
        else if(islower(s))s=s-32;
        cout<<s;
        s=getchar();
    }
    return 0;}

7-98 输出数组元素

分数 4
作者 颜晖
单位 浙江大学
本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。

输入格式:
输入的第一行给出正整数n(1<n≤10)。随后一行给出n个整数,其间以空格分隔。

输出格式:
顺次计算后项减前项之差,并按每行三个元素的格式输出结果。数字间空一格,行末不得有多余空格。

输入样例:
10
5 1 7 14 6 36 4 28 50 100
输出样例:
-4 6 7
-8 30 -32
24 22 50

#include<bits/stdc++.h>
#include<string.h>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin>>n;
    vector<int>a(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int x=1;
    for(int i=0;i<n-2;i++){
        cout<<a[i+1]-a[i];
        if(x%3==0) cout<<"\n";
        else cout<<" ";
        x++;
    }
    cout<<a[n-1]-a[n-2];
    return 0;
}

7-99 找最长的字符串

分数 6
作者 张泳
单位 浙大城市学院
本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式:
在一行中用以下格式输出最长的字符串:

The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。

输入样例:
5
li
wang
zhang
jin
xiang
输出样例:
The longest is: zhang

# 用python
#By yangbo 2020.07.12
n=int(input())
mx,num=0,""
for i in range(n):
    s=input()
    if len(s)>mx:
        mx=len(s)
        num=s
print("The longest is: %s"%num)

7-100 计算职工工资

分数 5
作者 C课程组
单位 浙江大学
给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。

输入格式:
输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。

输出格式:
按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。

输入样例:
3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80
输出样例:
zhao 565.00
qian 430.00
zhou 630.00

#include<stdio.h>
#define N 1000
struct yuan
{
  char name[11];
  double z1;//如果这里用int型,则显示错误
  double z2;
  double z3;
  double sum;
}ren[N];
int main()
{
  int n,i;
  scanf("%d",&n);
  for(i=0;i<n;i++)
  {
    scanf("%s %lf %lf %lf",ren[i].name,&ren[i].z1,&ren[i].z2,&ren[i].z3);
    ren[i].sum=ren[i].z1+ren[i].z2-ren[i].z3;
  }
  for(i=0;i<n;i++)
  {
       printf("%s %.2lf\n",ren[i].name,ren[i].sum);
  }
  return 0;
}


  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值