C语言学习笔记

介绍

  • C语言是从B语言发展而来的,B语言是从BCPL发展而 来的,BCPL是从 FORTRAN发展而来的。
  • BCPL和B都支持指针间接方式,所以C也支持了 C语言还受到了PL/I的影响,还和PDP-11的机器语言 有很大的关系。
  • 1973年3月,第三版的Unix上出现了C语言的编译器。
  • 1973年11月,第四版的Unix(System Four)发布了, 这个版本是完全用C语言重新写的。

C的发展与版本-标准

  • 1989年ANSI发布了一个标准——ANSI C
  • 1990年ISO接受了ANSI的标准——C89
  • C的标准在1995年和1999年两次更新—— C95和C99

第一个程序

输出

  • printf("Hello World!'n");
  • “”里面的内容叫做“字符串”,printf会把其中的内 容原封不动地输出
  • \n表示需要在输出的结果后面换一行
#include <stdio.h>
int main()
{
    printf("hello world!n");
    return 0;
}

做计算

  • printi("%din", 23+43);
  • %d说明后面有一个整数要输出在这个位置上
  • printf("23+43=%d\n", 23+43);
#include <stdio.h>
int main()
{
    printf("%d",12+34);
    return 0;
}

变量

  • int price = 0;
  • 这一行,定义了一个变量。变量的名字是 price,类型是int,初始值是0。
  • 变量是一个保存数据的地方,当我们需要 在程序里保存数据时,比如上面的例子中 要记录用户输入的价格,就需要一个变量 来保存它。用一个变量保存了数据,它才 能参加到后面的计算中,比如计算找零。

变量的定义

  • 变量定义的一般形式就是:

    • <型名称><变量名称>;
  • int price;
  • int amount;
  • int price, amount;

变量的名字

  • 变量需要一个名字,变量的名字是一种 “标识符”,意思是它是用来识别这个和那 个的不同的名字。
  • 标识符有标识符的构造规则。基本的原则 是:标识符只能由字母、数字和下划线组 成,数字不可以出现在第一个位置上,C 语言的关键字(有的地方叫它们保留字) 不可以用做标识符。

C语言的保留字

auto,break,case,char,const, continue,default,do,double, else,enum,extern,float,for, goto,if,int,long,register,return, short,signed,sizeof,static, struct,switch,typedef,union, unsigned,void,volatile,while, inline,restrict

赋值与初始化

  • int price = 0;
  • 这一行,定义了一个变量。变量的名字是 price,类型是int,初始值是0。
  • price=0是一个式子,这里的“=”是一个赋 值运算符,表示将“=”右边的值赋给左边 的变量。

赋值

和数学不同,a=b在数学中表示关系,即a 和b的值一样;而在程序设计中,a=b表示 要求计算机做一个动作:将b的值赋给a。 关系是静态的,而动作是动态的。在数学 中,a=b和b=a是等价的,而在程序设计 中,两者的意思完全相反

初始化

当赋值发生在定义变量的时候,就像程序 1中的第7行那样,就是变量的初始化。虽 然C语言并没有强制要求所有的变量都在 定义的地方做初始化,但是所有的变量在 第一次被使用(出现在赋值运算符的右边) 之前被应该赋值一次

读整数 oscanf("%d",&price); 要求scnaf这个函数读入下一个整数,读到 的结果赋值给变量price •小心price前面的&

#include <stdio.h>
int main()
{
    int price = 0;
    printf("请输入金额(元)");
    scanf("%d",&price);
     int change = 100 - price;
     printf("找您%d元n",change); 
    return 0;
}

读整数

  • scanf("%d",&price);
  • 要求scnaf这个函数读入下一个整数,读到 的结果赋值给变量price
  • 小心price前面的&

常量

  • int change = 100 - price;
  • 固定不变的数,是常数。直接写在程序里, 我们称作直接量(literal)。
  • 更好的方式,是定义一个常量: const int AMOUNT = 100;

const

  • const是一个修饰符,加在int的前面,用来 给这个变量加上一个const(不变的)的属 性。这个const的属性表示这个变量的值一 旦初始化,就不能再修改了。

    • int change = AMOUNT - price;
  • 如果你试图对常量做修改,把它放在赋值 运算符的左边,就会被编译器发现,指出为一个错误。
#include <stdio.h>
int main()
{
    int amount =100;
    int price = 0;
    printf("请输入金额(元):");
    scanf("%d",&price);
    printf("请输入票面");
    scanf("%d",&amount);
     int change = amount - price;
     printf("找您%d元n",change); 
    return 0;
}
#include <stdio.h>
int main()
{
    int a;
    int b;
    printf("请输入两个整数:");
    scanf("%d %d",&a,&b);
    printf("%d + %d =%dn",a,b,a + b);
    return 0;
}

浮点数

  • 带小数点的数值。浮点这个词的本意就是 指小数点是浮动的,是计算机内部表达非 整数(包含分数和无理数)的一种方式。 另一种方式叫做定点数,不过在C语言中 你不会遇到定点数。人们借用浮点数这个 词来表达所有的带小数点的数。

double

  • inch是定义为int类型的变量,如果把int换 成double,我们就把它改为double类型的 浮点数变量了。
  • double的意思是“双”,它本来是“双精度浮 点数”的第一个单词,人们用来表示浮点 数类型。除了double,还有float(意思就 是浮点!)表示单精度浮点数。

计算身高

#include <stdio.h> 
int main()
{
    printf("请分别输入身高的英尺和英寸""如输入"5 7"表示5英寸7英寸");
    double foot;
    double inch;
    scanf("%lf %lf",&foot, &inch) ;
     printf("%f米。n",((foot +inch /12) *0.3048 ));
    return 0;
 } 

数据类型

  • 整数

    • int
    • printf("%d",...)
    • scanf("%d",...)
  • 带小数点的数

    • double
    • printf("%f"...) ·
    • scanf("%If",...)

表达式

  • 一个表达式是一系列运算符和算子的组合, 用来计算一个值
  • amount = x (1 + 0.033) + 0.033)(1 + 0.033);
  • total = 57;
  • count= count .+ 1;
  • value= (min / 2) * lastvalue;

运算符

  • 运算符(operator)是指进行运算的动 作,比如加法运算符“+”,减法运算符 “_”。
  • 算子(operand)是指参与运算的值,这 个值可能是常数,也可能是变量,还可能 是一个方法的返回值。

计算时间差

输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差, 也以几小时几分表示。

#include <stdio.h> 
int main()
{
    printf("请输入时间");
    int hour1,minute1;
    int hour2,minute2;
    scanf("%d %d",&hour1,&minute1);
    scanf("%d %d",&hour2,&minute2);
    int t1=hour1*60+minute1;
    int t2=hour2*60+minute2;
    int t=t1-t2;
    printf("时间差是%d小时%d分",t/60,t%60);
    return 0;
 }
  • hourl*60+minutel—>转换为分钟为单位
  • t/60—>小时部分;t%60—>分钟

交换两个变量

  • 如果已经有: int a = 6; int b= 5; 如何交换a、b两个变量的值?
#include <stdio.h> 
int main()
{
int a=5;
int b=6;
int t=a;
    a=b;
    b=t;
    printf("a=%d,b=%dn",a,b);
    return 0;
 } 

参考资料

程序设计入门——C语言\_浙江大学\_中国大学MOOC(慕课) (icourse163.org)

最后修改:2023 年 10 月 21 日
如果觉得我的文章对你有用,请随意赞赏