C程序设计》讲义提纲

成都教育学院

一.       C语言概述

(一)    C语言是编译型的高级语言

C语言解题的步骤:

C编写源程序文件(得到源文件*.C)——编译(得到二进制代码文件*.obj)——连接(得到可执行文件*.exe)——运行(得到结果)。

(二)    C语言的特点

P 2~3    1.~8.

9.要区别大小写字母。

(三)    简单的C程序介绍

1.1

1.2

1.3

[函数类型] 函数名([参数表])

{

   [变量定义]

   [执行部分]

}

int sum(int x,int y)

{

   int z;

   z=x+y; return(z);

}

C程序结构:

函数1()

……

函数i()

……

函数n()

main()

P.6

(四)    Turbo C 2 .0的操作

启动:TC

进入编辑窗口:Alt-E

编译、连接、运行:Ctrl-F9

查看运行结果:Alt-F5

存盘:F2

编辑新程序:Alt-F——New

退出:Alt-X

二.       数据类型、运算符与表达式

(一)    C的数据类型

P38

                   整型

常用基本数据类型   字符型

                   实型(浮点型)

(二)    常量与变量

1.标识符:即文件、变量、常量、数组等对象的名字。只能由字母、数字、下划线三种符号组成且不能以数字开头。

例:合法的标识符:

a,  abc,  a123,  a_1,  _1_2

不合法的标识符:

M.D.John, 123,  #33 3D64 a>b

2.常量

整型常量:例12-3

实型常量:例1.23-3.567e-4-3.567×10-4);

字符常量:以单引号作定界符。例:’A’, ‘*’,’\n’

符号常量:

   定义方法:在函数前面定义,格式:

       #define  标识符 常量值

3.变量

变量就是一个存储单元,其中存储的内容即为变量的值。

   例:a=3;——将存入内存单元a中。

(三)    整型数据

1.整型常量:

  十进制整数。例:-3432

  八进制整数,以0开头。例:0100123

  十六进制整数,以0x开头。例:0xA0x3

2.整型变量:

①基本整型,以int表示,范围-32768~32767

②长整型,以long int(或long)表示,超过int范围时可用long

③无符号整型,以unsigned int(或unsigned)表示,范围0~65535

④无符号长整型,以unsigned long表示,超过unsigned范围时可用unsigned long

3.2

(四)    实型数据

1.实型常量

   小数形式:例:1.23;

   指数形式:例:3.67e5,  1e7

2.实型变量

  单精度浮点型,以float表示,一般有7位有效数字。

  双精度浮点型,以double表示。

3.4

(五)    字符型数据

1.      字符常量,以单引号为定界符。例:’A’ , ‘#’ , ‘0’

2.      转义字符

 3.3

3.      字符变量,以char表示,用于存储一个字符的代码

例:char c1,c2;

c1=’A’;   c2=65;

0~255范围内,字符数据与整型数据可以“通用”。

例:习题3.7, P65

   char c1=’C’;

   c1=c1+4;

4.      字符串常量

以双引号为定界符一串字符,它以’\0’为结束标志字符。

例: ABCDE”,“a

(六)    变量赋初值

在定义变量时同时赋给变量一个值。

例:

    int a,b;

    a=3; b=4;

可以:

    int a=3,b=4;

(七)    算术运算符和算术表达式

1.基本算术运算

+-*/%(求模运算或求余数)

例:7%21

2.强制类型转换

 格式:(类型名)(表达式)

功能:将“表达式”强制转换为“类型名”所规定的类型。

例:float x=4.56;

    (double)x

3.自增/自减运算

格式:++<整型变量><整型变量>++

      --<整型变量><整型变量>--

功能:将整型变量的值增加(减少)1

例:int i=3;

    i++;  (相当于 i=i+1)

说明:加(减)号在前时,先作自增(减)运算,再作其它运算;加(减)号在后时,先作其它运算,再作自增(减)运算。

例:j=i++;  相当于: j=i;  i++;

  j=++i;  则相当于:i++;  j=i;

(八)    赋值运算符和赋值表达式

1.基本的赋值运算

格式:  <变量>=<表达式>

功能:将右边<表达式>的值存储到左边<变量>所代表的内存单元中。

注意:“=”与数学中等号的含义不同。

例:  i=i+1

2.复合的赋值运算符

x=x+a  可写成  x+=a

+=-=*=/=%=

例:a=7;b=4;

    a%=b;  (a=a%b)

3.赋值表达式

赋值表达式的值就是赋值运算后,变量所存的值。

例:

    a=3+(b=4)a=3+4

例:

    a=b=c=3; a=b=3a=3

例:习题3.12(4), 3.12(6):

a=12;

a/=a+a; a/=24;

 

a=12;

a+=a-=a*=a; a+=a-=144;(a的值144) a+=0(a的值0) a的值0

(九)    逗号运算符和逗号表达式

格式:<表达式1><表达式2>

功能:先计算<表达式1>,再计算<表达式2>。最后一个表达式的值即为整个逗号表达式的值。

例:a=(3+47-5)

例:a=3,b=4,c=5;

 

上机要求:

 作业文件名:xx  x   xx   x_x  .c

           年级 学号  题号

例:0021号的1.5题的对应文件名为:

    002011_5.c

三.       顺序结构程序设计

(一)    C语言的语句

1.控制语句

  P 68

2.函数调用语句

   例:  printf();

3.表达式语句

   例:  x=3;  3+4;

4.空语句

   

5.复合语句

  { }括起来的多个语句。当语法限制某处只能写一个语句,但该处需要执行多个语句时,可采用复合语句。

(二)    输入/输出函数

1.字符输出函数

格式:putchar(<字符表达式>)

功能:输出一个字符。

说明:必须在使用该函数的程序前加上如下说明:

   #include <stdio.h>

4.1

2.字符输入函数

格式:getchar()

功能:从标准输入设备输入一个字符。

说明:必须在使用该函数的程序前加上如下说明:

   #include <stdio.h>

返回值:即输入的字符。

例:

   char c;

   c=getchar();

3.格式化输出函数

格式:printf(<格式控制字符串><表达式列表>)

<格式控制字符串>中的普通字符按原样输出,以%开头的格式字符对应<表达式列表>的中表达式的值。

例:

   printf(“a=%d, b=%d\n”,3+7,12);

输出:a=10, b=12

格式字符见P774.1和表4.2

例:习题3.3(1)

  int i=10;

  printf(“%d,   %o,    %x\n”,i,i,i);

4.格式化输入函数

格式:scanf(<格式控制字符串><变量地址列表>)

<格式控制字符串>中的普通字符按原样输入,以%开头的格式字符对应<变量地址列表>的变量地址。

格式字符见P804.3和表4.4

地址用符号&表示。

例:

   int a;

   float x;

   scanf(“%d%f”,&a,&x);

(三)    程序举例

4.10  P83

   算法:

     输入三角形的三边长a,b,c

     计算三角形面积area;

        area=

        其中 s=(a+b+c)/2

     输出面积area;

4.11  P83

   算法:

     输入一个大写字母c1

     将其转换为小写字母;

          c1+=‘a’- ‘A’;

     输出结果;

4.12  P84

   算法:

     输入三个系数a,b,c

     求出两实根;

        

 p=-b/(2a),  q=

         x1=p+q,  x2=p-q

     输出结果;

四.       选择结构程序设计

(一)    关系运算符和关系表达式

1.关系运算符

>>=<<===!=

2.关系表达式

关系表达式的值只有两种:真(用1表示)、假(用0表示)。

例:表达式a=3>5的值为0

(二)    逻辑运算符和逻辑表达式

1.逻辑运算符

与:&&(可以理解为“并且”)

或:| |(可以理解为“或者”)

非:!(可以理解为“取反”)

与——两个运算数同时为真时,结果为真;

或——两个运算数中只要有一个为真时,结果即为真;

非——与运算数的值相反。

例:设a=3b=4,则

   a>2 && b>3 的值为真;

   a>2 && b>5 的值为假。

   a>2 | | b>5 的值为真。

   !a的值为假。

在判断一个表达式的真假时,非0为真,0为假。

例:用一个表达式的真假来表示y年是否闰年。

   y%400==0 || y%4==0 && y%100!=0

 

(三)    if语句

格式:

      if(<表达式>)

         <语句1>

      else

         <语句2>

执行:如果<表达式>为真(非0)则执行<语句1>,否则执行<语句2>

例:苹果1.5/kg5kg以上9折优惠,输入重量,输出应付金额。

算法1

      输入重量w

      if(w>=5)

        金额=1.5*w*0.9;

      else

        金额=1.5*w;

      输出金额。

算法2

      输入重量w

      金额=1.5*w;

      if(w>=5)

        金额*=0.9;

      输出金额。

5.3  P.95

   算法1(嵌套的if语句):

     输入x

     if(x<0)

       y=-1;

     else      /* x不小于0 */

       if(x==0)

         y=0;

       else

         y=1;

 算法2(独立if语句):

     输入x

     if(x<0)

       y=-1;

     if(x==0)

       y=0;

     if(x>0)

       y=1;

5.1  P.93

  算法0:

    输入a,b;

    if(a>b)

      输出 b,a;

    else

      输出 a,b;

  算法1:

    输入a,b;

    if(a>b)

      交换a,b的值;

        { t=a; a=b; b=t;}

    输出a,b;

main()

{

 float a,b,t;

 

 printf("Enter a,b: ");

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

 

 if(a>b)

 {

   t=a; a=b; b=t;

 }

 

 printf("%.2f,%.2f\n",a,b);

}

5.2  P.93

   算法:

      输入a,b,c;

      将最小值存入a;

         if(a>b)

             交换a,b的值;

         if(a>c)

             交换a,c的值;

      剩下两个数用例5.1的算法;

         if(b>c)

             交换b,c的值;

      输出a,b,c;

五.       循环控制结构

(一)    while语句

格式:

    while(<表达式>)

       <语句>

执行:当<表达式>的值为真(非0)时,就重复执行<语句>

例:a=1;

    while(a<=4)

    {
         printf(“%4d”,a);

      a++;

    }

   1   2   3   4

(二)    do-while语句

格式:

    do

      <语句>

    while(<表达式>)

执行:重复执行<语句>直到<表达式>的值为假(非0)。

例:a=1;

    do

    {
         printf(“%4d”,a);

      a++;

    }

    while(a<=4);

   1  2  3  4

例:对比while do-while

a=4;

while(a>5)

   printf(“***”)