C++刷题记(基础)

C++刷题记(基础)

初学一门编程语言的时候,我们不但要掌握大量的知识点,而且最重要的是要融会贯通。最有效、最直接的方式当然是直接刷题,通过大量刷题,牢牢记住知识点并且可以熟练使用。

ps:如果有什么问题,可以在评论区一起讨论哦。

1.圆的面积

题目来源:AcWing
考察浮点数及乘法运算符,因为涉及到结果保留位数的问题,所以我们使用cstdio头文件,使用C语言中printf函数来控制精度,代码如下:

#include<iostream>
#include<cstdio>
#define pi 3.14159//注意此处的define,使用了预编译处理
using namespace std;
int main()
{
    double R;//注意:如果为float单精度,则会造成精度损失
    cin>>R;
    printf("A=%.4f",pi*R*R);
    return 0;
}

2.钞票
题目来源:AcWing
将面值大的钞票分为不同类型的小面值钞票,只需要将大面值钞票整除100、50···1,需要每次整除完保留余数,进行下一次整除。举个例子,如果要将576分为小面值钞票,则576先除以100,商为5余76,然后76除以50,商1余26,以此类推。代码如下:

#include<iostream>
using namespace std;
int main()
{
    int N;
    int a[7]={100,50,20,10,5,2,1};
    cin>>N;
    cout<<N<<endl;
    for(int i=0;i<7;i++)
    {
        cout<<N/a[i]<<" nota(s) de R$ "<<a[i]<<",00"<<endl;
        N%=a[i];//需要区分%和/
    }
    return 0;
}

3.球的体积

题目来源:AcWing
利用所给公式,可以轻松写出代码,但是需要注意π的取值和题目中的隐式数据类型转换,代码如下:

#include<iostream>
#include<cstdio>
#define pi 3.14159//此处为define预编译处理
using namespace std;
int main()
{
    int R;
    cin>>R;
    printf("VOLUME = %.3f",pi*(4.0/3)*R*R*R);//(4.0/3)和(4/3.0)相同,均为隐式转换
    return 0;
}

4. 最大值

题目来源:AcWing
题目要求使用所给max公式求三个数据的最大值,可以先将其中两个使用max公式,再将两数中较大值与第三个数比较,代码如下:

#include<iostream>
#include<cstdio>
#include<cmath>
#define max(a,b) (a+b+abs(a-b))/2//此处为define的函数用法,也可以将所给公式自定义为函数
using namespace std;
int main()
{
    long long x,y,z;
    cin>>x>>y>>z;
    printf("%d eh o maior",max(max(x,y),z));//此处调用两次max函数
    return 0;
}

5.平均数
题目来源:AcWing
求平均数,但要注意为加权平均数,输出时需注意格式,代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    float A,B,C;
    cin>>A>>B>>C;
    printf("MEDIA = %.1f",A*0.2+B*0.3+C*0.5);
    return 0;
}

6.钞票和硬币
题目来源:AcWing
相较于刚刚的钞票问题,引入硬币这一货币,但处理方式相似,只是比普通的钞票问题多一处理一次,我们将钞票和硬币的面值都放进同一数组中,代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    double N;
    cin>>N;
    int M=(int)(N*100);
    int a[12]={10000,5000,2000,1000,500,200,100,50,25,10,5,1};
    cout<<"NOTAS:"<<endl;
    for(int i=0;i<6;i++)
    {
        printf("%d nota(s) de R$ %.2f\n",M/a[i],a[i]*0.01);
        M%=a[i];
    }
    cout<<"MOEDAS:"<<endl;
    for(int j=6;j<12;j++)//注意循环的初始条件
    {
       printf("%d moeda(s) de R$ %.2f\n",M/a[j],a[j]*0.01);
        M%=a[j];
    }
    return 0;
}

7.天数转换
题目来源:AcWing
本题主要考察%和/的用法,使用时注意区分,代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    long N;
    cin>>N;
    cout<<N/365<<" ano(s)"<<endl;
    N%=365;//注意保留余数
    cout<<N/30<<" mes(es)"<<endl;
    cout<<N%30<<" dia(s)";
    return 0;
}

如果有什么问题的话,欢迎在评论区交流讨论!

如果觉得有用的话,请点个赞叭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值