版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章用C语言编写简单程序2.1算法及其描述方法2.2C语言编程使用的字符集
2.3数据类型2.4数据的表示形式—常量与变量2.5人机交互—数据的输入/输出第2章用C语言编写简单程序教学目标理解算法设计基本思想。掌握C语言基本语法。掌握数据类型。掌握常量和变量。 掌握数据的输入与输出。能用C语言编写简单的程序。2.1算法及其描述方法算法的概念算法+数据结构=程序对如何处理数据的描述,也就是算法。对数据的描述,即数据结构。算法、数据结构、程序设计方法和编程语言这四个方面是一个程序员所应具备的知识。2.1.1算法的概念算法就是对解决问题的方法的描述。算法具有以下七个特征:有穷性确切性可行性效率健壮性输入项输出项2.1.2算法的描述方法自然语言自然语言是指人与人交流所使用的语言,如汉语、英语等。使用自然语言描述算法,就是通过语音、文字等方式,把算法所描述的解决问题的步骤形成文档。优势:作者容易表达,读者易于理解。不足:用自然语言描述算法限制了阅读者范围,阅读者需要非常熟悉算法作者所使用的语言才能理解顺畅。2.1.2算法的描述方法伪代码
伪代码是指将自然语言的词和程序设计语言的符号,在不影响理解的前提下,以简写、混写的方式来描述算法。优势:书写方便,易于理解。不足:由于伪代码的种类繁多,语句不容易规范,有时会产生误读。//用伪代码描述“输出x的绝对值”的算法若x为正输出x否则输出-x2.1.2算法的描述方法流程图流程图是一种以图形符号描述算法的结构和控制流程的算法描述方式。优势:算法清晰简洁不足:复杂的算法不易书写,算法长度超过一页时,对结构的描述就很难清晰了。一旦要修改,同时需要改动的地方多,比较麻烦。2.1.2算法的描述方法问题:求解方程6x+5y+4z=50自然语言描述伪代码描述流程图描述2.1.2算法的描述方法问题:求解方程6x+5y+4z=50自然语言描述伪代码描述流程图描述自然语言描述优势:作者容易表达,读者易于理解。不足:用自然语言描述算法限制了阅读者范围;容易产生歧义;描述不简洁。2.1.2算法的描述方法问题:求解方程6x+5y+4z=50自然语言描述伪代码描述流程图描述伪代码描述优势:书写方便,易于理解。不足:伪代码的种类繁多,语句不容易规范,有时会产生误读。2.1.2算法的描述方法问题:求解方程6x+5y+4z=50自然语言描述伪代码描述流程图描述流程图描述优势:算法清晰简洁。不足:复杂的算法不易书写,算法长度超过一页时,对结构的描述就很难清晰了。不易于修改。2.2C语言编程使用的字符集字符集字符在计算机内部的表示标识符2.2.1字符集可用于编写C语言源代码的字符集(均为半角字符)英文字母小写字母a~z共26个,大写字母A~Z共26个。数字0~9共10个数字。
空白符标点、运算符和特殊字符逗号“,”、分号“;”、冒号“:”、问号“?”、单引号,又称单撇号“'”、双引号“"”等汉字只能用于书写要显示的内容和注释内容2.2.2字符在计算机内部的表示字符数据的存储——ASCII码(附录A)值符号值符号值符号0空字符44,91[32空格45-92\33!46.93]34"47/94^35#48~570~9
95-36$58:96`37%59;97~122a~z38&60<123{39'61=124|40(62>125}41)63?126~42*64@127DEL43+65~90A~Z
2.2.3标识符分类1.关键字具有特殊意义,32个见附录B。如int、float、return等。2.预定义标识符编译预备处理命令,如include、define等;系统标准库函数,如scanf、printf、putchar、getchar、strcpy、strcmp、sqrt等。3.用户自定义标识符
用于对用户使用的变量、数组、函数等操作对象进行命名。用户自定义标识符不能与关键字重名;最好不要与预定义标识符重名,否则会改变其原有含义。关键字:32个,是C语言规定的具有特定意义并有专门用途的标识符,用户只能按其预先规定的意义来使用它,不能改变其意义。autoregisterstaticexternvoidcharshortintlongsignedunsignedfloatdoublestructunionenumsizeoftypedefconstifelseswitchcasedefaultdoforwhilegotobreakcontinuereturnvolatile2.2.3标识符2.2.3标识符标准标识符
C语言系统提供了大量的系统函数,如printf()、scanf()等。一些存储各种属性值的系统变量,它们也需要用标识符命名。C语言为其定义了相应的名字,称为标准标识符。编程者自命名的标识符
用来表示变量名、符号常量名、自定义函数名、数组名、类型名等有效字符序列。2.2.3标识符C语言有关标识符的语法规定。C语言标识符有字母、数字、下划线组成,其中第一个字符必须是字母或下划线。C语言的标识符对英文字母的大小写敏感。编程者自定义的标识符,应遵循“简洁明了、含义清晰、见名知义”的原则。例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b
2.3数据类型数据是对客观事物的符号表示。
它是所有能被输入到计算机中,且能被计算机处理的符号(数字、字符等)的集合,它是计算机操作对象的总称。在程序中对各种数据进行处理之前都要对其类型预先进行说明。
1.便于为数据分配相应的存储空间;
2.说明了程序处理数据时应采用何种运算方法(操作)。数据属于不同类别AfricaThequickbrownfoxTRUE非数值数值整型非整型9002.129999/12/20032.175123JackieChan基本数据类型整型:int、longint、shortint浮点型:float、double
字符型char数据类型基本类型构造类型指针类型空类型整型实型(浮点型)字符型char枚举类型数组类型结构体类型共用体类型单精度实型float双精度实型double基本整型int长整型longint短整型shortint无符号整型unsigned长双精度实型longdouble
2.3数据类型6488
整型数据假如编译器为int型数据分配2字节的内存有符号整数:最高位为符号位。
最小值为(1000000000000000)2,即-32768(215)最大值为(01111111111111111)2,即32767(215-1)无符号整数:最高位为数据位。
最小值为(0000000000000000)2,即0最大值为(11111111111111111)2,即65535(216-1)22/50整型取值范围实型数据类型名称数据说明符所占字节数有效位数表数范围单精度实型float47±(3.4*10-38—3.4*1038)双精度实型double816±(1.7*10-308—1.7*10308)字符型数据字符型数据是不具计算能力的文字数据类型,包括:
中文字符
英文字符
数字字符
其他ASCⅡ字符其长度范围是0-255个字符。字符型数据类型的标示符为char。字符型数据在内存中占1个字节。
ASCII表引入数据类型的主要目的有效组织数据,把数据分成所需内存大小不同的
数据规范数据的使用提高程序的可读性方便用户的使用26/50数据类型决定了数据的存储形式合法的取值范围占用内存空间的大小可参与的运算种类
2.3数据类型2.4数据的表示形式—常量与变量2.4.1常量定义:程序运行时其值不能改变的量。分类:整型常量实型常量字符常量转义字符字符串常量符号常量(先不讲)整型常量(整常数)三种形式:十进制整数:由数字0~9和正负号表示。如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示。
如015(13),0177777(65535)256,0392,-0127(不合法)十六进制整数:由0x开头,后跟0~9,a~f,A~F表示。
如0x16(22),0Xffff(65535)5A,0X3H(不合法)例12与12L例30000为int型65536为int型整型常量的类型默认为int类型在整常量后加字母l或L,认为是longint型常量整型常量#include<stdio.h>main(){printf("十进制:%d\n",15);printf("十六进制:%x\n",15);printf("八进制:%o\n",15);}
整型常量实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.1,123.,-3.14指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5
实型常量的类型默认double型在实型常量后加字母f或F,认为是float型e3、3.0e、E-9、10e3.5、.e8、e(不合法)实型常量的区分:末尾加上f或F,表示单精度实型常量。2.3f、-0.123F、2e-3f、-1.5e4F(合法)实型常量字符常量:值由一对单引号
''括起来的单个字符。字符常量的值:该字符的ASCII码值如'A'——65,'a'——97,
'0'——48,
'\n'——10如'a'
'A'
'?'
'\n'
'aa'字符常量#include<stdio.h>main(){printf("%d\n",'A');//把字符A按十进制整数形式输出printf("%c\n",65);//把十进制整数65按字符形式输出printf("%c\n",'A'+3);
//把字符A当成一个整数加3之后的和,按字符形式输出}【例2.2】验证字符可以当成一个整数进行操作。字符常量:值由一对单引号
''括起来的单个字符。字符常量的值:该字符的ASCII码值字符常量#include<stdio.h>main(){printf("\n数字5的整数值=%d",5);printf("\n字符'5'的整数值=%d",'5');}【例2.3】观察输出结果,理解数字字符和数字的区别。转义字符:反斜线后面跟一个字符或一个代码值表示。转义字符含义转义字符含义\n换行\t水平制表\r回车\b退格\a响铃\\反斜线\'单引号\"双引号\ddd1-3位8进制数代表的字符\xhh1-2位16进制数代表的字符转义字符及其含义:转义字符转义字符:反斜线后面跟一个字符或一个代码值表示。转义字符#include<stdio.h>main(){
printf("abc\tde\rf\n");
printf("hijk\tL\bM\n");
printf("yousay\"IloveC\"\n");}【例2.5】转义字符的使用。字符常量与字符串常量不同字符串常量:用双引号(")括起来的字符序列。存储:每个字符串尾自动加一个'\0'
作为字符串结束标志hello\0例:字符串"hello"在内存中a
a\0例
'a'"a"例:空串""\0字符串常量C语言程序处理的数据形式之一变量(variable)其值在程序执行过程中是可以改变的。实质上是计算机在内存中分配的一块用来存储数据的存储空间。每个变量都有一个名称,标识内存中的这个位置,以便
通过变量名读取该位置的数据或存储一个新数值。2.4.2变量2.4.2变量例:inta,b,c;floatdata;决定分配字节数和数的表示范围合法标识符变量的使用:先定义,后使用变量定义位置:一般放在函数开头main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf("data=%f\n",data);}变量定义可执行语句
变量定义的一般格式:
数据类型变量1[,变量2,…,变量n];3.变量的初始化
声明变量的同时为变量赋值(Assignment)——未被初始化的变量的值会是什么?
38/50结果是?
其值为随机数
2.4.2变量例:inta=2,b,c=4;floatdata=3.67;charch='A';intx=1,y=1,z=1;
intx=y=z=1;//错误4.变量的赋值2.4.2变量
变量
=表达式
;
规则:左值和右值类型一致多重赋值(MultipleAssignment)
变量1=
变量2=
表达式
;#include<stdio.h>main(){
intc,f;
//变量的定义,通知系统分配存储空间
f=100;
//变量的赋值,将100存储到f所分配的存储空间中
c=5*(f-32)/9;//计算机会计算=右侧的表达式的值,并将结果存入变量c中
printf("f=%d,c=%d\n",f,c);
//按整数格式输出变量f,c的值}#include<stdio.h>intmain(){shorta,b;a=32767;b=a+2;printf("b=%d\n",b);return0;}
整型数据预测结果为:32769验证结果为:-327672.4.3变量的使用实型数据#include<stdio.h>intmain(){floata;doubleb;a=-12345.633;b=-0.1234567891234567399e15;printf("a=%f,b=%f\n",a,b);return0;}2.4.3变量的使用#include<stdio.h>main(){
printf("char型变量所占字节数为%d\n",sizeof(char));
printf("short型变量所占字节数为%d\n",sizeof(short));
printf("int型变量所占字节数为%d\n",sizeof(int));
printf("long型变量所占字节数为%d\n",sizeof(long));
printf("longlong型变量所占字节数为%d\n",sizeof(longlong));
printf("float型变量所占字节数为%d\n",sizeof(float));
printf("double型变量所占字节数为%d\n",sizeof(double));}【例2.8】C语言常用的基本数据类型所占存储空间大小。2.4.3变量的使用#include<stdio.h>intmain(){
charc;
inti;
shortintm;
longj;
longlongk;
floatx;
doubley;
printf("char型变量所占字节数为%d\n",sizeof(c));
printf("short型变量所占字节数为%d\n",sizeof(m));
printf("int型变量所占字节数为%d\n",sizeof(i));
printf("long型变量所占字节数为%d\n",sizeof(j));
printf("longlong型变量所占字节数为%d\n",sizeof(k));
printf("float型变量所占字节数为%d\n",sizeof(x));
printf("double型变量所占字节数为%d\n",sizeof(y));}【例2.11】显示系统为各种类型的变量所分配的存储空间大小(字节数)。2.4.3变量的使用计算圆柱体底面积、侧面积和体积Description:给定圆柱体的底面半径和高,计算并输出该圆柱体的侧面积、底面积和体积,圆周率为3.14,结果要求保留2位小数。Sampleinput35Sampleoutput94.2028.26141.30符号常量——引入程序符号常量——引入程序#include<stdio.h>intmain(){doubler,h,cmj,dmj,tj;scanf("%lf%lf",&r,&h);cmj=2*3.14*r*h; /*求侧面积*/dmj=3.14*r*r; /*求底面积*/tj=3.14*r*r*h; /*求体积*/printf("%.2f\n%.2f\n%.2f\n",cmj,dmj,tj);return0;}思考如果圆周率取值为3.141呢?如果圆周率取值为3.14159呢?如何设计使得程序能保持统一、便于修改和易于阅读呢?定义常量目的为使程序易于阅读、保持一致和便于修改,可以给程序中经常使用的常量定义一个有一定含义的名字。宏常量格式:#define<常量名><替换文本>
eg:#definePI3.1415计算圆柱体底面积、侧面积和体积/*圆周率用宏常量*/#include<stdio.h>#definePI3.14intmain(void){doubler,h,cmj,dmj,tj;scanf("%lf%lf",&r,&h);cmj=2*PI*r*h; dmj=PI*r*r; tj=PI*r*r*h;printf("%.2f\n",cmj);printf("%.2f\n",dmj);printf("%.2f\n",tj);return0;}定义常量讨论:什么情况下适合使用定义常量?用于具有如下特点的数据:在程序中保持不变在程序内部频繁使用需要用比较简单的方式替代某些值防止意外的修改,增强程序的健壮性
第2章用C语言编写简单程序2.1算法及其描述方法2.2C语言编程使用的字符集
2.3数据类型2.4数据的表示形式—常量与变量2.5
人机交互—数据的输入/输出49预备知识——什么是人机交互?人机交互——数据输入机人交互——结果输出数据输出数据输入scanf()printf()2.5
人机交互—数据的输入/输出2.5.1数据输入/输出的概念
程序要实现的最基本功能;C语言无I/O语句,I/O操作由函数实现scanf()和printf()函数
#include<stdio.h>格式:printf("格式控制字符串"[,待输出的数据列表])功能:按指定格式向显示器输出数据返回值:返回实际输出的字符个数或负数2.5.2格式输出函数printf()(1)格式控制字符串:设置输出数据的格式,包含两种信息
格式控制符:
%[标志][输出最小宽度][.精度][长度]类型字符
用于输出位置占位符和指定输出格式,有且只能有一个。
普通字符或转义序列:指格式控制字符串中没有以%或者\开
头的字符,原样输出。printf("a=%d\n",a);printf("a=%d,b=%d\n",a,b);printf("Hello!Cworld");(2)待输出的数据列表:用于列出要输出的数据,参数个
数与前面的格式控制符的个数相同。可以没有可由常量、变量组成多个时以“,”分隔与格式控制符一一对应printf("a=%d\n",a);printf("a=%d,b=%d\n",a,b);printf("Hello!Cworld");printf("3*5=%d",3*5);2.5.2格式输出函数printf()格式控制符(P61,表2-4)类型字符说明例子输出结果%d十进制带符号整数printf("%d",-20);-20%x十六进制无符号整数printf("%x",255);ff%o八进制无符号整数printf("%o",255);101%c单个字符printf("%c",'a');a%f小数形式浮点数printf("%f",567.789)567.789000标志字符(P62,表2-5)标志字符说明m输出数据域宽,数据长度<m,左补空格;否则按实际输出.n指定小数点后位数(四舍五入)-输出数据左对齐(缺省右对齐)0输出数值时指定左面不使用的空位置自动填0+指定在有符号数的正数前显示正号(+)格式控制串的一般形式和意义%
-
m.n
l
格式类型字符格式说明标志对齐方式:缺省为右对齐,-为左对齐。
宽度.精度(位数),宽度:输出总列数,精度:小数位数(或字符个数)。类型长度,缺省整型,l表示long或double。#include<stdio.h>main(){
inta=88,b=89;
printf("%d%d\n",a,b);
printf("%d,%d\n",a,b);
printf("%c,%c\n",a,b);
printf("a=%d,b=%d",a,b);}2.5.2格式输出函数printf()【例2.15】printf()格式控制符之%d、%c应用举例。#include<stdio.h>main(){
inta=15;
floatb=123.1234567;
doublec=12345678.1234567;
chard='p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%lf,%5.4lf,%.4lf\n",b,b,b,b);
printf("c=%lf,%f,%8.4lf\n",c,c,c);
printf("d=%c,%8c\n",d,d);}2.5.2格式输出函数printf()【例2.16】printf()格式控制符之%d、%f、%c应用举例。2.5.2格式输出函数printf()#include<stdio.h>intmain(){ inta=123,b=1234567; doubled=12345678.9867; printf("%d\n",a); printf("%9d\n",a); printf("%-9d%-9d\n",a,b); printf("%+9d\n",a); printf("%09d\n",b); printf("\n");
printf("%f\n",d); printf("%.2f\n",d); printf("%9.2f\n",d); printf("%20.4f\n",d); return0;}2.5.3格式输入函数scanf()格式:scanf("格式控制字符串",地址列表)功能:按指定数据类型格式从键盘、文件或其他数据源中读入数据,存储到指定地址的的存储空间或文件中。返回值:正常,返回输入数据个数(1)格式控制字符串:格式说明符:%[修饰符]格式字符,指定输入格式普通字符或转义序列:原样输入(2)地址列表:变量的地址,常用取地址运算符&例scanf("%d",&a);
输入:10
则a=10例scanf("%d\n",&a);
scanf("%d",a);scanf格式控制符(P67,表2-6)格式控制符说明例子%d用于输入有符号十进制整数inta;scanf("%d",&a);%u用于输入无符号十进制整数inta;scanf("%u",&a);%o用于输入无符号八进制整数inta;scanf("%o",&a);%x用于输入无符号十六进制整数inta;scanf("%x",&a);%c用于输入单个一个字符chara;scanf("%c",&a);%lf用于输入double双精度浮点数据doublea;scanf("%lf",&a);#include<stdio.h>main(){
inta,b;
scanf("%d",&a);
printf("a=%d\n",a);
scanf("%d%d",&a,&b);
//包含多个格式控制符时如何分隔数据
printf("a=%d,b=%d\n",a,b);
scanf("a=%d,b=%d",&a,&b);
//带普通字符的格式控制字符串
printf("a=%d,b=%d\n",a,b);}scanf()函数常用格式控制符及截取、分隔规则【例2.17】%d格式控制符的使用。scanf()函数常用格式控制符及截取、分隔规则scanf("%d%d",&a,&b)输入3
4
则3a,4bscanf("a=%d,b=%d,c=%d",&a,&b,&c);输入a=12,b=24,c=36(1)%d:输入整数数据时,截取规则:遇空格、TAB、或回车遇宽度结束遇第一个非数字字符(1)%d:输入整数数据时,截取规则:遇空格、TAB、或回车遇宽度结束遇第一个非数字字符scanf()函数常用格式控制符及截取、分隔规则scanf("%4d%2d%2d",&yy,&mm,&dd);输入19991015
则1999yy,10mm,15ddscanf("%3d%*4d%f",&k,&f);输入12345678765.43则123k,8765.43f*表示该输入项,读入后不赋予相应的变量,即跳过该输入值。【例2.18】用%c输入单个字符。
#include<stdio.h>main(){charc1,c2,c3;//为char变量c1、c2分配存储空间scanf("%c",&c1);//接收一个字符并存入变量c1的存储空间printf("%c",c1);scanf("%c%c",&c2,&c3);
//连续输入两个字符,分别存入两个变量printf("%c%c",c2,c3);}(2)%c:接收单个字符,空格和转义字符作为有效字符输入。scanf()函数常用格式控制符及截取、分隔规则scanf("%c%c%c",&c1,&c2,&c3);若输入a
b
c
则ac1,
c2,bc3例intx;charch;scanf("%d",&x);
scanf("%c",&ch);或scanf("%*c%c",&ch);用格式串中空格或“%*c”来“吃掉”(2)%c:接收单个字符,空格和转义字符作为有效字符输入。scanf()函数常用格式控制符及截取、分隔规则(2)%c:接收单个字符,空格和转义字符作为有效字符输入。如scanf("%d%c%f",&a,&b,&c);
若输入1234a123o.26
则1234a,‘a’b,123cscanf()函数常用格式控制符及截取、分隔规则使用scanf()函数的注意事项(1)输入实型数据时不能指定精度。floatf;sc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 研发工程师技术创新评定考核表
- 请提交年度财务报表通知函(7篇)范文
- 供应链管理库存预警系统标准操作手册
- 智慧农业环境监测与数据驱动的解决方案探讨
- 家居生活安全与节能操作指南
- 低压电工理论考试题库(附答案)
- 园林绿化企业驾驶员装卸作业安全操作规程
- 餐饮业店长及后厨团队绩效衡量表
- 2025年娄底涟源市城区学校选调教师真题
- 投资经理业务成果绩效考核表
- 原发性血小板增多症(ET)诊断与治疗指南(2026完整版)
- 2026年四川省考《行政职业能力测验》真题及答案解析
- 2025-2026学年重庆市第一中学八年级(下)期末数学试卷(含答案)
- 2026中国北斗时空产业发展白皮书
- 2026年四川省中职单招真题试卷及答案
- 2026年四川省成都市中考语文真题含答案
- LYT 3463-2026《草原资源资产评估核算技术规范》(纯净版)
- 2026年普通高等学校招生全国统一考试 语文(新高考I卷) 附答案
- 产后常见问题与应对措施
- 小学一年级劳动“清洁与卫生”任务群示范课教案-《我来扫出一片洁净天地》
- 2026年眼科医师定期考核通关练习试题【完整版】附答案详解
评论
0/150
提交评论