项目一“名片设计”趣味程序知识点C程序的组成和基本语法;C程序的编译、链接和运行过程;C语言的格式输入与输出;C语言各基本数据类型的常量表示方法;C语言各基本数据类型变量的定义、初始化及使用的方法;C语言各运算符的优先级以及结合性;C语言表达式的含义及应用。技能点了解C语言的特点、基本语法成分,熟悉C程序的组成;了解C程序的编译及链接过程,熟悉C程序的编译环境;掌握人机交互的方式和C语言标准输入输出函数的正确使用方法;理解C语言各基本数据类型在内存储器中的存储形式;掌握C语言各基本数据类型的常量表示方法以及变量定义方法;掌握C语言各基本数据类型变量的初始化以及各数据类型的运算转换;熟练掌握各种运算符的运算功能,操作数的类型以及运算符的优先级和结合性;较熟练的进行C语言顺序结构的编程。项目描述通过人机交互的方式,询问用户的姓名、职位及用户密字。用户公司为了信息安全,要对密字进行加密,再打印在名片上。公司设置的密字是一个四位的整数,加密规则如下:每位数字都加上5,然后用其和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。通过程序计算出新的用户密字后,打印设计的用户名片。1.1C语言概述1.1.1C语言的发展及主要特点1.C语言的发展史2.C语言的主要特点1.1.2C语言的基本结构1.C程序的实例【案例1-1】一个简单的C语言程序。#includestdio.hvoidmain(){printf(这是我的第一个C语言程序!\n);}这个程序的功能是输出下面一行信息:这是我的第一个C语言程序!1.1.2C语言的基本结构【案例1-2】一个复杂的C语言程序。#includemath.h/*#include称为文件包含命令*/#includestdio.h/*扩展名为.h的文件称为头文件*/voidmain(){doublex,s;/*定义两个实数变量,以被后面程序使用*/printf(inputnumber:\n);/*显示提示信息*/scanf(%lf,&x);/*从键盘获得一个实数x*/s=sin(x);/*求x的正弦,并把它赋给变量s*/printf(sineof%lfis%lf\n,x,s);/*显示程序运算结果*/}运行情况为:inputnumber:1.5↙sineof1.500000is0.9974952.C程序的词汇(1)标识符在程序中使用的变量名、函数名、标号等统称为标识符,用来标识各种程序成分。除库函数的函数名由系统定义外,其余都由用户自定义。C语言规定,标识符只能是由字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。(2)关键字关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。如类型说明符int、double等;语句特征if、switch、while等;预处理命令include、define等。关键字是构成C语言的语法基础,用户定义的标识符不应与关键字相同,也不能对关键字进行重新定义。表1-1中列出了ANSIC标准规定的关键字。2.C程序的词汇(3)运算符C语言中含有相当丰富的运算符。运算符与变量、函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成。根据参加运算对象的个数,运算符可分为单目运算符、双目运算符和三目运算符。(4)分隔符C语言中的分隔符有逗号和空白两种,逗号主要用在类型说明和函数参数表中,分隔各个变量。空白包括:空格符、制表符、换行符,其多用于语句各单词之间,作间隔符。在关键字、标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误。例如把“inta;”,写成“inta;”,C编译器会把“inta”当成一个标识符处理,其结果必然出错。2.C程序的词汇(5)常量C语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。在后面章节中将专门给予介绍。(6)注释注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。注释用来向用户提示或解释程序的意义。在调试程序时对暂不使用的语句也可用注释符括起来,使编译跳过不作处理,待调试结束后再去掉注释符。1.1.3C程序的开发过程1.编辑编辑就是建立、修改C语言源程序并把它输入计算机的过程。C语言的源文件以文本文件的形式存储在磁盘上,它的后缀名为.C。2.编译C语言是以编译方式实现的高级语言,C程序的实现必须经过编译程序对源文件进行编译,生成目标代码文件,它的后缀名为.obj。3.连接编译形成的目标代码还不能在计算机上直接运行,必须将其与库文件进行连接处理,这个过程由连接程序自动进行,连接后生成可执行文件,它的后缀名为.exe。4.运行一个C源程序经过编译、连接后生成了可执行文件。要运行这个程序文件,可通过编译系统下的运行功能,也可以在DOS系统的命令行输入文件名后再按“Enter”确定,或者在Window系统上双击该文件名。1.2C语言的数据类型1.2.1C语言具有的数据类型1.2.2常量及其类型1.整型常量整型常量可以用十进制、八进制和十六进制来表示。(1)十进制整型常量由0至9的数字组成,没有前缀,不能以0开始,没有小数部分。有正负之分。例如:134,-77,65535。(2)八进制整型常量,以0为前缀,其后由0到7的数字组成,没有小数部分,不能带符号。例如:0332,0122,010。(3)十六进制整型常量,用0x或0X为前缀,其后由0到9的数字和A到F(大小写均可)字母组成,没有小数部分,不能带符号。例如:0x3A,0x43f,0X91E1。1.2.2常量及其类型2.浮点型常量浮点型常量是由整数部分和小数部分组成的,只有十进制表示。浮点型常量有两种表示方式:一种是小数表示法,它由整数部分和小数部分组成的。例如:.123、123.、123.0、0.0。另一种方法是指数表示法,它常用来表示很大或很小的数,表示方法是在小数表示法后加e(E)及指数部分。但要注意,e(E)前面必须有数字,指数部分可正可负,但都是整数。例如:3.2E-4、4e7。把其中的4.56789e2称为“规范化的指数形式”,即“科学计数法”。也就是在字母“e”或“E”之前的小数部分中,小数点左边应有一位,且只有一位非零的数字。1.2.2常量及其类型3.字符型常量字符型常量是用单括号括起来的一个字符,在内存中占1个字节。C语言中的字符可由下列字符组成:(1)大小写英文字母a~z,A~Z(2)数字字符0~9(3)特殊符号空格!#%^&*_-+=~/\|.,;?'”()[]{}表1-2常用的特殊转义字符字符形式ASCII码功能\a0x07响铃\n0x0a换行\t0x09横向制表符\v0x0b竖向跳格\b0x08退格\r0x0d回车\\0x5c字符\\”0x22字符”\’0x27字符’\ddd八进制表示任意字符\xhh十六进制表示任意字符1.2.3变量及其类型1.整型变量(1)基本型:类型说明符为int,在内存中占2个字节。(2)短整型:类型说明符为shortint或short。所占字节和取值范围均与基本型相同。(3)长整型:类型说明符为longint或long,在内存中占4个字节。(4)无符号型:类型说明符为unsigned。无符号型又可与上述三种类型匹配而构成:①无符号基本型:类型说明符为unsignedint或unsigned。②无符号短整型:类型说明符为unsignedshort。无符号长整型:类型说明符为unsignedlong。1.整型变量【案例1-3】整型变量的定义与使用。#includestdio.hvoidmain(){inta,b,c,d;//指定a,b,c,d为整型变量unsignedu;//指定u为无符号整型变量a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%d\n,c,d);}程序的运行情况如下:a+u=22,b+u=-142.实型变量实型变量分为:单精度(float型)、双精度(double型)和长双精度(longdouble型)三类。【案例1-4】实型变量的定义与使用。#includestdio.hvoidmain(){floata;doubleb;a=33333.33333;b=33333.33333333333333;printf(%f\n%f\n,a,b);}程序的运行情况如下:33333.33203133333.3333333.字符型变量【案例1-5】大小写的转换。#includestdio.hvoidmain(){chara,b;a='M';b='d';printf(a变量原来的值是:%c\nb变量原来的值是:%c\n,a,b);printf(a变量原来对应的整数是:%d\nb变量原来对应的整数是:%d\n,a,b);a=a+32;b=b-32;printf(a变量转换成小写为:%c\nb变量转换成大写为:%c\n,a,b);printf(a变量现在对应的整数是:%d\nb变量现在对应的整数是:%d\n,a,b);}程序的运行情况如下:a变量原来的值是:Mb变量原来的值是:da变量原来对应的整数是:77b变量原来对应的整数是:100a变量转换成小写为:mb变量转换成大写为:Da变量现在对应的整数是:109b变量现在对应的整数是:684.字符串变量一维数组的定义方式为:类型说明符数组名[常量表达式];其中:类型说明符是任一种基本数据类型或构造数据类型,数组名是用户定义的数组标识符,方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:charch[20];//说明字符数组ch,有20个元素。1.3运算符与表达式优先级运算符种类运算符操作数结合性1括号(函数调用)、下标及分量运算符()、[]、-、.从左至右2逻辑非运算符!单目运算从右至左按位取反运算符~自增、自减运算符++、--符号运算符+、-指针、取地址运算符*、&求字节数(长度)运算符Sizeof强制类型转转换运算符(类型)3算术乘、除、求余运算符*、/、%双目运算从左至右4算术加、减运算符+、-双目运算从左至右5按位左移、按位右移运算符、双目运算从左至右6关系运算符、、、=、=双目运算从左至右7关系等于、关系不等于运算符==、!=双目运算从左至右8按位与运算符&双目运算从左至右9按位异或运算符^双目运算从左至右10按位或运算符|双目运算从左至右11逻辑与运算符&&双目运算从左至右12逻辑或运算符||双目运算从左至右13条件运算符?:三目运算从右至左14赋值运算符=及其扩展赋值运算符双目运算从右至左15逗号运算符,1.3.2算术运算符及表达式1.基本算术运算符(1)加法运算符“+”:加法运算符为双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有右结合性。(2)减法运算符“-”:减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。(3)乘法运算符“*”:双目运算,具有左结合性。(4)除法运算符“/”:双目运算具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。(5)求余运算符(模运算符)“%”:双目运算,具有左结合性。要求参与运算的量均为整型。求余运算的结果等于两数相除后的余数。例如:100%3(100除以3所得的余数,即为1)100%4(100除以4所得的余数,即为0)2.自加、自减运算符自加运算符记为“++”,其功能是使变量的值自增1。自减运算符记为“--”,其功能是使变量的值自减1。自加、自减表达式的一般形式为:±±变量名或变量名±±故可有以下几种具体形式:++ii自增1后再参与其它运算(先自增,再运算,称为前置运算)。--ii自减1后再参与其它运算(先自减,再运算,称为前置运算)。i++i参与运算后,i的值再自增1(先运算,再自增,称为后置运算)。i--i参与运算后,i的值再