收藏 分销(赏)

程序设计和C语言样本.doc

上传人:二*** 文档编号:4510554 上传时间:2024-09-26 格式:DOC 页数:69 大小:1.07MB
下载 相关 举报
程序设计和C语言样本.doc_第1页
第1页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第1章 程序设计和C语言教学时数:2学时重点难点:1.C语言特点。2.TC运营环境。教学规定:1.理解C 语言发展历史和特点。2.理解C 程序构成及C 函数构成。3.掌握C 程序上机环节。教学内容:一、什么是计算机程序程序:一组计算机能辨认和执行指令或具备某种功能指令集合。二、什么是计算机语言1.计算机语言:人和计算机交流信息、计算机和人都能辨认语言。2.计算机语言发展阶段(1)低档语言或机器语言(由0和1构成指令)。(2)中级语言或符号语言(用助记符号表达指令)。(3)高档语言(接近于人自然语言和数学语言)。三、C语言发展及其特点1.C语言发展C语言是在BCPL(basic combined

2、 programming)基本语言(取第一种字母故而称为B语言基本上发展起来。由于B语言过于简朴、功能有限,在七十年代贝尔实验室D.M.Ritchie设计出更精练并接近于B语言长处BCPLC语言(取第二个字母故而称为C语言)。日后又通过多次改进成为今天广泛流行、适合大学诸多专业教学语言。它既可用来编写系统软件,也可用来编写应用软件。2.C语言特点(1)语言凑简、语法限制不太严格、程序设计自由度大C语言有37个核心字;对数组下标越界不做检查,整型与字符型可通用;程序书写格式自由,一行可写多条语句,一条语句也可写入多行。(2)算符丰富、数据类型丰富、具备构造化控制语句C语言有34种运算符;类型且多

3、样化(有基本类、构造类、指针类和空类型);9中控制语句,如ifelse语句、while语句、dowhile语句、switch语句、for语句,用函数作为程序模块单位,便于实现程序模块化。(3)容许直接访问物理地址、能对位和对硬件直接操作C语言具备高档语言功能和低档语言许多功能,可用来编写系统软件这种双重性,使它既是成功系统描述语言,又是通用程序设计语言。(4)可移植性好、生成目的代码质量和程序执行效率高用C语言编写好程序基本不做源代码修改就可在各种型号计算机都能运营;生成目的代码质量仅低于汇编语言1020%。四、最简朴C语言程序例1.1:输出一行信息。#include int main( )p

4、rintf (”This is a C program.n”);例1.2:求两个整数之和。#include int main( )int a=123,b=456,sum; sum = a + b; printf(”sum is %dn”,sum);例1.3:求两个整数中较大者。#include int main( )int max(int x,int y); int a,b,c; scanf(”%d,%d”,&a,&b); c = max(a,b); printf(max=%dn,c);int max(int x,int y)int z; if (x y) z = x; else z = y;

5、 return(z);1.最简朴C语言程序举例 2.C语言程序构造C程序是由一种或各种函数构成。函数由函数首部和函数体部构成,而函数体部又由声明某些和执行某些构成。一种C程序有仅能有一种主函数main,但可有其她函数各种。因而,函数是C语言程序基本单位。程序总是从main函数开始执行。五、运营C程序环节与办法1.运营C程序环节编辑(.c文献)编译(.obj文献)连接(.exe文献)运营程序2.运营C程序办法Filenew编辑源程序Ctrl+F9输入数据Alt+F5第2章 算法教学时数:2学时重点难点:1.算法概念、思想。2.流程图以及N-S图。教学规定:1.理解算法不同表达办法。2.理解算法概

6、念和特性。3.理解算法N-S 流程图表达法。教学内容:一、什么是算法广义地说,为解决一种问题而采用办法和环节称为“算法”。对同一种问题,可以有不同解题办法和环节。计算机算法可分为两大类别:数值运算算法(其目是求数值解)和非数值运算算法(涉及面十分广泛,最常用是用于事务管理领域)。二、简朴算法举例例2.1:求123451000原始算法:环节1:先求01*02,得到成果02。环节2:将环节1得到乘积02再乘以03,得到成果006。环节3:将环节2得到乘积06再乘以04,得到成果024。环节4:将环节3得到乘积24再乘以05,得到成果120。太繁琐!例2.1:求123451000改进算法:设变量p为

7、被乘数,变量i为乘数。环节1:使p=1。环节2:使i=2。环节3:使p与i相乘,乘积仍放在变量p中,可表达为:p= p*i。环节4:使i值加1,可表达为:i =i+1。环节5:若i=80,则输出ni和gi,否则不输出。环节3:i =i+1环节4:若i=50,返回到环节环节2:,继续执行,否则,算法结束。例2.3:鉴定25中闰年,并将成果输出。闰年必要同步满足两个条件:(1)能被4整除,但不能被100整除年份都是闰年;(2)能被400整除年份是闰年。其中算法:环节1:year= 。环节2:若year能被4整除,不能被100整除;同步,若year能被400整除,则输出year值和“是闰年”。然后转

8、到环节4执行。环节3:否则,其她状况输出year值和“不是闰年”。环节4:year =year+1。环节5:当year=2500时,转到环节2继续执行,否则停止。例2.4 求1-1/2+1/3-1/4+1/99-1/100分析得出规律:第1项分子分母都是1。第2项分母是2,后来每一项分母子都是前一项分母加1。笫2项前运算符为“-”,后一项前面运算符都与前一项前运算符相反。其中算法:环节1:当前项符号sign=1。环节2:当前各项和sum=1。环节3:当前项分母deno=2。环节4:sign=(-1)*sign。环节5:当前项值term=sign*(1/deno)。环节6:sum=sum+ter

9、m。环节7:deno=deno+1。环节8:若deno=100返回环节4;否则算法结束。阐明:99次循环后sum值就是所规定成果。例2.5 给出一种不不大于或等于3正整数,判断它是不是一种素数。分析所谓素数:是指除了1和该数自身之外,不能被其她任何整数整除数环节1:输入n值。环节2:i=2(i作为除数)。环节3:n被i除,得余数r。环节4:若r=0,则n能被i整除,输出n“不是素数”,算法结束;否则执行环节5。环节5:i =i+1。环节6:如果i=n-1,返回环节3;否则输出n “是素数”,然后结束。三、算法特性(1)有穷性。一种算法应包具有限操作环节,而不能是无限。(2)拟定性。算法中每一步

10、都应当是拟定,而不能是含糊。(3)有零个或各种输入。执行算法时需要从外界获得必要信息。(4)有一种或各种输出。算法目是为了求解,就是输出信息。(5)有效性。算法中每一步都应当能有效地执行,拟定成果。四、算法表达1.用自然语言表达算法用自然语言写算法通俗易懂,但文字冗长,容易浮现歧义且包括分支和循环算法,不很以便,除了简朴问题外,普通不用自然语言。2.用流程图表达算法流程图是用某些图框来表达各种操作,用图形表达算法,直观形象,易于理解。但老式流程图用流程线指出各框执行顺序,对流程线使用没有严格限制 使用者可以毫不受限制地使流程随意地转来转去,使人难以理解算法逻辑。例2.6:将例2.1求12345

11、算法用流程图表达。例2.8:将例2.3鉴定2500中闰年算法用流程图表达。例2.9:将例2.4求1-1/2+1/3-1/4+1/99-1/100算法用流程图表达。4.用N-S流程图表达算法例2.11:将例2.1求12345算法用N-S图表达。 例2.12:求50名学生中成绩高于80分者学号和成绩输出算法用N-S图表达。例2.16:求12345算法用伪代码表达。begin (算法开始)t=1i=2while i5t=t *ii=i+1print tend (算法结束)5.用伪代码表达算法伪代码是用介于自然语言和计算机语言之间文字和符号来描述算法,用伪代码写算法并无固定、严格语法规则,可以用英文,

12、也可以中英文混用。6.用计算机语言表达算法要完毕一项工作,涉及设计算法和实现算法两个某些。设计算法目是为了实现算法。例2.18:将例2.16求12345算法用C语言表达。#include int main( )int i,t;t=1;i=2; while(i=5)t=t*i;i=i+1; printf(%dn,t);五、构造化程序设计办法构造化程序设计强调程序设计风格和程序构造规范化,倡导清晰构造。其基本思路是把一种复杂问题求解过程分阶段进行,每个阶段解决问题都控制在人们容易理解和解决范畴内。采用如下办法保证得到构造化程序:(1)自顶向下;(2)逐渐细化;(3)模块化设计;(4)构造化编码。第

13、3章 最简朴C程序设计教学时数:4学时重点难点:1、数据输入和输出。2、printf();scanf()。教学规定:1.理解各种类型C 语句。2.理解程序执行顺序性。3.掌握数据输入/输出函数用法。教学内容:一、顺序程序设计举例例3.1:有人用温度计测量出用华氏法表达温度(如f,今规定把它转换为以摄氏法表达温度(如c) 。解题思路:找到两者间转换公式c=5/9(c-32)。c代表摄氏温度,f代表华氏温度。#include int main ( )float f,c;f=64.0;c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c);例3.2:计算存款利息。有1000

14、元,想存一年。有三种办法可选:(1)活期,年利率为r1;(2)一年期定期,年利率为r2;(3)存两次半年定期,年利率为r3。请分别计算出一年后按三种办法所得到本息和。解题思路:拟定计算本息和公式。从数学知识可知:若存款额为p0,则:活期存款一年后本息和为:p1=p0(1+r1);一年期定期存款,一年后本息和为:p2=p0(1+r2);两次半年定期存款,一年后本息和为:p3=p0(1+r3/2)(1+r3/2#include int main ( )float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;p1 = p0 * (1 + r1);p2

15、 = p0 * (1 + r2);p3 = p0*(1+r3/2)*(1+r3/2);printf(”%fn%fn%fn”,p1,p2,p3);二、数据体现形式及其运算1.常量:在程序运营过程中,其值不能被变化量称为常量。(1)整型常量:如10020,12345,0,-3452(2)实型常量:十进制形式(如0.34,-56.79,0.0);指数形式(如12.34e3 )(3)字符常量:如?;字符串常量:如”boy”;转义字符:如n;符号常量:#define PI 3.14162.变量:在程序运营过程中,其值可以被变化量称为变量。变量必要先定义(定义变量时指定该变量名字和类型),后使用。变量名(

16、字母、数字和下划线三者组合,但数字不能开头)事实上是以一种名字代表一种存储地址,从变量中取值,事实上是通过变量名找到相应内存地址,从该存储单元中读取数据。3.数据类型:4.运算符和表达式(01)算术运算:+、-、*、/(舍去小数某些后“向零取整”即取整后向零靠拢整数商)、%(求余数运算,规定运算符两边运算数为整数,成果也是整数)。(02)关系运算符: !(03)逻辑运算符: ! |(04)位运算符: | (05)自增、自减运算符:+i,-i:在使用i之前,先使i值加(减)1、i+,i-:在使用i之后,使i值加(减)1(06)赋值运算符:及其扩展赋值运算符(07)条件运算符:?:(如max =

17、(a b) ?a :b;)(08)逗号运算符: ,(09)指针运算符:*和(10)求字节(长度)数运算符:sizeof(11)强制类型转换运算符:(类型名)(表达式)(12)成员运算符:. -(13)下标运算符: (14)其她:如函数调用运算符( )例3.5 求ax2+bx+c=0方程根。设b2-4ac0,其中a、b、c由键盘输入。#include #include int main ( )double a,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);

18、x1=p+q;x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2);5.C语句(作用和分类)(1)控制语句:if、switch、for、while、dowhile、continue、break、return、goto等(2)函数调用语句(3)表达式语句(4)空语句(5)复合语句(6)赋值语句(最惯用语句)(7)输入输出语句6.关于数据输入输出概念语言自身不提供输入/出语句,输入/出操作是由C原则函数库中函数来实现,格式输入输出函数(用这两个函数时,必要指定格式)printf和scanf不是语言核心字,而只是库函数名字。在使用输入输出函数时,要在程序文献开头用预编译指

19、令#include 或#include stdio.h。(1)用printf函数输出数据及惯用格式字符:printf(格式控制,输出表列),例如:printf(”i=%d,c=%cn”,i,c);格式符。用来输出一种有符号十进制整数,可以在格式声明中指定输出数据域宽printf(”%5d%5dn”,12,-345);%d输出int型数据,%ld输出long型数据。格式符。用来输出一种字符。格式符。用来输出一种字符串。f格式符。用来输出实数,以小数形式输出.不指定数据宽度和小数位数,用%f。指定数据宽度和小数位数。用%m.nf。输出数据向左对齐,用%-m.nf。e格式符。指定以指数形式输出实数.

20、(2)用scanf函数输入数据及惯用格式字符:scanf(格式控制,地址表列),含义同printf函数。可以是变量地址,或字符串首地址。格式声明与printf函数中格式声明相似以开始,以一种格式字符结束,中间可以插入附加字符。例如:scanf(a=%f,b=%f,c=%f,&a,&b,&c);。(3)用getchar函数输入一种字符。getchar函数普通形式为:getchar( )。(4)用putchar函数输出一种字符。putchar函数普通形式为:putchar( )。例3.9:从键盘输入BOY三个字符,然后把它们输出到屏幕。#include int main ( )char a,b,c

21、; a=getchar();b=getchar();c=getchar(); putchar(a);putchar(b);putchar(c); putchar(n);第4章 选取构造程序设计教学时数:4学时重点难点:1.关系运算符与关系表达式。2.逻辑运算符与逻辑表达式。3.if和switch语句用法。教学规定:1.理解关系运算和逻辑运算及用法。2.掌握if 语句三种形式和switch 语句用法。3.理解if 语句和switch 语句嵌套。4.掌握分支构造程序设计基本办法。教学内容:一、选取构造和条件判断1.if语句,实现两个分支选取构造2.switch语句,实现多分支选取构造例4.1:在例

22、3.5基本上对程序进行改进。题目规定求ax2+bx+c=0方程根。由键盘输入a,b,c。假设a,b,c值任意,并不保证b2-4ac0 。需要在程序中进行鉴别,如果b2-4ac0,就计算并输出方程两个实根,否则就输出“方程无实根”信息。#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c;if (disc 500) cost = 0.15;else if (number 300) cost = 0.10;else if (number 100) c

23、ost = 0.075;else if (number 50) cost = 0.05;else cost=0;等价于if (number 500) cost = 0.15;else if (number 300) cost = 0.10;else if (number 100) cost = 0.075;else if (number 50) cost = 0.05;else cost = 0;3.选取构造嵌套在if语句中又包括一种或各种if语句称为if语句嵌套:(1)第一种嵌套:if( ) if( ) 语句1 else 语句2else if( ) 语句3 else 语句4内嵌if。else

24、总是与它上面近来if配对(2)第二种嵌套:if () if () 语句1 else 语句2内嵌if。 限定了内嵌if范畴 例4.5:有一函数: 编一程序,输入x值,则输出相应y值。解题思路:用if语句检查x值,依照x值决定赋予y值,由于y也许值不是两个而是三个,因而不也许只用一种简朴(无内嵌if)if语句来实现。(1)先后用3个独立if语句解决:scanf(%d,&x);if(x0) y = 1;printf(x=%d,y=%dn,x,y);(2)用一种嵌套if语句解决:scanf(%d,&x);if(x0) y=-1;else if(x=0) y=0;else y=1;printf(x=%d

25、,y=%dn,x,y);三、用switch语句实现多分支选取构造switch语句普通形式:switch(表达式)case 常量1 :语句1 case 常量2 :语句2 case 常量n :语句n default : 语句n+1switch语句作用是依照表达式值,使流程跳转到不同语句。其(表达式)只能是整数类型(涉及字符型)。例4.6:规定按照考试成绩级别输出百分制分数段,A等为85分以上,B等为7084分,C等为6069分 ,D等为 60分如下。成绩级别由键盘输入。#include int main()char grade; scanf(%c,&grade); switch(grade)cas

26、e A:printf(85100n);break; case B:printf(7084n);break;case C:printf(6069n);break; case D:printf(60n);break;default:printf(enter data error!n); 如果用switch语句只进行一次检查。如果用if语句,至少要用3层嵌套if,进行3次检查判断即可得到成果。例4.8:写一程序,判断某一年与否闰年。用变量leap代表与否闰年信息。若闰年,令leap=1;非闰年,leap=0。最后判断leap与否为(真),若是,则输出“闰年”信息。#include int main(

27、)int year,leap; scanf(%d,&year); if (year%4=0)if(year%100=0)if(year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if (leap) printf(%d is ,year); else printf(%d is not ,year);printf(a leap year.n);例4.10:运送公司对顾客计算运送费用。路程s (km)越远,每吨千米运费越低。原则如下: s 250 没有折扣250 s 500 2折扣500 s 1000 5折扣1000 s 8折扣 s

28、3000 10折扣3000 s 15折扣解题思路:设每吨每千米货品基本运费为p,货品重为w,距离为s,折扣为d,总运费f计算公式为f=pws(1-d)。折扣“变化点”都是250倍数在横轴上加一种坐标c,c值为s/250。c代表250倍数。当c1时,表达s250,无折扣1c2时,表达250s500,折扣d=2;2c4时,d=5; 4c8时,d=8;8c12时,d=10; c12时,d=15。#include int main()int c,s;float p,w,d,f; scanf(%f,%f,%d,&p,&w,&s); if(s=3000) c=12; else c=s/250;switch

29、(c)case 0: d=0;break; case 1: d=2;break; case 2: case 3: d=5;break; case 4: case 5: case 6: case 7: d=8;break; case 8: case 9: case 10: case 11: d=10;break; case 12: d=15;break;f = p * w * s * (1 - d / 100); printf(“freight=%10.2fn”,f);第5章 循环构造程序设计教学时数:4学时重点难点:1.循环基本概念。2.while 循环;do while 循环;for 循环。

30、3.循环嵌套。教学规定:1.理解goto、dowhile语句及其构成循环。2.理解循环要素和控制办法。3.掌握while语句用法。4.纯熟掌握FOR 语句用法。5.掌握循环嵌套。6.理解break 语句和continue 语句用法。教学内容:一、为什么需要循环控制例如,全班有50个学生,记录各学生三门课平均成绩。输入学生1三门课成绩,并计算平均值后输出scanf(“%f,%f,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)/3;printf(“aver=%7.2f”,aver);输入学生2三门课成绩,并计算平均值后输出scanf(“%f,%f,%f”,&s1,&s2,&s3)

31、;aver=(s1+s2+s3)/3;printf(“aver=%7.2f”,aver);要对50个学生进行相似操作就要重复50次。大多数应用程序都会包括循环构造。二、循环构造(1)while (表达式)循环体(2)do循环体while(表达式)1.while构造例5.1:求1+2+3+100。解题思路:这是累加问题,需先后将100个数相加,重复100次加法运算,可用循环实现。#include int main()int i=1,sum=0; while (i=100)sum=sum+i; i+; printf(sum=%dn,sum);#include int main()int i=1,s

32、um=0; do sum=sum+i; i+;while(i=100); printf(sum=%dn,sum);或2.for构造for(表达式1;表达式2;表达式3)循环体 for语句执行过程:先求解表达式1。求解表达式2,若其值为真,执行循环体,然后执行下面第步。若为假,则结束循环,转到第步。求解表达式3。转回上面环节继续执行。循环结束,执行for语句下面一种语句。阐明:for语句不但可以用于循环次数已经拟定状况,还可以用于循环次数不拟定而只给出循环结束条件状况。for构造完全可以代替while构造。一种或两个或三个表达式均可以省略,但分号不能省略。3.循环嵌套一种循环体内又包括另一种完整

33、循环构造,称为循环嵌套,内嵌循环中还可以嵌套循环,这就是多层循环(即嵌套中嵌套)。3种循环(while循环、dowhile循环和for循环)可以互相嵌套。4.几种循环比较(1)普通状况下,3种循环可以互相代替。(2)在while和do-while循环中,循环体应包括使循环趋于结束语句。(3)用while和do-while循环时,循环变量初始化操作应在while和do-while语句之前完毕。而for语句可以在表达式1中实现循环变量初始化。5.变化循环执行状态用break语句提前终结整个循环(从循环体内跳出循环体)。用continue语句提前结束本次循环。例5.4:在全系1000学生中,征集慈善

34、募捐,当总数达到10万元时就结束,记录此时捐款人数,以及平均每人捐款数目。编程思路:循环次数不拟定,但最多循环1000次,在循环体中合计捐款总数用if语句检查与否达到10万元,如果达到就不再继续执行循环,终结累加计算人均捐款数。#include #define SUM 100000int main()float amount,aver,total; int i; for (i=1,total=0;i=SUM) break;aver=total / i ;printf(“num=%dnaver=%10.2fn“,i,aver);例5.6:输出如下4*5矩阵。 1 2 3 4 5 2 4 6 8

35、10 3 6 9 12 15 4 8 12 16 20解题思路:可以用循环嵌套来解决此问题,用外循环来输出一行数据,用内循环来输出一列数据,按矩阵格式(每行5个数据)输出。#include int main()int i,j,n=0;for (i=1;i=4;i+) for (j=1;j=5;j+,n+)if (n%5=0) printf (“n”);printf (%dt,i*j); printf(n);三、循环程序举例例5.7:用1/1-1/3+1/5-1/7+公式求近似值,直到发现某一项绝对值不大于10-6 为止(该项不合计加)。解题思路:每项分子都是1,后一项分母是前一项分母加2,第1

36、项符号为正,从第2项起,每一项符号与前一项符号相反。#include #include int main()int sign=1;double pi=0,n=1,term=1; while(fabs(term)=1e-6)pi=pi+term;n=n+2;sign=-sign;term=sign/n; pi=pi*4; printf(pi=%10.8fn,pi);例5.8:求费波那西(Fibonacci)数列前40个数。这个数列有如下特点:第1,2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即:这是一种有趣古典数学问题:有一对兔子,从出生后第3个月起每月都生一对兔子。小兔子长到第3

37、个月后每月又生一对兔子。假设所有兔子都不死,问每月兔子总数为多少?第几种月小兔子对数中兔子对数老兔子对数兔子总数110012010131012411135212563238753513#include int main()int f1=1,f2=1,f3;int i; printf(%12dn%12dn,f1,f2); for(i=1;i=38;i+)f3=f1+f2;printf(%12dn,f3);f1=f2;f2=f3;#include 代码课改写为:int main()int f1=1,f2=1;int i; for(i=1;i=20;i+)printf(%12d %12d ,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1;所得成果入下:例5.11:译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按商定规律将其译回原文。非字母字符保持原状不变,输入一行字符,规定

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服