AcWing语法基础课学习笔记 第一讲 变量、输入输出、表达式与顺序语句

AcWing语法基础课学习笔记

在这里插入图片描述

第一讲 变量、输入输出、表达式与顺序语句
0 AcWing算法系列课

4个Level:

  • 语法基础课:C++在算法竞赛、算法考试中常见语法(非工程)
  • 算法基础课:各种常用算法、代码模板【找工作就没问题了… 🌛 】
  • 算法提高课:应用技巧
  • 算法进阶课:特别难的题【NOI… 🌊 】

【AC Saber 介绍】

在这里插入图片描述

在这里插入图片描述

好好好🗡

语法基础课内容:

在这里插入图片描述

开始吧!

虽然很多东西都会了, 但是毕竟花钱买了,别浪费了

1 第一章 C++入门及简单的顺序结构

编程是一种控制计算机的方式,和我们平时双击打开文件、关机、重启没有任何区别。·

1.1 软件环境
  1. 编译软件的安装与使用

    全部在云端,不用自己搭了

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    新建源文件

    #include<iostream>
    
    using namespace std;
    
    int main(){
        
        cout << "Hello world!" << endl;
        
        return 0;
        
    }
    

    在这里插入图片描述

    保存

    在这里插入图片描述

    在这里插入图片描述

  2. 编译运行

    F10

    在这里插入图片描述

    在这里插入图片描述

C++ 源文件结构:【暂时】

  • 头文件

    • <cstido>:printf、scanf
    • iostream:cout、cin
  • 使用命名空间

    using namespace std;

  • 程序执行入口

    int main(){
    	
    	return 0;
    }
    
1.2 语法基础

【1】变量的定义

变量必须先定义才可以使用,不能重名

常用变量类型及范围:

  • int − 2 31 -2^{31} 231 ~ 2 31 − 1 2^{31} - 1 2311,4byte
  • bool:false 0 和 true 1,1 byte(8 bit)
  • char:字符,1byte
  • float:单精度浮点数,6-7位有效数字,4byte
  • double:双精度浮点数,15-16位有效数字,8byte
  • long long:更长的整数型, − 2 63 -2^{63} 263 ~ 2 63 − 1 2^{63} - 1 2631,8byte
  • long double:更长的double,18-19位有效数字,16 byte

定义格式:

整数:

int a , b = 2, c = b;

// 等价于

int a;
int b = 2;
int c = b;

在这里插入图片描述

【2】输入输出

AcWing 1. A + B

在这里插入图片描述

#include<iostream>

using namespace std;

int main(){
    
    int a,b;
    
    cin >> a >> b;
    
    cout << a + b << endl;
    
    return 0;
}

在这里插入图片描述

  • AC:通过
  • WA:答案错误
  • TLE:超时
  • MLE:超内存
  • SF:数组越界
  • CE:编译错误

printfscanf 输入输出:

int a, b;

scanf("%d%d",&a,&b);

printf("%d %d\n",a + b, a * b);
  • 这个在格式化输入输出时很方便
  • 但是会判断类型
  • coutcin 不会判断类型
  • 【记得】所有能用cin 和 cout 的地方,一定可以用printf、scanf 替换,但是反过来不一定可以【效率问题,printf、scanf 要快一点】

单精度浮点数保留位数:

float a, b;

scanf("%f%f", &a, &b);

printf("a + b = %.1f\na * b = %.2f\n",a + b, a * b);

字符:

scanf("%c%c", &a, &b); // 这种方式会读入空格,但是cin 不会

printf("%c %c\n",a, b);

双精度浮点数输入输出:

double a,b;

scanf("%lf%lf", &a, &b);

printf("%lf %lf", a, b);

long long 类型:

long long a,b;

scanf("%lld%lld", &a, &b);

printf("%lld %lld", a, b);

【3】表达式

整数的加减乘除四则运算:

在这里插入图片描述

整型变量的自增和自减

  • a++a--:先用再加减
  • ++a--a:先加减再用

在这里插入图片描述

还有那种:

  • a = a + 1;a += 1;
  • a = a - 1;a -= 1;

变量的类型转换:

变量之间可以相互赋值

  • 整数到浮点:相当于直接变过去
  • 浮点到整数:下取整
  • int 和 char 之间:ASCII码表
int a = 5;
float b = (float)a;
printf("%f",b); //5.000000

float a = 5.23;
int b = (int)a;
printf("%d",b); // 5

int a = 97;
char b = (char)a;
printf("%c",b); // a

...

当然这都是显式转换。

还有一些隐式的转换关系:【往精度高的转】

  • intfloat/doublefloat/double
  • charintint
  • intlonglong
  • floatdoubledouble

【4】顺序语句

就一直往下走… 每一句代码按编写顺序执行。

AcWing 608. 差

在这里插入图片描述

#include <iostream>

using namespace std;

int main(){
    
    int A, B, C, D;
    
    cin >> A >> B >> C >> D;
    
    cout << "DIFERENCA = " << A * B - C * D << endl;
    
    
    return 0;
}

在这里插入图片描述

AcWing 604. 圆的面积

在这里插入图片描述

百分之99的评测器,会自动过滤掉最后一个回车和每一行结尾的空格

#include <cstdio>

using namespace std;

int main(){
        
    double R,pi = 3.14159,area;
    
    scanf("%lf", &R);
    
    area = pi * R * R;
    
    printf("A=%.4lf",area);
    
    
    return 0;
}

在这里插入图片描述

99% 的情况下,浮点数用double

AcWing 606. 平均数1

在这里插入图片描述

#include <cstdio>

using namespace std;

int main(){
    
    double A, B;
    
    scanf("%lf%lf", &A, &B);
    
    printf("MEDIA = %.5lf", (A * 3.5 + B * 7.5) / 11);
    
    return 0;
}

满权是11

AcWing 609. 工资

#include <cstdio>

int main(){
    
    int number, hour;
    double money;
    
    scanf("%d%d%lf", &number, &hour, &money);
    
    printf("NUMBER = %d\nSALARY = U$ %.2f",number, hour * money);
    
    return 0;
}

AcWing 615. 油耗

#include <cstdio>

int main(){
    
    double x, y;
    
    scanf("%lf%lf", &x, &y);
    
    printf("%.3lf km/l",x / y);
    
    return 0;
}

AcWing 616. 两点间的距离

#include <cstdio>
#include <cmath>

int main(){
    
    double x1, x2, y1, y2;
    
    scanf("%lf%lf%lf%lf",&x1, &y1, &x2, &y2);
    
    printf("%.4lf", sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));
    
    return 0;
}

注意读入数据顺序

AcWing 653. 钞票

#include <cstdio>

int main(){
    
    int n;
    
    scanf("%d", &n);
    printf("%d\n", n);
    
    printf("%d nota(s) de R$ 100,00\n", n / 100);
    n %= 100;
    printf("%d nota(s) de R$ 50,00\n", n / 50);
    n %= 50;
    printf("%d nota(s) de R$ 20,00\n", n / 20);
    n %= 20;
    printf("%d nota(s) de R$ 10,00\n", n / 10);
    n %= 10;
    printf("%d nota(s) de R$ 5,00\n", n / 5);
    n %= 5;
    printf("%d nota(s) de R$ 2,00\n", n / 2);
    n %= 2;
    printf("%d nota(s) de R$ 1,00\n", n / 1);
    n %= 1;
    
    return 0;
}

AcWing 654. 时间转换

#include <cstdio>

int main(){
    
    int n;
    scanf("%d", &n);
    
    printf("%d:%d:%d", n / 3600, n % 3600 / 60, n % 60);
    
    return 0;
}

AcWing 605. 简单乘积

#include <cstdio>

int main(){
    
    int a, b;
    scanf("%d%d",&a, &b);
    
    printf("PROD = %d", a * b);
    
    return 0;
}

AcWing 611. 简单计算

#include <cstdio>
#include <iostream>

using namespace std;

int main(){
    
    double n1, s1, p1;
    double n2 ,s2, p2;
    
    cin >> n1 >> s1 >> p1;
    cin >> n2 >> s2 >> p2;
    
    printf("VALOR A PAGAR: R$ %.2lf", s1 * p1 + s2 * p2);
    
    return 0;
}

两种输入输出可以混用

AcWing 612. 球的体积

#include <cstdio>

int main(){
    
    double r;
    scanf("%lf", &r);
    
    printf("VOLUME = %.3lf", (4 / 3.0) * 3.14159 * r * r * r);
    
    return 0;
}

如果写成4 / 3 就不对了,两个整数算出来还是整数,结果精度会有问题

AcWing 613. 面积

#include <cstdio>

int main(){
    
    double a, b, c;
    
    scanf("%lf%lf%lf", &a, &b, &c);
    
    printf("TRIANGULO: %.3lf\n", a * c / 2);
    printf("CIRCULO: %.3lf\n", 3.14159 * c * c);
    printf("TRAPEZIO: %.3lf\n", (a + b) * c / 2);
    printf("QUADRADO: %.3lf\n", b * b);
    printf("RETANGULO: %.3lf\n", a * b);
    
    return 0;
}

AcWing 607. 平均数2

#include <cstdio>

int main(){
    
    double a,b,c;
    
    scanf("%lf%lf%lf", &a, &b, &c);
    
    printf("MEDIA = %.1lf", (a * 2 + b * 3 + c * 5) / 10);
    
    return 0;
}

AcWing 610. 工资和奖金

#include <cstdio>
#include <string>
#include <iostream>

using namespace std;

int main(){
    
    string name;
    cin >> name;
    
    double x, y;
    cin >> x >> y;
    
    printf("TOTAL = R$ %.2lf", x + y * 0.15);
    
    
    return 0;
}

string 其实在 iostream 也有

AcWing 614. 最大值

#include <cstdio>
#include <iostream>
#include <cmath>

using namespace std;

int main(){
    
    int a, b, c;
    cin >> a >> b >> c;
    
    int tmp = (a + b + abs(a - b)) / 2;
    int res = (tmp + c + abs(tmp - c)) / 2;
    
    printf("%d eh o maior", res);
    
    return 0;
}

当然math 库也在iostream 中有

在这里插入图片描述

这样也能AC

AcWing 617. 距离

#include <cstdio>

int main(){
    
    int l;
    scanf("%d", &l);
    
    printf("%d minutos", 2 * l);
    
    return 0;
}

先把公式求出来,2l 的关系。

60 分钟 30 公里,2 分钟1 公里,所以l 公里,2l 分钟

AcWing 618. 燃料消耗

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
    
    double t,s;
    
    cin >> t >> s;
    
    printf("%.3lf", t * s / 12);
    
    
    return 0;
}

AcWing 656. 钞票和硬币

#include <cstdio>

int main(){
    
    double m;
    scanf("%lf", &m);
    
    int n = m * 100;
    
    printf("NOTAS:\n");
    printf("%d nota(s) de R$ 100.00\n", n  / 10000);
    n = n % 10000;
    printf("%d nota(s) de R$ 50.00\n", n  / 5000);
    n = n % 5000;
    printf("%d nota(s) de R$ 20.00\n", n  / 2000);
    n = n % 2000;
    printf("%d nota(s) de R$ 10.00\n", n  / 1000);
    n = n % 1000;
    printf("%d nota(s) de R$ 5.00\n", n  / 500);
    n = n % 500;
    printf("%d nota(s) de R$ 2.00\n", n  / 200);
    n = n % 200;
    
    printf("MOEDAS:\n");
    printf("%d moeda(s) de R$ 1.00\n", n / 100);
    n = n % 100;
    printf("%d moeda(s) de R$ 0.50\n", n / 50);
    n = n % 50;
    printf("%d moeda(s) de R$ 0.25\n", n / 25);
    n = n % 25;
    printf("%d moeda(s) de R$ 0.10\n", n / 10);
    n = n % 10;
    printf("%d moeda(s) de R$ 0.05\n", n / 5);
    n = n % 5;
    printf("%d moeda(s) de R$ 0.01\n", n / 1);
    n = n % 1;
    
    return 0;
}

需要注意的就是浮点数不能进行整除和取模,转成整数做

AcWing 655. 天数转换

#include <cstdio>

int main(){
    
    int n;
    
    scanf("%d", &n);
    
    printf("%d ano(s)\n%d mes(es)\n%d dia(s)", n / 365, n % 365 / 30, n % 365 % 30);
    
    
    return 0;
}

在这里插入图片描述

OK。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

祝我天天开心,平安健康

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

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

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

打赏作者

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

抵扣说明:

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

余额充值