新生赛题解(20210516)

A:计算多项式的值

数字的计算,输入输出即可

#include<stdio.h>
int main(){
    double x,a,b,c,d;
    scanf("%lf%lf%lf%lf%lf%lf",&x,&a,&b,&c,&d);
    double sum=a*(x*x*x)+b*(x*x)+c*x+d;//sum保存结果
    printf("%0.7lf",sum);//%0.7lf输出
    return 0;
}

B:高斯求和

#include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int sum=0;//保存计算结果,初值为 0 
    for(int i=0;i<=n;i++){//循环加到输入的数
        sum+=i;//等价于sum=sum+i;
    }
    cout<<sum;//输出答案
    return 0;
}

C:字符出现位置

#include<iostream>
using namespace std;
char a[1005];//放在main函数上面,不然会出错
int main(){
    int n;
    char c;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];//数组读入数据
    }
    cin>>c;
    for(int i=0;i<n;i++){
        if(a[i]==c){//判断找到了目标字符的情况
            cout<<i;//输出下标
            return 0;//结束程序,程序将不会进行下去
        }
    }
    cout<<-1;//上面循环结束,即表示找不到目标字符,输出 -1
    return 0;
}

D:蒜头君上班

法一:

#include<iostream>
using namespace std;
int main(){
    double x;
    cin>>x;
    //根据题意可以得到一元一次方程    27+23+x/3=x/1.2  ==>  50+x/3=10x/12 ==>600+4x=10x  ==>解的x=100的时走路与骑车一样快,x>100的时候骑车快,x<100的时候走路快
    if(x>100){
        cout<<"Bike";
    }else if(x==100){
        cout<<"All";
    }else{
        cout<<"Walk";
    }
    return 0;
}

法二:

比谁用的时间短,输出即可

#include<iostream>
using namespace std;
int main(){
    int x;
    cin>>x;
    if((23+27+x/3.0)<(x/1.2)){
        cout<<"Bike";
    }else if((23+27+(x/3.0))>(x/1.2)){
        cout<<"Walk";
    }else{
        cout<<"All";
    }
    return 0;
}

E:价钱统计

考虑「四舍六入五留双」与四舍五入之间的差别

#include<iostream>
using namespace std;
int main(){
    double a,b,c,d;
    cin>>a>>b>>c>>d;
    //保留一位小数,操作到小数点后两位
    double a1=(double)((int)(10*(a*1.2+0.05)))/10;//强制转换类型计算
    double b1=(double)((int)(10*(b*3.5+0.05)))/10;
    double c1=(double)((int)(10*(c*4.5+0.05)))/10;
    double d1=(double)((int)(10*(d*5.0+0.05)))/10;
    double sum=a*1.2+b*3.5+c*4.5+d*5.0;
    printf("%0.1f\n",a1);
    printf("%0.1f\n",b1);
    printf("%0.1f\n",c1);
    printf("%0.1f\n",d1);
    printf("%0.1f",(double)((int)(10*(sum+0.05)))/10);
    return 0;
} 

F:字典序

法一

#include<iostream>
#include<string>
using namespace std;
int main(){
    string s,s1;
    cin>>s>>s1;
    int t=s.compare(s1);//若字符串 S 按字典顺序要先于 S1,则返回负值;反之,则返回正值。比较方法为从两个字符串开始比较的位置一个个字符顺序相比ASCII值。
    if(t>0){
        cout<<"NO";
    }
    if(t<0){
        cout<<"YES";
    }
   // cout<<t; 
    return 0;
}

法二

#include<iostream>
#include<string>//c++自带操作string
using namespace std;
int main(){
    string s,s1;
    cin>>s>>s1;//cin读入到空格换行停止
    if(s>s1) cout<<"NO";
    else cout<<"YES";
    return 0;
}

G:矩阵加法

#include<iostream>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;//输入行数和列数
    int a[105][105];//保存输入
    int b[105][105];//保存答案
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>a[i][j];//输入第一个数组
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            int x;
            cin>>x;//第二个数组使用一个变量,一个一个读入
            b[i][j]=x+a[i][j];//两个数组行数和列数相加
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<b[i][j]<<" ";//输出答案
        }
        cout<<endl;//输出换行
    }
    return 0;
}

H:双重循环 归并排序 逆序数

#include<iostream>
using namespace std;
int main(){
    int n;
    int a[1005];//保存输入,根据题意数组尽量开大一点点
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int sum=0;//记录逆序数个数
    for(int i=0;i<n-1;i++){//循环到n-1
        for(int j=i+1;j<n;j++){//j=i+1,保持拿前面与后面比较
            if(a[i]>a[j]){//前面大于后面就加一
                sum++;
            }
        }
    }
    cout<<sum;//输出答案
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

書盡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值