怎样学好C语言程序设计.ppt_第1页
怎样学好C语言程序设计.ppt_第2页
怎样学好C语言程序设计.ppt_第3页
怎样学好C语言程序设计.ppt_第4页
怎样学好C语言程序设计.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019/8/7,1,怎样学好 C语言程序设计,怎样学好C语言程序设计,2019/8/7,2,目标与要求,学习C语言程序设计的目标与要求,通俗地讲,就是要学会: 编写程序,运行程序,得到正确结果。,2019/8/7,3,目 录,怎样学好C语言程序设计,1 C语言程序设计的组成 2 C程序的组成 3 C程序设计的基本算法 4 期末考试试题分析,2019/8/7,4,1 C语言程序设计的组成,1 C语言程序设计的组成,一. C语言基本语法,1. C语言基本元素,基本 元素,1. 基本字符集 2.标识符: 3.关键字:,1.数字:0 1 2 3 4 5 6 7 8 9 2.字母:abczABCZ 3.运算符:+ - * / % = 等 4.特殊符号:_(下划线) 回车(r) 换行(n) 制表符(t)等,常量名、变量名、 数组名、类型名、存储方式名、语句、函数名、文件名等。,auto break case char const continue default do double else renum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while,标准标识符或保留字或基字(32个),2019/8/7,7,2. C语言数据类型,2019/8/7,8,3. C语言执行语句 (1) 表达式与表达式语句,用运算符将运算对象连接形成的式子就是表达式。,表达式加分号就构成了表达式语句。,1. 表达式语句 2. 复合语句 3. 控制语句 4. 空语句,输入/输出(I/O)是表达式语句。,2019/8/7,9,运算符,1算术运算符 2赋值运算符 3关系运算符 4逻辑运算符 5自增、自减运算符 6条件运算符 7位运算符 8sizeof运算符(求字节运算符) 9逗号运算符,2019/8/7,10,运算符的优先级与结合性,单目、条件、赋值运算符的结合性是自右向左。其它运算符是自左向右。,2019/8/7,11,表达式,1算术表达式 2逻辑表达式 3关系表达式 4赋值表达式 5条件表达式 6逗号表达式,表达式加分号就构成了表达式语句。,2019/8/7,12,C程序,源文件1 源文件2 源文件3 . 源文件n,预处理命令 函数1 函数2 . 函数n,说明语句 执行语句,main(),最小编 译单位,最小功 能单位,必须具有一个 主函数,4. C语言程序组成,2019/8/7,13,二. C语言程序设计 1. C语言程序结构,main( ) 程序首部 说明语句 数据结构 语句 输入语句 执行语句 运算处理 算法设计 输出语句,程序数据结构算法,2019/8/7,14,(1) 什么是数据结构,数据及其联系,即数据元素的组织形式被抽象为数据结构。,在C程序设计中,数据结构用数据类型来描述。,数据结构,数据类型,2019/8/7,15,(2) 什么是算法,算法:解决问题的方法和有限的步骤,例,求圆周长和圆面积,算法:l2*3.14*r;s3.14*r*r;,最简单的算法用数学公式描述。,2019/8/7,16,2. C语言基本算法,程序数据结构算法,常用算法有: 枚举法、迭代法、递推法、递归法、分治法等。,复杂的算法要用工具来描述,常用的工具有程序流程图、N-S图、PAD图等方式,但目前应用最广泛的是程序流程图和N-S图。,2019/8/7,17,用规定的一系列图形、流程线和文字说明算法中的基本操作和控制流程。,scanf(“%d”,printf(“%d”,s);,While(an),算法的表示-流程图,例如计算: s=a ; a=1 n,2019/8/7,18,2 C程序的组成,2 C程序的组成,C程序由函数组成,函数由四部分组成,main( ) 程序首部 说明语句 数据结构 语句 输入语句 执行语句 运算处理 算法设计 输出语句,2019/8/7,19,C语言程序由1多个函数组成,main函数的位置可以任意,但程序总是从main( )函数开始执行。,C语言程序设计,C程序组成: 说明对象;输入数据;运算处理;输出结果,main( ) main( ) 说明对象 数据类型 语句 输入数据 scanf(); 运算处理 算法设计 输出结果 printf();,2019/8/7,20,程序设计举例,例:输入a,b,c,求其和。,按下述四步编写程序: 说明对象;输入数据;运算处理;输出结果,2019/8/7,21,结构化程序的三种基本结构:顺序、选择与循环。,3 C程序设计的基本算法,3 C程序设计的基本算法 一. 结构化程序的三种基本结构,2019/8/7,22,打印平面二维图形:要用双重循环,外循环控制行数,内循环控制列数。,二. 打印平面二维图形 (1) 打印三角图形,输入n=4, 输出以下图形:,main( ) int i, j, n; printf(“nInput n : “); scanf(“%d”, ,* * * * * * * * * * * * * * * *,2019/8/7,23,只需将输出上面三角的程序略加修改后,复制移到下面,再输出下面倒三角就可以了。,(2) 打印菱形图形,输入n=4, 输出以下图形:,* * * * * * * * * * * * * * * * * * * * * * * * *,2019/8/7,24,打印菱形图形程序,main( ) int i,j,n; printf(“Enter n : “); scanf(“%d“, ,for(i=n-1; i=0; i-) for(j=1; j=40-2*i; j+) printf(“ “); for(j=1; j=2*i-1; j+) printf(“%2c“,*); printf(“n“); printf(“nn“); getch( ); ,2019/8/7,25,根据问题的部分条件预估答案的范围,然后在此范围内对所有可能的情况逐一验证(穷举) ,直到全部情况都通过了验证为止。,三. 穷举法,穷举法步骤: 预估出答案的大致范围; 用循环语句对范围内所有可能情况进行穷举; 在穷举中逐一验证,将满足条件的情况输出,即为所解。,凡是求解有多少种方案或可能等一类非数值问题都可以用穷举法来求解。如:百钱百鸡问题、换硬币问题、水仙花问题、完数问题、素数问题等。,2019/8/7,26,(1) 百钱百鸡问题,例:每只公鸡5个钱,每只母鸡3个钱,每3只小鸡1个钱,用100个钱,买100只鸡,问公鸡、母鸡和小鸡各买几只?,穷举法分析:设公鸡、母鸡和小鸡数为x,y,z. 答案的大致范围:x=1 19, y=1 33 穷举:for(x=1;x=19; x+) for(y=1; y=33; y+) 条件: n=5*x+3*y+z/3,2019/8/7,27,百钱百鸡程序,main() int x,y,z; for(x=1;x20;x+) for(y=1;y34;y+) z=100-x-y; if(5*x+3*y+z/3=100) ,共三组解: x y z 3 20 77 4 18 78 7 13 80 8 11 81 11 6 83 12 4 84,2019/8/7,28,(2) 完数问题,例:编程输出1000以内的所有 “完数”。 所谓“完数”是该数恰好等于它的全部因子之和。例如,6的因子是1,2,3,恰好6 =1+2+3 ,因此 6是“完数” 。,穷举法分析: 答案的大致范围:n=1 1000 穷举:for(n=1; n=1000; n+) 条件: n=s 其中,s分别为该数n的全部因子之和。 求全部因子之和:s=0; for(i=1;i=n/2;i+) if(n%i=0) s=s+i;,main() int i,j,n,s; for(n=1;n=1000;n+) s=0; for(i=1;i=n/2;i+) if(n%i=0) s=s+i; if(s=n) printf(“%4d=1“,n); for(i=2;i=n/2;i+) if(n%i=0) printf(“+%d“,i); printf(“n“); ,共三组解: 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248,完数程序,2019/8/7,30,根据问题的递推关系,由已知项,经过有限次的递推迭代,得到待求的未知项。,四. 递推法,迭代法步骤: 列出问题的已知项; 根据问题的关系,写出递推公式; 用循环语句,对递推公式进行有限次的递推迭代,直到待求的未知项,即为所解。,凡是具有递推公式的一类数值问题,都可以用迭代法来求解。如:级数问题、斐波那契数列问题等。,2019/8/7,31,(1) 阶乘问题,例:输入n值,求1n的阶乘1! n! 。,递推法分析: 列出问题的已知项:0!=1; 根据问题的关系,写出递推公式: i ! =i *(i-1)! ; 用循环语句,对递推公式进行有限次的递推迭代,直到待求的未知项。 for(i=1;i=n;i+) n1=i*n0; n0=n1; printf(“%4d!=%-10ld“,i,n1); 由于数值上升很快,用long型,同理,在输出时要应用“%ld”形式。,main( ) int i,n; long n1,n0=1; printf(“Input n : “); scanf(“%d“, ,阶乘程序(JC!.C),运行结果: Input n : 10 1!=1 2!=2 3!=6 4!=24 5!=120 6!=720 7!=3040 8!=40320 9!=362880 10!=3628800,2019/8/7,33,(2) 斐波那契数列问题,例:求斐波那契数列1,1,2,3,5,8,13 的前40项值。,递推法分析: 列出问题的已知项:f1=1, f2=1; 根据问题的条件,写出递推公式:f=f2+f1; 用循环语句,对递推公式进行有限次的递推迭代,直到待求的未知项。 for (i=3; i=40; i+) f=f2+f1; printf(“%12ld“, f); f1=f2; f2=f; /*迭代,为下一循环作准备 */ 由于数值上升很快,用long型,同理,在输出时要应用“%ld”形式。,main( ) long int f1=1, f2=1,f; int i; printf(“%12ld%12ld“,f1,f2); for (i=3; i=40; i+) f=f2+f1; printf(“%12ld“, f); if(i%4=0) printf(“n“); f1=f2; f2=f; /*迭代*/ ,斐波那契数列程序(FEBO0.C),2019/8/7,35,迭代法是一种数值近似求解的方法。它把一个复杂问题的求解转化为简单的迭代算式,经过重复执行这个迭代算式,得到最终解。有精确和近似两种迭代法。,五. 迭代法,迭代法步骤: 列出迭代变量的初始值; 根据问题的条件,写出迭代公式; 用循环语句,重复执行这个迭代公式,直到待求的最终值。,凡是对N个数求和、求均值、求方差等这一类问体都适合用精确迭代法来求解;但主要是用近似迭代法来求解代数方程、微分方程及解方程f(x)=0等问题。,2019/8/7,36,求和问题,例:求 1-3+5-7+ -99+101 的值。,迭代法分析:适合用精确迭代法来求解。 列出迭代变量的初始值: k=1; sum=0; 根据问题条件写出迭代公式:sum=sum+k*n; k=-k; 用循环语句,重复执行这个迭代公式: for(n=1;n=101;n+=2) sum=sum+k*n; k=-k; ,2019/8/7,37,main( ) int n,k,sum; k=1; sum=0; for(n=1;n=101;n+=2) sum=sum+k*n; k=-k; printf(“sum=%dnn“,sum); getch( ); ,求和程序(L6_1.C),运行结果: sum=51,2019/8/7,38,4 期末考试试题分析,4 期末考试试题分析 期末考试试题类型,1单项选择题(每小题1分,共20分),2填 空 题(每 空1分,共10分),3程序分析题(每 题5分,共30分),4程序填充题(每 空1分,共10分),5程序设计题(每 题10分,共30分),2019/8/7,39,分支:if语句、switch语句与break语句,指针:int a,*p; p= 两个运算符 &:取 地 址- p=&a *:间接访问- a= *p,1程序分析题- 分支、循环、指针,循环: for语句、 while语句与do-while语句,数组指针:int a5,*p; p=a;数组元素的访问 for(i=0;i6;i+) 下标法:printf(“%d”,a i ); 指针法:printf(“%d”,*(p+i); 地址法:printf(“%d”,*(a+i);,define N 10 main( ) int aN, i, j, k, t; printf(“Input %d number : “, N); for (i=0; iN; i+) scanf(“%d“, ,程序分析,Input 10 number :1 6 34 98 5 6 22 9 8 9 程序执行的输出结果为:,The sorted numbers:9 6 1 5 6 8 9 22 34 98,2019/8/7,41,2. 程序分析:用指针输出数组元素的值,# include void main ( ) int a =11,22,33,44,55,66; int i, *p; for(i=0; i6; i+) printf(“%3d ”,*(a+i); printf(“n”) for (p=a ; p(a+6); p+) printf (“%3d ” , *p/11); ,运行结果: 11 22 33 44 55 66 1 2 3 4 5 6,2019/8/7,42,变量的指针 int i, *pi; pi= 则: *pi 与 i 等价。,数组的指针 int a10,*p; p=a; 则: *(p+i)=*(a+i)=ai 等价。 移动指针 i 个元素,函数的指针 int (*pf)( ), max(x,y); 指针初始化 pf=max;则函数调用:c=(*pf)(a,b) ; 与 c=max(a,b); 等价。,指针的指针 int a, *pa, *ppa; pa=,指针的数组 int *pa3; char *str =“fd”, “12”, “ab”;,指针型函数 int *f(x,y); main() int *p; p=f(a,b);,指针类型举例,2019/8/7,43,3. 求和,#include main( ) float pi=0.0, n=1.0, s=1.0, t; do t=s/n; pi= pi+t; s=-s; n+=2; while(fabs(t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论