《C语言程序入门.pptx》由会员分享,可在线阅读,更多相关《C语言程序入门.pptx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、思考题C语言程序的构成?程序中2个重要部分、3个重要划分?回顾程序的表达方法?程序的结构?程序编写的思路?第1页/共38页1.4.1 程序结构 1 预编译命令 2 函数1 程序若干源程序 函数2 函数名 .函数 说明部分 .执行部分 n 函数n (语句)第2页/共38页1.4.2 C语句C语句:以“;”作分隔符,编译后产生机器指令.C语句分类表达式语句:表达式加分号构成。空语句:;声明语句:定义变量,声明函数等。程序控制语句(9种):如total=total+limit;a=3;func();printf(“Hello,world!n”);if()elseswitchfor()while()d
2、owhile()continuebreakgotoreturn分支循环辅助控制第3页/共38页C语句块复合语句:用 括起来的一组语句一般形式:数据说明部分;执行语句部分;说明:“”后不加分号语法上和单一语句相同复合语句可嵌套第4页/共38页格式赋值表达式;即变量表达式;或变量表达式;操作计算表达式的值,将该值赋予变量。例a=r*r*3.1415926;注注 赋值语句与赋值表达式的不同概念赋值语句与赋值表达式的不同概念例if(a=b)0)t=a;其中a=b是表达式而不是语句上句相当于a=b;if(a0)t=a;可见使用了赋值语句能使程序得到简化。赋值语句第5页/共38页1.4.3 1.4.3 算
3、法的概念与程序结构利用计算机求解问题的一般过程(1)问题分析阶段(2)数据结构设计阶段(3)算法设计阶段(4)编码与调试阶段 第6页/共38页1、算法概念算法就是解决某一具体问题的方法和步骤。从广义上来说,算法早就融于人们的生活中,例如,上学走哪条路、坐哪趟车,如果堵车怎么办等,其中就包含有“算法”。在计算机中,算法是指为解决具体的问题而采取的确定的方法和步骤,设计好了算法,就可以将它用具体的语言进行描述,最终转化为解决问题的程序。第7页/共38页2、算法特点1)、有穷性:操作步骤有限2)、确定性:每一步都应确定3)、有零个或多个输入4)、有一个或多个输出5)、有效性:每一步都能有效执行并得到
4、确定结果第8页/共38页3、算法描述1)、自然语言2)、传统流程图3)、结构化流程图(NS)4)、伪代码:用介于自然语言和计算机语言之间的文字和符号来描述算法。5)、用计算机语言表示算法第9页/共38页4、结构化程序设计方法一个结构化算法由一些基本结构(顺序、分支、循环)顺序组成的;每个基本结构又可包含其他的基本结构;在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本结构之内;一个非结构化算法可以转化为一个结构化算法;一个结构化程序就是用高级语言表示的结构化算法采用以下方法可得到结构化程序:自顶向下、逐步细化、模块化设计、结构化编码。第10页/共38页 在计算机科学的发展过程中,
5、人们已经提出了很多种类的算法描述方法。一种是自然语言的描述方法。鉴于自然语言本身过于灵活且又缺乏严谨性,所以容易产生理解上的歧义。还有一种算法的图形描述方式流程图。它采用一些标准的图形符号描述算法的操作过程,从而避免了人们对非形式化语言的理解差异。5、算法描述第11页/共38页起止框I/O框处理框判断框调用框连接框有向边 常用流程图符号第12页/共38页程序的三种基本结构结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序叫优点:结构清晰,易读,提高程序设计质量和效率三种基本结构顺序结构ABAB流程图N-S图第
6、13页/共38页PAB真假PBA真假v选择结构选择结构kA1A2AiAnk=k2k=k1k=knk=ki.l二分支选择结构二分支选择结构l多分支选择结构多分支选择结构第14页/共38页v循环结构循环结构l当型循环结构当型循环结构l直到型循环结构直到型循环结构PA假真当P为真AAP真假A直到P为真注:注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构可以是一个简单语句,也可以是一个基本结构第15页/共38页案例分析 从键盘输入大写字母,用小写字母输出/*ch3_13.c*/#includestdio.hmain()charc1,c2;c1=getchar();printf(%c,%d
7、n,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,97算法步骤(文字描述):1、输入一个大写字母给变量;2、转换为小写字母;3、输出小写字母。流程图描述:程序描述:第16页/共38页案例分析输入两个整数给变量a、b,交换后再输出;根据给定圆的半径,计算周长和面积;通过键盘输入一个字符,输出字符的ASCII码;逆序输出一个3位正整数的每位数字;给定a,b,c,计算一元二次方程的实根;第17页/共38页1.4.4 输入与输出一般每个程序都要用到数据的输入输出。数据输入:通过外设将数据输入内存。数据输出:将内存的数据通过外设输出。C语言的输入
8、输出通过调用函数实现,这些输入输出函数一般存于stdio.h和io.h(TURBOC)库文件。使用输入输出函数要用编译预处理命令指出连接的库文件,程序编译连接时将其与用户程序相连。如:#include或#includestdio.h第18页/共38页1.4.4.1 1.4.4.1 基本的输入输出函数 1、字符的非格式化输入 getchar()基本执行过程为:等待用户从标准输入设备键盘输入一个字符。如果输入成功,函数返回这个字符的ASCII编码。例如:char ch;ch=getchar();2、字符的非格式化输出 putchar()putchar(ch),输出参数ch代表的字符。第19页/共3
9、8页案例1.8:通过键盘输入一个字符,分别在两行上显示这个字符,每行显示2 2次。#includemain()charch;/*定义变量ch*/ch=getchar();/*通过键盘输入一个字符*/putchar(ch);/*在屏幕上显示2次输入的字符*/putchar(ch);putchar(n);/*在屏幕上显示一个回车换行符*/putchar(ch);/*继续在屏幕上显示2次输入的字符*/putchar(ch);第20页/共38页例题分析例题分析例#include#include main()main()char a,b,c;char a,b,c;a=a=B B;b=;b=O O;c=;
10、c=Y Y;putchar(a);putchar(b);putchar(c);putchar(a);putchar(b);putchar(c);输出结果BOY例putchar(n);输出换行putchar(101);putchar(A);putchar(65);输出AAA第21页/共38页案例1.9:从键盘输入一个小写字母,输出该字母的大写。#includestdio.hmain()charc;printf(inputachar:);c=getchar();c-=32;putchar(c);putchar(n);第22页/共38页3、格式输入函数格式:scanf(:scanf(“格式控制串”,
11、地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);输入:10 则a=10例scanf(“%x”,&a);输入:11 则a=17d,i输入有符号的十进制数输入有符号的十进制数u输入无符号的十进制数输入无符号的十进制数o输入无符号的八进制数输入无符号的八进制数x,X输入无符号的十六进制数输入无符号的十六进制数c输入单个字符,空格、回车、制表符等也作为输入单个字符,空格、回车、制表符等也作为有效字符输入有效字符输入s输入字符串
12、,以非空白字符开始,遇到第一个输入字符串,以非空白字符开始,遇到第一个空白字符(包括空格、回车、制表符)时结束空白字符(包括空格、回车、制表符)时结束f输入实数,小数、指数形式均可输入实数,小数、指数形式均可E,e,g,G与与f作用相同作用相同第23页/共38页附加格式说明符(修饰符)l修饰符功 能hm*用于用于d,o,xd,o,x前,指定输入为前,指定输入为shortshort型整数型整数用于用于d,o,xd,o,x前,指定输入为前,指定输入为longlong型整数型整数用于用于e,fe,f前,指定输入为前,指定输入为long doublelong double型实数型实数指定输入数据宽度,
13、遇空格或不可转换字符则结束指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量抑制符,指定输入项读入后不赋给变量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入19991015 则1999yy,10mm,15dd例 scanf(“%3d%*4d%f”,&k,&f);输入 12345678765.43 则123k,8765.43f例scanf(“%2d%*3d%2d”,&a,&b);输入12 345 67 则12a,67b例scanf(“%3c%2c”,&c1,&c2);输入abcde 则ac1,dc2第24页/共38页输入分隔符的指定一般以空格、T
14、AB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%dn”,a,b,c);输入123123123 输出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);输入12:30:45 则12h,30m,45s例scanf(“%d,%d”,&a,&b)输入3,4 则3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入a=12,b=24,c=36 第25页/共38页说明:用“%c”格式符时,空格和转义字符作为有效字符输入如 scanf(
15、“%c%c%c”,&c1,&c2,&c3);若输入a a b b c c 则ac1,c2,bc3输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入如如scanf(“%d%c%f”,&a,&b,&c);若输入若输入1234a123o.26 则则1234a,ab,123c输入函数留下的“垃圾”:例 int x;char ch;scanf(“%d”,&x);ch=getchar();printf(“x=%d,ch=%dn”,x,ch);执行:123输出:x=123,ch=10例intx;charch;scanf(“%d”,&x);scanf(“%c”,&ch);prin
16、tf(“x=%d,ch=%dn”,x,ch);执行:123 输出:x=123,ch=10解决方法:解决方法:(1 1)用)用getchar()getchar()清除清除(2 2)用函数)用函数fflush(stdin)fflush(stdin)清除全部剩余内容清除全部剩余内容(3)(3)用格式串中空格或用格式串中空格或“%*%*c c”来来“吃掉吃掉”(4)(4)用用%1s%1s代替代替%c%c,因为它完全忽略空格和回车符,因为它完全忽略空格和回车符例intx;charch;scanf(“%d”,&x);scanf(“%c”,&ch);或scanf(“%*c%c”,&ch);scanf(“%1
17、s”,&ch);第26页/共38页格式:printf(“printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)EOF(-1)4.格式输出函数输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%修饰符格式字符,用于指定输出格式普通字符或转义序列:原样输出格式字符例inta=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果输出结果:34a=3,b=4第27页/共38页d,ix,Xoucse,Efg,G%格式字符:十六进制无符号整数不带
18、符号十进制整数带符号十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%”);5
19、67ff101567AABC5.67789e+02567.789000567.789%说明:除X、E、G外,格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应,否则,若格式字符少,按其个数自左向右输出值,若格式字符多,多出的将输出不确定值.输出转换:格式字符与输出项类型不一致,自动按指定格式输出,但int与float不能互用.例 main()unsigned int u=65535;printf(”u=%dn,u);输出结果:u=-1例 int a=3,b=4;int a=3,b=4;printf(printf(“%d%dn%d%dn”,a,b);,a,b);printf(prin
20、tf(“a=%d,b=%dna=%d,b=%dn”,a,b);,a,b);例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果:3 4 a=3,b=411 11 11 11 11 11 11 1165535int a=-1printf(“%d,%x,%o,%u”,a,a,a,a);结果:-1,ffff,177777,65535char c=aint i=97;printf(“%c,%d”,c,c);printf(“%c,%d”,i,i);e:数值按规范化指数输出,有的编译系统自动指定为数值按规范化指数输出,有的编译系统自
21、动指定为6位小位小数,指数部分占数,指数部分占5位(如位(如VC+)f:整数部分全部输出,并输出整数部分全部输出,并输出6位小数,可四舍五入。位小数,可四舍五入。g:自动选择自动选择e或或f,不输出无意义的,不输出无意义的0。第28页/共38页附加格式说明符(修饰符).n对实数对实数,指定小数点后位数指定小数点后位数(四舍五入四舍五入)对字符串对字符串,指定实际输出位数指定实际输出位数(从左截取从左截取)修饰符修饰符功功能能m输出数据域宽输出数据域宽,数据长度数据长度m,左补空格左补空格;否则按实际输出否则按实际输出输出数据在域内左对齐(缺省右对齐输出数据在域内左对齐(缺省右对齐)-指定在有符
22、号数指定在有符号数的正数前显示正号的正数前显示正号(+)(+)+输出数值时指定左面不使用的空位置自动填输出数值时指定左面不使用的空位置自动填0 00在八进制和十六进制数前显示前导在八进制和十六进制数前显示前导0 0,0 0 x x#在在d,i,o,x,ud,i,o,x,u前,指定输出精度为前,指定输出精度为longlong在在e,f,ge,f,g前,指定输出精度为前,指定输出精度为long doublelong doublel第29页/共38页例inta=1234;floatf=123.456;charch=a;printf(“%8d,%2dn”,a,a);printf(“%f,%8f,%8.
23、1f,%.2f,%.2en”,f,f,f,f,f);printf(“%3cn”,ch);运行1234,1234结果:123.456000,123.456000,123.5,123.46,1.23e+02a例staticchara=“Hello,world!”printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);运行结果:Hello,world!Hello,world!HelloHelloHel例m.n第30页/共38页例inta=1234;floatf=123.456;staticcharc=“Hello,world!”;printf(“%8d,%-8d
24、n”,a,a);printf(“%10.2f,%-10.1fn”,f,f);printf(“%10.5s,%-10.3sn”,c,c);运行结果:1234,1234 123.46,123.5 Hello,Hel例-第31页/共38页例inta=1234;floatf=123.456;printf(“%08dn”,a);printf(“%010.2fn”,f);printf(“%0+8dn”,a);printf(“0+10.2fn”,f);例0、+例inta=123;printf(“%o,%#o,%X,%#Xn”,a,a,a,a);例#例longa=65536;printf(“%d,%8ldn”
25、,a,a);例l0000000000000001 0000000000000000/00001234/0000123.46/000+1234/000+123.56/173,0173,7B,0X7B/0,65536第32页/共38页案例1.10:将输入的角度转换成弧度。#includemain()intdegree;floatradian;printf(Enterdegree:);scanf(%d,°ree);radian=3.14159*degree/180;printf(%ddegreesequalto%fradians.,degree,radian);第33页/共38页案例1.11:
26、输入两个字符,输出用这两个字符绘制的三角形。#includemain()charch1,ch2;printf(Enter2characters:);scanf(%c%c,&ch1,&ch2);printf(n%c,ch1);printf(n%c%c%c,ch1,ch2,ch1);printf(n%c%c%c%c%c,ch1,ch2,ch2,ch2,ch1);printf(n%c%c%c%c%c%c%c,ch1,ch1,ch1,ch1,ch1,ch1,ch1);第34页/共38页例1.12:逆序输出一个三位正整数的每一位数字。#includemain()intd1,d2,d3,value;pri
27、ntf(nEnter3integers:);scanf(%d,&value);/*输入一个三位正整数*/d1=value/100;/*计算百位数字*/d2=value%100/10;/*计算十位数字*/d3=value%10;/*计算个位数字*/printf(n%d-%d%d%d,value,d3,d2,d1);/*输出结果*/第35页/共38页例1.13:将连续输入的4 4个数字字符拼成一个intint类型的数值。#includemain()chard1,d2,d3,d4;intvalue;printf(Enter4characters:);d1=getchar();d2=getchar();d3=getchar();d4=getchar();value=(d1-0)*1000+(d2-0)*100+(d3-0)*10+(d4-0)*1;printf(Thevalueis%d,value);/*输出结果*/第36页/共38页思考小结写出你理解的顺序结构程序设计方法;写出编程的基本思路、步骤;写出编程注意的地方。第37页/共38页感谢您的欣赏!第38页/共38页
限制150内