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

下载本文档

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

文档简介

2019/11/24,1,怎样学好C语言程序设计,怎样学好C语言程序设计,2019/11/24,2,目标与要求,学习C语言程序设计的目标与要求,通俗地讲,就是要学会:编写程序,运行程序,得到正确结果。,2019/11/24,3,目录,怎样学好C语言程序设计,1C语言程序设计的组成2C程序的组成3C程序设计的基本算法4期末考试试题分析,2019/11/24,4,1C语言程序设计的组成,1C语言程序设计的组成,一.C语言基本语法,1.C语言基本元素,基本元素,1.基本字符集2.标识符:3.关键字:,1.数字:01234567892.字母:abczABCZ3.运算符:+-*/%=等4.特殊符号:_(下划线)回车(r)换行(n)制表符(t)等,常量名、变量名、数组名、类型名、存储方式名、语句、函数名、文件名等。,autobreakcasecharconstcontinuedefaultdodoubleelserenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile,标准标识符或保留字或基字(32个),2019/11/24,7,2.C语言数据类型,2019/11/24,8,3.C语言执行语句(1)表达式与表达式语句,用运算符将运算对象连接形成的式子就是表达式。,表达式加分号就构成了表达式语句。,1.表达式语句2.复合语句3.控制语句4.空语句,输入/输出(I/O)是表达式语句。,2019/11/24,9,运算符,1算术运算符2赋值运算符3关系运算符4逻辑运算符5自增、自减运算符6条件运算符7位运算符8sizeof运算符(求字节运算符)9逗号运算符,2019/11/24,10,运算符的优先级与结合性,单目、条件、赋值运算符的结合性是自右向左。其它运算符是自左向右。,2019/11/24,11,表达式,1算术表达式2逻辑表达式3关系表达式4赋值表达式5条件表达式6逗号表达式,表达式加分号就构成了表达式语句。,2019/11/24,12,C程序,源文件1源文件2源文件3.源文件n,预处理命令函数1函数2.函数n,说明语句执行语句,main(),最小编译单位,最小功能单位,必须具有一个主函数,4.C语言程序组成,2019/11/24,13,二.C语言程序设计1.C语言程序结构,main()程序首部说明语句数据结构语句输入语句执行语句运算处理算法设计输出语句,程序数据结构算法,2019/11/24,14,(1)什么是数据结构,数据及其联系,即数据元素的组织形式被抽象为数据结构。,在C程序设计中,数据结构用数据类型来描述。,数据结构,数据类型,2019/11/24,15,(2)什么是算法,算法:解决问题的方法和有限的步骤,例,求圆周长和圆面积,算法:l2*3.14*r;s3.14*r*r;,最简单的算法用数学公式描述。,2019/11/24,16,2.C语言基本算法,程序数据结构算法,常用算法有:枚举法、迭代法、递推法、递归法、分治法等。,复杂的算法要用工具来描述,常用的工具有程序流程图、N-S图、PAD图等方式,但目前应用最广泛的是程序流程图和N-S图。,2019/11/24,17,用规定的一系列图形、流程线和文字说明算法中的基本操作和控制流程。,scanf(“%d”,printf(“%d”,s);,While(a=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/11/24,25,根据问题的部分条件预估答案的范围,然后在此范围内对所有可能的情况逐一验证(穷举),直到全部情况都通过了验证为止。,三.穷举法,穷举法步骤:预估出答案的大致范围;用循环语句对范围内所有可能情况进行穷举;在穷举中逐一验证,将满足条件的情况输出,即为所解。,凡是求解有多少种方案或可能等一类非数值问题都可以用穷举法来求解。如:百钱百鸡问题、换硬币问题、水仙花问题、完数问题、素数问题等。,2019/11/24,26,(1)百钱百鸡问题,例:每只公鸡5个钱,每只母鸡3个钱,每3只小鸡1个钱,用100个钱,买100只鸡,问公鸡、母鸡和小鸡各买几只?,穷举法分析:设公鸡、母鸡和小鸡数为x,y,z.答案的大致范围:x=119,y=133穷举:for(x=1;x=19;x+)for(y=1;y=33;y+)条件:n=5*x+3*y+z/3,2019/11/24,27,百钱百鸡程序,main()intx,y,z;for(x=1;x20;x+)for(y=1;y34;y+)z=100-x-y;if(5*x+3*y+z/3=100),共三组解:xyz320774187871380811811168312484,2019/11/24,28,(2)完数问题,例:编程输出1000以内的所有“完数”。所谓“完数”是该数恰好等于它的全部因子之和。例如,6的因子是1,2,3,恰好6=1+2+3,因此6是“完数”。,穷举法分析:答案的大致范围:n=11000穷举: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()inti,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+328=1+2+4+7+14496=1+2+4+8+16+31+62+124+248,完数程序,2019/11/24,30,根据问题的递推关系,由已知项,经过有限次的递推迭代,得到待求的未知项。,四.递推法,迭代法步骤:列出问题的已知项;根据问题的关系,写出递推公式;用循环语句,对递推公式进行有限次的递推迭代,直到待求的未知项,即为所解。,凡是具有递推公式的一类数值问题,都可以用迭代法来求解。如:级数问题、斐波那契数列问题等。,2019/11/24,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()inti,n;longn1,n0=1;printf(Inputn:);scanf(%d,阶乘程序(JC!.C),运行结果:Inputn:101!=12!=23!=64!=245!=1206!=7207!=30408!=403209!=36288010!=3628800,2019/11/24,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()longintf1=1,f2=1,f;inti;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/11/24,35,迭代法是一种数值近似求解的方法。它把一个复杂问题的求解转化为简单的迭代算式,经过重复执行这个迭代算式,得到最终解。有精确和近似两种迭代法。,五.迭代法,迭代法步骤:列出迭代变量的初始值;根据问题的条件,写出迭代公式;用循环语句,重复执行这个迭代公式,直到待求的最终值。,凡是对N个数求和、求均值、求方差等这一类问体都适合用精确迭代法来求解;但主要是用近似迭代法来求解代数方程、微分方程及解方程f(x)=0等问题。,2019/11/24,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/11/24,37,main()intn,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/11/24,38,4期末考试试题分析,4期末考试试题分析期末考试试题类型,1单项选择题(每小题1分,共20分),2填空题(每空1分,共10分),3程序分析题(每题5分,共30分),4程序填充题(每空1分,共10分),5程序设计题(每题10分,共30分),2019/11/24,39,分支:if语句、switch语句与break语句,指针:inta,*p;p=两个运算符p=a;数组元素的访问for(i=0;i6;i+)下标法:printf(“%d”,ai);指针法:printf(“%d”,*(p+i);地址法:printf(“%d”,*(a+i);,defineN10main()intaN,i,j,k,t;printf(Input%dnumber:,N);for(i=0;iN;i+)scanf(%d,程序分析,Input10number:1634985622989程序执行的输出结果为:,Thesortednumbers:9615689223498,2019/11/24,41,2.程序分析:用指针输出数组元素的值,#includevoidmain()inta=11,22,33,44,55,66;inti,*p;for(i=0;i6;i+)printf(“%3d”,*(a+i);printf(“n”)for(p=a;p=1e-6);printf(“pi=%fn”,4*pi);,程序的执行结果为:pi=3.141598,用下列公式计算的值111111-=1-+-+-4357911n(精度要求|1/n|10-6),2019/11/24,44,4.水仙花问题,例:输出所有的“水仙花数”。所谓“水仙花数”是一个3位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为153=13+53+33。,穷举法分析:答案的大致范围:n=100999;穷举:for(n=100;n=999;n+)条件:n=a*a*a+b*b*b+c*c*c其中,a,b,c分别为该数n的百位、十位和个位数。,2019/11/24,45,水仙花程序,main()intn,a,b,c;for(n=100;n=999;n+)a=n/100;b=n%100/10;c=n%10;if(n=a

温馨提示

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

评论

0/150

提交评论