资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第一章,C,语言程序入门,第一章,C,语言程序入门,目录:,1.1,程序,1.2,程序操作的对象,-,数据,1.3 C,程序的基本操作,1.4,顺序结构的程序,思考题,C,语言程序的构成?,程序中,2,个重要部分、,3,个重要划分?,回顾程序的表达方法?,程序的结构?,程序编写的思路?,1.4.1,程序结构,1 ,预编译命令,2 ,函数,1,程序若干源程序,函数,2,函数名,.,函数 说明部分,.,执行部分,n ,函数,n (,语句,),1.4.2 C,语句,C,语句:以“,;,”作分隔符,编译后产生机器指令.,C,语句分类,表达式语句:表达式加分号构成。,空语句:,;,声明语句:定义变量,声明函数等。,程序控制语句,(9,种):,如,total=total+limit;,a=3;,func,();,printf(“Hello,world!n,”);,if()else,switch,for(),while(),dowhile(),continue,break,goto,return,分支,循环,辅助控制,C,语句块,复合语句:用,括起来的一组语句,一般形式:,数据说明部分;,执行语句部分;,说明:,“,”,后不加分号,语法上和单一语句相同,复合语句可嵌套,格式,赋值表达式,;,即 变量 表达式,;,或,变量,表达式,;,操作,计算表达式的值,将该值赋予变量。,例,a=r*r*3.1415926;,注 赋值语句与赋值表达式的不同概念,例,if(a=b)0)t=a;,其中,a=b,是表达式而不是语句,上句相当于,a=b;,if(a0)t=a;,可见使用了赋值语句能使程序得到简化。,赋值语句,1.4.3,算法的概念与程序结构,利用计算机求解问题的一般过程,(,1,)问题分析阶段,(,2,)数据结构设计阶段,(,3,)算法设计阶段,(,4,)编码与调试阶段,1,、算法概念,算法就是解决某一具体问题的方法和步骤。,从广义上来说,算法早就融于人们的生活中,例如,上学走哪条路、坐哪趟车,如果堵车怎么办等,其中就包含有“算法”。,在计算机中,算法是指为解决具体的问题而采取的确定的方法和步骤,设计好了算法,就可以将它用具体的语言进行描述,最终转化为解决问题的程序。,2,、算法特点,1,)、有穷性:操作步骤有限,2,)、确定性:每一步都应确定,3,)、有零个或多个输入,4,)、有一个或多个输出,5,)、有效性:每一步都能有效执行并得到确定结果,3,、算法描述,1,)、自然语言,2,)、,传统流程图,3,)、,结构化流程图(,NS,),4,)、伪代码:用介于自然语言和计算机语言之间的文字和符号来描述算法。,5,)、用计算机语言表示算法,4,、结构化程序设计方法,一个结构化算法由一些基本结构(顺序、分支、循环)顺序组成的;,每个基本结构又可包含其他的基本结构;,在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本结构之内;,一个非结构化算法可以转化为一个结构化算法;,一个结构化程序就是用高级语言表示的结构化算法,采用以下方法可得到结构化程序:,自顶向下、逐步细化、模块化设计、结构化编码。,在计算机科学的发展过程中,人们已经提出了很多种类的算法描述方法。,一种是,自然语言,的描述方法。鉴于自然语言本身过于灵活且又缺乏严谨性,所以容易产生理解上的歧义。,还有一种算法的图形描述方式,流程图,。它采用一些标准的图形符号描述算法的操作过程,从而避免了人们对非形式化语言的理解差异。,5,、算法描述,起止框,I/O框,处理框,判断框,调用框,连接框,有向边,常用流程图符号,程序的三种基本结构,结构化程序设计,基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(,goto,),结构化程序:由三种基本结构反复嵌套构成的程序叫,优点:结构清晰,易读,提高程序设计质量和效率,三种基本结构,顺序结构,A,B,A,B,流程图,N-S,图,P,A,B,真,假,P,B,A,真,假,选择结构,k,A1,A2,Ai,An,k=k2,k=k1,k=,kn,k=,ki,.,.,二分支选择结构,多分支选择结构,循环结构,当型循环结构,直到型循环结构,P,A,假,真,当,P,为真,A,A,P,真,假,A,直到,P,为真,注:,A,B,A1.An,可以是一个简单语句,也可以是一个基本结构,案例分析,从键盘输入大写字母,用小写字母输出,/*ch3_13.c*/,#include,stdio.h,main(),char c1,c2;,c1=,getchar,();,printf(%c,%dn,c1,c1);,c2=c1+32;,printf(%c,%dn,c2,c2);,输入:,A,输出:,A,65,a,97,算法步骤(文字描述):,1,、输入一个大写字母给变量;,2,、转换为小写字母;,3,、输出小写字母。,流程图描述:,程序描述:,案例分析,输入两个整数给变量,a,、,b,,交换后再输出;,根据给定圆的半径,计算周长和面积;,通过键盘输入一个字符,输出字符的,ASCII,码;,逆序输出一个,3,位正整数的每位数字;,给定,a,b,c,计算一元二次方程的实根;,1.4.4,输入与输出,一般每个程序都要用到数据的输入输出。,数据输入:通过外设将数据输入内存。,数据输出:将内存的数据通过外设输出。,C,语言的输入输出通过,调用函数,实现,这些输入输出函数一般存于,stdio.h,和,io.h(TURBO,C),库文件。使用输入输出函数要用编译预处理命令指出连接的库文件,程序编译连接时将其与用户程序相连。,如:,#include,或,#include,stdio.h,1.4.4.1,基本的输入输出函数,1,、字符的非格式化输入,getchar,(),基本执行过程为:等待用户从标准输入设备,键盘输入一个字符。如果输入成功,函数返回这个字符的,ASCII,编码。,例如:,char,ch,;,ch,=,getchar,();,2,、,字符的非格式化输出,putchar,(),putchar(ch,),,,输出,参数,ch,代表的字符。,案例,1.8,:,通过键盘输入一个字符,分别,在两行上显示这个字符,每行显示,2,次。,#include,main(),char,ch,;/*,定义变量,ch,*/,ch,=,getchar,();/*,通过键盘输入一个字符*,/,putchar(ch,);/*,在屏幕上显示,2,次输入的字符*,/,putchar(ch,);,putchar(n,);/*,在屏幕上显示一个回车换行符*,/,putchar(ch,);/*,继续在屏幕上显示,2,次输入的字符*,/,putchar(ch,);,例题分析,例,#include,main(),char a,b,c;,a=,B,;b=,O,;c=,Y,;,putchar(a);putchar(b);putchar(c,);,输出结果,BOY,例,putchar(n);,输出换行,putchar(101);putchar(A);putchar(65);,输出,AAA,案例,1.9,:从键盘输入一个小写字母,输出该字母的大写。,#,includestdio.h,main(),char c;,printf(input,a char:);,c=,getchar,();,c-=32;,putchar(c,);,putchar(n,);,3,、,格式输入函数,格式,:,scanf,(,“,格式控制串,”,,地址表),功能:按指定格式从键盘读入数据,存入地址表指定的,存储单元中,并按回车键结束,返值:正常,返回输入数据个数,地址表:变量的地址,常用取地址运算符,&,格式字符,:d,i,o,x,u,c,s,f,e,例,scanf(“%d”,&a,);,输入:10,则,a=10,例,scanf(“%x”,&a,);,输入:11,则,a=17,d,i,输入有符号的十进制数,u,输入无符号的十进制数,o,输入无符号的八进制数,x,X,输入无符号的十六进制数,c,输入单个字符,空格、回车、制表符等也作为有效字符输入,s,输入字符串,以非空白字符开始,遇到第一个空白字符(包括空格、回车、制表符)时结束,f,输入实数,小数、指数形式均可,E,e,g,G,与,f,作用相同,附加格式说明符(修饰符),l,修饰符,功 能,h,m,*,用于,d,o,x,前,指定输入为,short,型整数,用于,d,o,x,前,指定输入为,long,型整数,用于,e,f,前,指定输入为,long double,型实数,指定输入数据宽度,遇空格或不可转换字符则结束,抑制符,指定输入项读入后不赋给变量,例,scanf(“%4d%2d%2d”,输入 19991015,则1999,yy,10 mm,15,dd,例,scanf(“%3d%*4d%f”,输入 12345678765.43,则123,k,8765.43f,例,scanf(“%2d,%*3d,%2d”,输入 12,345,67,则12,a,67b,例,scanf(“%3c%2c”,输入,abcde,则,ac1,d c2,输入分隔符的指定,一般以空格、,TAB,或回车键作为分隔符,其它字符做分隔符:格式串中两个格式符间字符,例,scanf(“%d%o%x”,&a,&b,&c,);,printf(“a,=%d,b=%d,c=%dn”,a,b,c);,输入 123 123 123,输出,a=123,b=83,c=291,例,scanf(“%d,:,%d,:,%d”,&h,&m,&s,);,输入 12:30:45,则12,h,30 m,45 s,例,scanf(“%d,%d”,&a,&b,),输入 3,4,则3,a,4 b,例,scanf(“a,=%d,b=%d,c=%d”,输入,a=12,b=24,c=36,说明:,用“%,c”,格式符时,空格和转义字符作为,有效,字符输入,如,scanf(“%c%c%c”,若输入,a,b,c,则,ac1,c2,b c3,输入数据时,遇以下情况认为该数据结束:,遇空格、,TAB,、,或回车,遇宽度结束,遇非法输入,如,scanf(“%d%c%f”,&a,&b,&c,);,若输入1234,a123o.26,则 1234,a,a b,123 c,输入函数留下的“垃圾”:,例,int,x;,char,ch,;,scanf(“%d”,&x,);,ch,=,getchar,();,printf(“x,=%,d,ch,=%,dn”,x,ch,);,执行:123,输出:,x=123,ch=10,例,int,x;,char,ch,;,scanf(“%d”,&x,);,scanf(“%c”,&ch,);,printf(“x,=%,d,ch,=%,dn”,x,ch,);,执行:123,输出:,x=123,ch=10,解决方法:,(,1,)用,getchar,(),清除,(2)用函数,fflush(stdin,),清除全部剩余内容,(3)用格式串中空格或,“,%*,c,”,来,“,吃掉,”,(4),用,%1s,代替,%c,,,因为它完全忽略空格和回车符,例,int,x;,char,ch,;,scanf(“%d”,&x,);,scanf,(“%,c”,&ch,);,或,scanf,(“%*,c%c”,&ch,);,scanf(“%1s”,格式:,printf,(,“,格式控制串,”,,输出表),功能:按指定格式向显示器输出数据,返值:正常,返回输出字节数;出错,返回,EOF(-1),4.,格式输出函数,输出表:要输出的数据(可以没有,多个时以“,”分隔),格式控制串:包含两种信息,格式说明:,%,修饰符,格式字符,,用于指定输出格式,普通字符或转义序列:原样输出,格式字符,例,int,a=3,b=4;,printf(“%d,%dn”,a,b);,printf(“a,=%d,b=%dn”,a,b);,输
展开阅读全文