学习语言最好的方式就是实践,每当掌握一个新功能时,就要立即将这个功能应用到实践中。

    2.1 printf输出格式

    注意:使用printf时最好添加头文件 #include <cstdio>

    1. #include <cstdio>
    2. using namespace std;
    3. int main() {
    4. printf("Hello World!");
    5. return 0;
    6. }

    2.1.1 常见数据类型的输出格式

    • int:%d
    • float: %f, 默认保留 6位小数
    • double: %lf, 默认保留6位小数
    • char: %c, 回车也是一个字符,用'\n'表示
    1. #include <cstdio>
    2. using namespace std;
    3. int main() {
    4. int a = 3;
    5. float b = 3.12345678;
    6. double c = 3.12345678;
    7. char d = 'y';
    8. printf("%d\n", a);
    9. printf("%f\n", b);
    10. printf("%lf\n", c);
    11. printf("%c\n", d);
    12. return 0;
    13. }

    2.1.2 所有输出的变量均可包含在一个字符串中

    1. #include <cstdio>
    2. using namespace std;
    3. int main() {
    4. int a = 3;
    5. float b = 3.12345678;
    6. double c = 3.12345678;
    7. char d = 'y';
    8. printf("int a = %d, float b = %f\ndouble c = %lf, char d = %c\n", a, b, c, d);
    9. return 0;
    10. }

    练习:输入一个字符,用这个字符输出一个菱形:

    1. #include <iostream>
    2. #include <cstdio>
    3. using namespace std;
    4. int main() {
    5. char c;
    6. cin >> c;
    7. printf(" %c\n", c);
    8. printf(" %c%c%c\n", c, c, c);
    9. printf("%c%c%c%c%c\n", c, c, c, c, c);
    10. printf(" %c%c%c\n", c, c, c);
    11. printf(" %c\n", c);
    12. return 0;
    13. }

    练习:输入一个整数,表示时间,单位是秒。输出一个字符串,用”时:分:秒”的形式表示这个时间。

    1. #include <iostream>
    2. #include <cstdio>
    3. using namespace std;
    4. int main() {
    5. int t;
    6. cin >> t;
    7. int hours = t / 3600;
    8. int minutes = t % 3600 / 60;
    9. int seconds = t % 60;
    10. printf("%d:%d:%d\n", hours, minutes, seconds);
    11. return 0;
    12. }

    2.1.3 扩展功能

    (1)float, double等输出保留若干位小数时用:%.4f, %.3lf

    1. #include <cstdio>
    2. using namespace std;
    3. int main() {
    4. float b = 3.12345678;
    5. double c = 3.12345678;
    6. printf("%.4f\n", b);
    7. printf("%.3lf\n", c);
    8. return 0;
    9. }

    (2)最小数字宽度

    a. %8.3f, 表示这个浮点数的最小宽度为8,保留3位小数,当宽度不足时在前面补空格。

    1. #include <cstdio>
    2. using namespace std;
    3. int main() {
    4. int a = 3;
    5. float b = 3.12345678;
    6. double c = 3.12345678;
    7. printf("%5d\n", a);
    8. printf("%8.4f\n", b);
    9. printf("%7.3lf\n", c);
    10. return 0;
    11. }

    b. %-8.3f,表示最小宽度为8,保留3位小数,当宽度不足时在后面补上空格

    1. #include <cstdio>
    2. using namespace std;
    3. int main() {
    4. int a = 3;
    5. float b = 3.12345678;
    6. double c = 3.12345678;
    7. printf("%-5d!\n", a);
    8. printf("%-8.4f!\n", b);
    9. printf("%-7.3lf!\n", c);
    10. return 0;
    11. }

    c. %08.3f, 表示最小宽度为8,保留3位小数,当宽度不足时在前面补上0

    1. #include <cstdio>
    2. using namespace std;
    3. int main() {
    4. int a = 3;
    5. float b = 3.12345678;
    6. double c = 3.12345678;
    7. printf("%05d\n", a);
    8. printf("%08.4f\n", b);
    9. printf("%07.3lf\n", c);
    10. return 0;
    11. }

    二、if 语句

    1. 基本if-else语句
      当条件成立时,执行某些语句;否则执行另一些语句。
    1. #include <iostream>
    2. #include <cstdio>
    3. using namespace std;
    4. int main() {
    5. int a;
    6. cin >> a;
    7. if (a > 5) {
    8. printf("%d is big!\n", a);
    9. printf("%d + 1 = %d\n", a, a + 1);
    10. } else {
    11. printf("%d is small!\n", a);
    12. printf("%d - 1 = %d\n", a, a - 1);
    13. }
    14. return 0;
    15. }

    else 语句可以省略:

    1. #include <iostream>
    2. #include <cstdio>
    3. using namespace std;
    4. int main() {
    5. int a;
    6. cin >> a;
    7. if (a > 5) {
    8. printf("%d is big!\n", a);
    9. printf("%d + 1 = %d\n", a, a + 1);
    10. }
    11. return 0;
    12. }

    当只有一条语句时,大括号可以省略:

    1. #include <iostream>
    2. #include <cstdio>
    3. using namespace std;
    4. int main() {
    5. int a;
    6. cin >> a;
    7. if (a > 5)
    8. printf("%d is big!\n", a);
    9. else
    10. printf("%d is small!\n", a);
    11. return 0;
    12. }

    练习:输入一个整数,输出这个数的绝对值。

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int x;
    5. cin >> x;
    6. if (x > 0) cout << x << endl;
    7. else cout << -x << endl;
    8. return 0;
    9. }

    练习:输入两个整数,输出两个数中较大的那个。

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int a, b;
    5. cin >> a >> b;
    6. if (a > b)
    7. cout << a << endl;
    8. else
    9. cout << b << endl;
    10. return 0;
    11. }

    if-else语句内部也可以是if-else语句。

    练习:输入三个整数,输出三个数中最大的那个。

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int a, b, c;
    5. cin >> a >> b >> c;
    6. if (a > b) {
    7. if (a > c) cout << a << endl;
    8. else cout << c << endl;
    9. } else {
    10. if (b > c) cout << b << endl;
    11. else cout << c << endl;
    12. }
    13. return 0;
    14. }
    1. 常用比较运算符
      (1) 大于>
      (2) 小于 <
      (3) 大于等于 >=
      (4) 小于等于 <=
      (5) 等于 ==
      (6) 不等于 !=
    1. #include <iostream>
    2. #include <cstdio>
    3. using namespace std;
    4. int main() {
    5. int a, b;
    6. cin >> a >> b;
    7. if (a > b) printf("%d > %d\n", a, b);
    8. if (a >= b) printf("%d >= %d\n", a, b);
    9. if (a < b) printf("%d < %d\n", a, b);
    10. if (a <= b) printf("%d <= %d\n", a, b);
    11. if (a == b) printf("%d == %d\n", a, b);
    12. if (a != b) printf("%d != %d\n", a, b);
    13. return 0;
    14. }
    1. if-else连写:
      输入一个0到100之间的分数,
      如果大于等于85,输出A;
      如果大于等于70并且小于85,输出B;
      如果大于等于60并且小于70,输出C;
      如果小于60,输出 D;
    1. #include <iostream>
    2. #include <cstdio>
    3. using namespace std;
    4. int main() {
    5. int s;
    6. cin >> s;
    7. if (s >= 85) {
    8. printf("A");
    9. } else if (s >= 70) {
    10. printf("B");
    11. } else if (s >= 60) {
    12. printf("C");
    13. } else {
    14. printf("D");
    15. }
    16. return 0;
    17. }

    练习:

    1.简单计算器输入两个数,以及一个运算符 + , - , * , / ,输出这两个数运算后的结果。
    当运算符是/,且除数是0时,输出Divided by zero!; 当输入的字符不是 + , - , * , / 时,输出Invalid operator!

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int a, b;
    5. char c;
    6. cin >> a >> b >> c;
    7. if (c == '+') cout << a + b << endl;
    8. else if (c == '-') cout << a - b << endl;
    9. else if (c == '*') cout << a * b << endl;
    10. else if (c == '/') {
    11. if (b != 0) {
    12. cout << a / b << endl;
    13. } else {
    14. cout << "Divided by zero!" << endl;
    15. }
    16. } else {
    17. cout << "Invalid operator!" << endl;
    18. }
    19. return 0;
    20. }

    2.判断闰年。闰年有两种情况:
    (1) 能被100整除时,必须能被400整除;
    (2) 不能被100整除时,被4整除即可。
    输入一个年份,如果是闰年输出yes,否则输出no

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int year;
    5. cin >> year;
    6. if (year % 100 == 0) {
    7. if (year % 400 == 0) cout << "yes" << endl;
    8. else cout << "no" << endl;
    9. } else {
    10. if (year % 4 == 0) cout << "yes" << endl;
    11. else cout << "no" << endl;
    12. }
    13. return 0;
    14. }

    三、条件表达式
    (1) 与 &&
    (2) 或 ||
    (3) 非 !

    例题:输入三个数,输出三个数中的最大值。

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int a, b, c;
    5. cin >> a >> b >> c;
    6. if (a >= b && a >= c) cout << a << endl;
    7. else if (b >= a && b >= c) cout << b << endl;
    8. else cout << c << endl;
    9. return 0;
    10. }

    练习:用一条if语句,判断闰年。

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int year;
    5. cin >> year;
    6. if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
    7. cout << "yes" << endl;
    8. else
    9. cout << "no" << endl;
    10. return 0;
    11. }