第一章部分  C程序设计的初步知识
       
   
一、C语言的构成
(1)源程序由函数构成,每个函数完成相对独立的功能。
(2)每个源程序中必须有且只能有一个主函数,可以放在任何位置,但程序总是从主函数开始执行
(3)函数体:在函数后面用一对花括号括起来的部分。
(4)每个语句以分号结束,但预处理命令、函数头之后不能加分号。
(5)注释:括在“* ”与“ *”之间,没有空格,允许出现在程序的任何位置。
(6)预处理命令:以“#”开头的语句。
二、C程序的生成过程
(1)C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。
(2)源程序的扩展名为.c,目标程序的扩展名为.obj,可执行程序的扩展名为.exe
试题程序
#include <stdlib.h>
#include <stdio.h>
/* ***found*** */
int fun(int n);
{/* ***found*** */
    int i
/* ***found*** */
sum=0;
for(i=1;i<=n;i++)
{
    sum=sum+i;
}
return sum;
}
一、标识符
C语言中,变量名、函数名、数组名等按照一定规则命名的符号称为标识符。
1. 标识符的命名规则
2.标识符的分类
C语言的标识符可以分为3类。
(1)关键字:C语言规定的专用的标识符,它们有着固定的含义,不能更改(见课本附录)。例如int表示变量类型,不能另作它用。
(2)预定义标识符:和“关键字”一样也有特定的含义。包括:
      库函数的名字,如printf
      预处理命令,如define
  这类标识符与关键字的区别是:Cc语言中的逗号表达式语言语法允许用户更改预定义标识符的作用,但将失去
系统规定的含义。建议用户不要更改。
(3)用户标识符:由用户根据需要定义的标识符。一般给变量、函数、数组和文件命名。
1以下选项中不合法的标识符是(  )
A)  &a              B) FOR              C)  print            D)   00
  注意FOR(大小写不同,for为关键字)
二、常量
定义:在程序运行中,其值不能被改变的量。
常量的类型:整型常量、实型常量、字符常量、字符串常量和符号常量。
1. 整型常量
2. 实型常量
3. 字符常量
4.字符串常量
字符串常量是用双撇号括起来的一个或一串字符。例如"china"
5.符号常量
符号常量是由预处理命令“#define”定义的常量,在C程序中可用标识符代表一个常量。其一般定义格式为:#define 标识符常量 
【例3以下选项中,能用作数据常量的是(  )
A)  115L                B)  0118                    C)  1.5e1.5                D)  o115
试题程序:
#include <stdio.h>
/****found****/
#define PI 3.14159;
/****found****/
int fun(int n);
{
/* ***found*** */
PI=3.14159;
return PI*n;
}
三、变量
定义:值可以改变的量。
  变量要有变量名,在使用前必须先定义。在内存中占据一定的存储单元,不同类型的变量其存储单元的大小不同。存储单元里存放的是该变量的值。
变量的类型:整型变量、实型变量、字符变量。
3.字符变量
(1)作用:用来存放字符常量。
(2)定义:用关键字char定义,每个字符变量中只能存放一个字符。
(3)定义形式:char cr1,cr2;
(4)赋值:cr1=’m’cr2=’n’;。
(5)存储方法:存储字符对应的ASCII码到内存单元中。
  字符型数据与整型数据之间可以通用,一个字符能用字符的形式输出,也能用整数的形式输出。
字符数据进行算术运算,相当于对它们的ASCII进行运算。
四、类型的自动转换和强制转换
.类型的自动转换
(1)当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。
(2)转换优先级为:charintfloatdouble,即左边级别“低”的类型向右边转换。
.类型的强制转换
(1)表示形式:(类型)(表达式); 
例如: float x;
int y; 
y=(int)x;
【例1】以下选项中正确的定义语句是(  )
A.double a;b;            B.double a=b=7;            C.double a=7,b=7;        D.double,a,b;
【例2】在C语言中定义了一个变量,该变量代表内存中的一个(  )
A.区域                B.单元                    C. 地址                    D.容量
【例3下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。
例如,若n5,则应输出8.391667
试题程序:
double fun(int n)
{ int a=2,b=1,c,k;
  /****found****/
  int s=0.0;
      for(k=1;k<=n;k++)
      {/****found****/
          s=s+(Double)a/b;
          c=a;a=a+b;b=c;
      }
      return(s);
  }
一、运算符简介(优先级见课本附录C
注意:赋值运算符左侧必须为变量。
二、运算符的结合性和优先级
结合性
所有的单目运算符、条件运算符、赋值运算符及其扩展运算符,结合方向都是从右向左,其余运算符的结合方向是从左向右。
优先级比较
初等运算符>单目运算符>算术运算符(先乘除后加减)>关系运算符>逻辑运算符(不包括“!”)>条件运算符>赋值运算符>逗号运算符
初等运算符包括:圆括号(),下标运算符[]和结构体成员运算符->。
【例1设变量已正确定义并赋值,以下正确的表达式是(  )
A)  xyz5,++y         B)  int(15.8%5)        C)  xy*5xz        D)  x25%5.0
三、逗号运算符和逗号表达式
逗号表达式:用逗号运算符将几个表达式连接起来。
一般形式:表达式1,表达式2,…,表达式n。
求解过程:先求解表达式1,然后依次求解表达式2,直到表达式n的值。表达式n的值就是整个逗号表达式的值。
一、基本的算术运算符
分类:+(加法运算符或正值运算符)、-(减法运算符或负值运算符)、 (乘)、/(除)和%(((求余)。其中,“%”运算的两端必须都是整型,其余的运算对象都可以是整型或者实型。
双目运算符两边的数值类型必须一致才能进行运算,如果不一致,系统先进行一致性转换。例如,一边是整数,另一边是实数,C语言系统将把整数类型转换为实数类型,再运算,结果为实数类型。
二、算术表达式和运算符的优先级与结合性
对于不同优先级的运算符,按运算符的优先级由高到低进行运算,若优先级相同,则按结合方向进行运算。
若运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,然后进行运算。
注意大括号的匹配。
三、自加、自减运算符
1.作用:自加运算符“++”使运算变量的值增1,自减运算符“--”使运算变量的值减1。
2.均是单目运算符。运算对象可以是整型或实型变量,但不可以是常量和表达式
3.均可作为前缀运算符,也可作为后缀运算符构成一个表达式。
  ++i,--i在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参加运算。
  ++,i- -在使用i之后,使i的值加1或者减1,再使用此时的表达式的值参加运算。
【例5以下程序运行后的输出结果是(  )
#include  <stdio.h>
main()
{ int  x y z
  xy1
  zx++y++,++y
  printf("%d,%d,%d\n"xyz)
}
A)  2,3,3            B)  2,3,2            C)  2,3,1            D)  2,2,1
【解析】zx++,y++,++y;因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式表示成(zx++)(y++)(++y)。然后从左向右先计算表达式, zx++,因为x++先使用后自增,所以z的值为1x的值为2。再计算逗号表达式第二个表达式y++,此时y的值为2,最后计算第三个表达式++yy的值为3
一、赋值运算符和赋值表达式
1. “=”称做赋值运算符,作用是将一个数值赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。
2. 一般形式:变量名=表达式。
赋值运算符的优先级别高于逗号运算符。
赋值运算符“=”和等于运算符“==”有很大差别。
赋值运算符的左侧只能是变量,而不能是常量或者表达式。右侧可以是表达式,包括赋值表达式。
规定最左边变量所得到的新值就是整个赋值表达式的值。
二、复合的赋值运算符
在赋值运算符之前加上其他运算符可以构成复合赋值运算符。例如,+ =、- =、 =、/=、% =等。 复合赋值运算符的优先级与赋值运算符的相同。
【例2设有定义:int  x2;,以下表达式中,值不为6的是(  )
A)  2*x,x+=2        B)  x++,2*x        C)  x*(1x)        D)  x*x1(自动加括号)
C语言提供6种位运算符
  按位与“&”:若两个相应的二进制位都为1,则该位的结果为1,否则为0。
  按位或“|”:两个相应的二进制位中只要有一个为1,则该位的结果为1,否则为0。
  按位异或“∧”:若两个二进制位相同,则结果为0,不同则为1。
  按位求反“~”:按位取反,即0变1,1变0。
  左移“<<”:将一个数的二进制位全部左移若干位。
  右移“>>”:将一个数的二进制位全部右移若干位。
说明
位运算中除“~”以外,均为双目运算符,要求两侧各有一个运算量。
运算量只能是整型或字符型数据,不能为实型数据。
【例1设有语句:int a=1b=2
c=a^b<<2);  00000010 左移2位得到  00001000 00000001 异或
执行后,的值为(  )。                                00000001    00001001---9

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。