C语言程序设计:现代方法(第2版修订版)

第1章 C语言概述

学习C有助于理解C++和C#。

第2章 C语言基本概念

  • int 的最大值一般是 21亿+ ,但有些计算机上是 32767
  • float 一般只能存储实际值的近似值
  • scanf,printf 中的f都是 format的意思

关键字(41个):

  • 数据类型(14个)
    • char
    • short, int, long
    • float, double
    • const
    • enum
    • signed
    • struct
    • typedef
    • union
    • unsigned
    • volatile
  • 控制结构(10个)
    • if, else
    • for, while,do
    • continue,default
    • goto
    • return
    • switch
  • 其他(17个)
    • extern ,register
    • inline
    • restrict
    • sizeof
    • static
    • void
    • _Alignas(C11)
    • _Alignof(C11)
    • _Atomic(C11)
    • _Bool(C99)
    • _Complex(C99)
    • Generic(C11)
    • _Imaginary(C99)
    • _Noreturn(C11)
    • _static_assert(C11)
    • _Thread_local(C11)

字母顺序关键字:

  • auto
  • break
  • case
  • char
  • const
  • continue
  • do
  • double
  • else
  • enum
  • extern
  • float
  • for
  • goto
  • if
  • inline, c99引入,内联函数
  • int
  • long
  • register:声明局部变量的关键字,它建议编译器尽可能将变量存储在CPU的寄存器中,以提高变量的存取速度
  • restrict,c99引入
  • return
  • short
  • signed
  • sizeof
  • static:隐藏、保持变量内容的持久性和默认初始化为0
  • struct
  • switch
  • typedef:为已存在的类型创建一个新的名称
  • union
  • unsigned
  • void
  • volatile
  • _Alignas(C11)
  • _Alignof(C11)
  • _Atomic(C11)
  • _Bool(C99)
  • _Complex(C99)
  • Generic(C11)
  • _Imaginary(C99)
  • _Noreturn(C11)
  • _static_assert(C11)
  • _Thread_local(C11)

练习1:编写一个程序,使用printf在屏幕上显示下面的图形:

       *
      *
     *
*   *
 * *
  *

代码

#include <stdio.h>

int main() {
    int i = -4, j = 8; //i,j 用来控制是否打印星号,i=j的时候只打印i,i和j大于零时打印对应位置的星号
    while (i <= j) {
        for (int k = 0; k <= j; k++) {
            if (k == i) { printf("*"); } else if (k == j) { printf("*\n"); } else { printf(" "); }
        }
        i++;
        j--;
    }
    printf("\n");
    return 0;
}

练习2:编写一个计算球体体积的程序,其中球体半径为10m,参考公式 $v=4/3 \pi r^3$ 。注意,分数4/3应写作4.0f/3.0f。(如果分数写成4/3会产生什么结果?)

#include <stdio.h>
#define PI 3.14159265358979323846

double volume(double r) {
    return (4.0 / 3.0) * PI * r * r * r;
}

int main(void) {
    double r ;
    printf("Enter the radius:\n");
    scanf("%lf", &r);
    printf("the volume is:%f\n", volume(r));
    return 0;
}
/*
Enter the radius:
10
the volume is:4188.790205
*/

第3章 格式化输入/输出

  • printf格式用%m.pX
  • m表示打印的最小宽度,大于该宽度依然会打印出来
  • .p中p为小数位数或有效数字(X为g时)
  • X表示在数据显示前进行的转换操作
    • d:十进制整数
    • e:科学计数法
    • f:十进制浮点数
    • g:显示为指数或者浮点数
#include <stdio.h>

int main() {
    int i=1234567890;
    double d = 123456789.123456789;

    printf("%20d\n", i);
    printf("%-20d\n", i);

    printf("%25.8f\n", d);
    printf("%-25.8f\n", d);

    printf("%25.8g\n", d);
    printf("%-25.8g\n", d);

    return 0;
}
/*
          1234567890
1234567890
       123456789.12345679
123456789.12345679
            1.2345679e+08
1.2345679e+08
*/

不建议用scanf函数,而是读入字符然后转换

正文完
 0
评论(没有评论)