首页 百科知识 语言的基本

语言的基本

时间:2022-09-18 百科知识 版权反馈
【摘要】:即使是程序的最后一个语句也不例外。分号是语句结束的标志。. C语言的注释必须放在“/*”和“*/”之间,“/”和“*”之间不允许有空格。.C语言程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。不论位于变量名前还是变量名后,只要进行了自增、自减运算,变量的值都会在原来的基础上加1或减1。

教学讲点 

1. C语言的基本构成和格式 #include “stdio.h” main() 

int a,b,sum;/* 定义变量*/ 

a=10;     /*把整数10赋值给变量a*/    

b=20;     /*把整数20赋值给变量b*/    

sum=a+b; /*把两数之和赋值给变量 sum*/ 

printf(“a=%d,b=%d,sum=%d\n”,a,b,sum);/*输出计算结果*/ } 

(1).C程序由函数组成,一个程序必须且只能有一个主函数(main()),C程序总是从主函数开始执行,在主函数中结束。 

(2).定义函数时函数名后必须有一对小括号,函数体必须放在一对花括号内,在函数体中,函数体有两个部分:定义部分和执行部分。定义语句必须出现在执行语句之前,我们先定义了a,b,sum,然后才给它们赋值。

(3).C语言中每条语句都以分号“;”结束,分号时C语句的一部分。即使是程序的最后一个语句也不例外。分号是语句结束的标志。 

(4). 一行可以写多条语句,一条语句也可以分在多行上写,但是,不能将一个整体分开。 

  例如:i nt 是错误的,而int正确。 

(5). C语言的注释必须放在“/*”和“*/”之间,“/”和“*”之间不允许有空格。“/*”和“*/”之间不允许再插入“/*”或“*/”。注释可以出现在程序中的任意位置。注释部分不被执行。 

(6).C语言程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。但是过于“自由”的程序书写格式往往使人们很难读懂程序,初学者应该从一开始就养成好的习惯,是程序便于阅读。  

2. 标识符 

(1) 标识符只能由字母、数字和下划线组成。 (2) 标识符的第一个字符必须是字母或下划线。 

(3) 标识符的大小写字母是有区别的,如abc和ABC是两个完全不

同的标识符。   (3) 标识符的分类: 

关键字:关键字是具有特定的含义的、专门用来说明C语言特定成分的一类标识符。详细的查阅附录二。 

预定义标识符:在C语言中它也有特定的含义。预定义标识符可以用位“用户表标识符”使用,只是这将使这些标识符失去了原来的意义。 

用户标识符:由用户根据需要定义的标识符被成为用户标识符。用户标示符用来给变量、函数、数组或者指针等命名。  

3. C语言的数据类型 

3.1数据可以分为常量和变量。常量是指在程序执行中不变的量,常量

分为:整型常数、实型常数、字符常量、字符串常量。 

整型数据: 进制间的转换  

3.11.二、八、十六进制转为十进制 规则:“按权相加”  

3.12.十进制转为二、八、十六进制 规则: 

整数部分:基数除取余,逆序排列 小数部分:基数乘取整,顺序排列 

 

3.13.二进制转为八、十六进制 

规则:三(四)合一,按序相拼(整数部分,从右向左取,小数部分从左向右取,位数不足补零)。  

3.14.八、十六进制转为二进制 规则:一分三(四),按序相拼 

 

3.2整型数据在内存中的存放形式 

1字节=8位,1Byte=8bit 

字长:指CPU能同时处理的二进制位数。由CPU的型号而定。如:16位微机的字长就是16位或2字节。 

1GB=1024MB,1MB=1024KB,1KB=1024B 

B:表示字节,字节是表示存储容量的最小单位。位(bit):是计算机中信息表示的最小单位。  

3.21.正整数在内存中用“原码”形式存放。(直接转换为二进制即可)。 如:5  

0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 二字节能存放的最大数是:32767 

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 

对带符号数,最高位是符号位,用0表示正,用1表示负。  

3.22.负整数在内存中用“补码”形式存放。 取补码的步骤: 

(1)忽略负号,求出原码。 

(2)将原码按位取反(0 、1 互换)。 (3)在第二步的基础上加1。 

如:取-5的补码。 

(1) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 

(2) 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 

(3) 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 

将补码转换成相应的整数的步骤: 

(1)将补码按位取反加1。 

(2)将步骤1得到的二进制数转换成十进制数,然后加上负号即可。 

例如: 

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 按位取反加1 

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 

+1  1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

转换成十进制:1×215=32768  加负号:-32768 

几个特殊的带符号整数: 1000000000000000   

-32768 0111111111111111     32767 1111111111111111     -1  

3.23.无符号整数:只有正整数,没有负整数,最高位不表示符号位,每一位均参与转换。 二进制 带符号整数 无符号整数 1111111111111111 -1 65535 1000000000000000 -32768 32768 

例2-12:若有:int a=-1; unsigned b=65535;则 

printf(“%d,%u,%d,%u”,a,a,b,b);  输出结果是:-1,65535,-1,65535 数据益出问题: 

例2-13:若有int a=32767;则a=a+1的结果是: -32768 

例2-14:若有unsigned b=65536;则b的值是:0 分析:32767:01111111111111111                 +1 100000000000000 

将100000000000000按照带符号数转为十进制为-32768 65535:1111111111111111 +1 

11111111 11111111 +1 

1 00000000 00000000 65536 

unsigned b=655536;而b属于无符号整型,在内存中只占两字节,所以只能包括16位。  

3.3实型数据(浮点数) 

3.31.实型常量 

(1)小数形式:由数字和小数点组成,必须有小数点,小数点的某一侧可以没有数字。如:.23 ,123.876 ,123.  

(2)指数形式:用“e”或“E”后接一个整数,表示以10为底的幂数。 

注意: “e”或“E”之前之后必须有数字,且之后的数字必须是整数。他们和前后的数字之间不能有空格。 例如: 

例2-15:下列合法的常量是( )。 

A.-32169    B.0128  C.0XDEFG  D.13E0.5 例2-16:下列合法的实型常量是(  )。 

(A) 0Xff  (B)124E  (C) 1.23E5.0  (D) 3.E2  (E) 1.25E+2  (F).23e+02   3.32.实型变量 

单精度型 float 占 4 字节 双精度型 double 占 8 字节 

长双精度 long double 占 16字节(较少用)   

4. 表达式与运算符 

4.1算术运算符及其表达式:+  -  *  /  % %:(求余运算) 注意: 

(1)%两边必须是整型数据。12.0%3 表达式是错误的。 

(2)求余(%)的方法是:忽略符号,求出余数,再将所得余数的符号定为与被除数相同。 

 例如:17%3 结果是:2 

17%-3 结果是:2,-17%3 结果是:-2,-17%-3 结果是:-2 

 

4.2强制类型转换 强制类型表达式:(类型名)表达式 

注意:类型名(表达式)这种形式是C++的强制类型表达方式。 

 

5.赋值运算符及其表达式 

5.1.赋值运算符 = 

 格式:变量名=表达式 

功能:将表达式的值赋给左边的变量。 注: 

(1)赋值运算符左边只能是一个变量,不能是常量,也不能是表达式。 a+b=3    4=3 是非法的表达式 a=6  a+(b=3) 都是合法的表达式 

a=b=20  a=(b=10)/(c=2) 都是合法的表达式 

(2)实型数据赋给整型变量时,小数部分被舍去,整型数据赋给实型变量时,系统自动将整型数据转换为实型数据。 例如:float a; int b; 

表达式a=10%3 的值是1.0 表达式b=a=10%3的值是1  

5.2.复合赋值运算符及其表达式:

+= -=  *=  /=  %=  &=  |=  ^=  >>=  <<= 

例如:a+=3 相当于a=a+3,a/=b+4 相当a/=(b+4) 或a=a/(b+4) 例:若a=12,则执行表达式a+=a-=a+a后a的值是多少? 分析:a+=a-=(a+a)  /*a的值是12*/ a+=a-=24    /*a的值是12*/ a+=a=a-24   /*a的值是12*/ a+=a=-12    /*a的值是12*/ a+=-12      /*a的值是-12*/ a=a+(-12)    /*a的值是-12*/ a=-24       /*a的值是-24*/ 

5.3.自增、自减运算符及其表达式 

++   --  注意: 

(1)只能用于变量,不能用于常量和表达式。 如:6++ (a+b)-- 都是错误的。 

(2)当它们用于变量名前时,表达式的值为变量的值加一或减一。当位于变量名后时,表达式的值为变量原来的值。不论位于变量名前还是变量名后,只要进行了自增、自减运算,变量的值都会在原来的基础上加1或减1。 如:a=3 则 a++ 表达式的值是3 运算之后变量的值是 4 a=3 则 ++a 表达式的值是 4之后变量的值是 4 a=3 则 a-- 表达式的值是3 之后变量的值是 2 a=3 则 --a 表达式的值是2 之后变量的值是 2  

(3)口诀: 

   j=i++;这个表达式是先引用后增值。即:先把i的初始值给变量j,然后 i再自加1。 

   j=++i;这歌表达式是先增值后引用。即:i先自加1,然后再将我们自加后的值赋值给变量 j。 

   但是记住它们是一起执行的,就是说:例如j=i++先引用后增值实际上是一起执行的,它们之间不存在先后关系,我们只是位了好记才用到了上面的方法。老师在上课的时候先不要说,但是你们必须知道。j=i--,j=--i和上面j=i++,j=++i的方法是一样。  

5.4逗号运算符及其表达式 

1.格式:表达式1,表达式2,…,表达式n 

注意:1.逗号表达式的值是整个逗号表达式中最后一个表达式的值。 2.求值顺序是从左到右依次求解。 

例如:a=(3,b=1)的值是1 运算结束后a的值是1, b的值是 1。        

四. 相关试题  

1.2008年4月相关试题 

(11)以下叙述中正确的是  

A)C程序中的注释只能出现在程序的开始位置和语句的后面  B)C程序书写格式严格,要求一行内只能写一个语句  C)C程序书写格式自由,一个语句可以写在多行上  D)用C语言编写的程序只能放在一个程序文件中  (12)以下选项中不合法的标识符是  A)print B)FOR C)&a D)_00  

(13)以下选项中不属于字符常量的是  A) 'C'  B) "C"  C)'\xCC0'  D) '\072'  

(14)设变量已正确定义并赋值,以下正确的表达式是  A)x=y*5=x+z B)int(15.8%5)  C)x=y+z+5,++y D)x=25%5.0   

填空(7)设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【7】。 

2.2007年9月相关试题 

(11)C语言源程序名的后缀是  A).exe   B).C   C).obj   D).cp 

(12)可在C程序中用作用户标识符的一组标识符是  A) and   B) Date   C) Hi   D) case   

(13)以下选项中,合法的一组C语言数值常量是  A) 028   B) 12.   C) .177   D) 0x8A 

(14)以下叙述中正确的是   

A)C语言程序将从源程序中第一个函数开始执行  

B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行  

C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束  

D)main可作为用户标识符,用以命名任意一个函数作为主函数 

(16)以下关于long、int和short类型数据占用内存大小的叙述中正确的是  

A)均占4个字节     B)根据数据的大小来决定所占内存的字节数  

C)由用户自己定义    D)由C语言编译系统决定 

(17)若变量均已正确定义并赋值,以下合法的C语言赋值语句是  

A)x=y==5;  B)x=n%2.5;  C)x+n=i;  D)x=5=4+1;  

3.2007年4月相关考题 

(12)下列叙述中错误的是(D ) 

A)计算机不能直接执行用C语言编写的源程序 

B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件 C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行  

(13)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B ) 

A)大写字母   B)连接符   C)数字字符   D)下划线  (14)以下叙述中错误的是(C ) A)C语言是一种结构化程序设计语言 

B)结构化程序有顺序、分支、循环三种基本结构组成 C)使用三种基本结构构成的程序只能解决简单问题 D)结构化程序设计提倡模块化的设计方法  

(15)对于一个正常运行的C程序,以下叙述中正确的是(A) A)程序的执行总是从main函数开始,在main函数结束 

B)程序的执行总是从程序的第一个函数开始,在main函数结束 

C)程序的执行总是从main函数开始,在程序的最后一个函数中结束 

D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束  (19)有以下程序,其中%u表示按无符号整数输出(B ) main() 

{unsigned int x=0xFFFF;   /* x的初值为十六进制数 */         

printf(“%u\n”,x); }/*注意:x是占两个字节*/ 程序运行后的输出结果是 

A)-1      B)65535     C)32767   D)0xFFFF 

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈