圆的半径和⾯积c语⾔流程图,设计⼀个算法:输⼊圆的半径输
出圆的⾯积
学习C语⾔始终要记住“曙光在前头”和“千⾦难买回头看”,“千⾦难买回头看”是学习知识的重要⽅法,就是说,学习后⾯的知识,不要忘了回头弄清遗留下的问题和加深理解前⾯的知识,这是我们学⽣最不易做到的,然⽽却⼜是最重要的.⽐如:在C语⾔中最典型的是关于结构化程序设计构思,不管是那种教材,⼀开始就强调这种⽅法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了.学习C语⾔就是要经过⼏个反复,才能前后贯穿,积累应该掌握的C知识.
那么,我们如何学好《C程序设计》呢?
⼀.学好C语⾔的运算符和运算顺序
这是学好《C程序设计》的基础,C语⾔的运算⾮常灵活,功能⼗分丰富,运算种类远多于其它程序设计语⾔.在表达式⽅⾯较其它程序语⾔更为简洁,如⾃加、⾃减、逗号运算和三⽬运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全.当多种不同运算组成⼀个运算表达式,即⼀个运算式中出现多种运算符时,运算的优先顺序和结合规则显得⼗分重要.在学习中,只要我们对此合理进⾏分类,出它们与我们在数学中所学到运算之间的不同点之后,记住这
些运算也就不困难了,有些运算符在理解后更会牢记⼼中,将来⽤起来得⼼应⼿,⽽有些可暂时放弃不记,等⽤到时再记不迟.
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从⾼到低,优先级为1 ~ 15,除第2、3级和第14级为从右⾄左结合外,其它都是从左⾄右结合,它决定同级运算符的运算顺序.下⾯我们通过⼏个例⼦来说明:
(1) 5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左⾄右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是% (求余数)运算,所以表达式的最终结果为10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
对于c=++a*b来说,按表中所列顺序,+ +先执⾏,*后执⾏,所以+ + a执⾏后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20⽽不是3*5=15了;⽽对于d=a++*b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,⽽a参与运算后其值加1,值为5.这个例⼦执⾏后,a的值为5,b的值为5,c的值为20,d的值也是20;
(3)(a = 3,b = 5,b+ = a,c = b* 5)
例⼦中的“,”是逗号结合运算,上式称为逗号表达式,⾃左向右结合,最后⼀个表达式的结果值就是逗号
表达式的结果,所以上⾯的逗号表达式结果为40,a的值为3,b的值为8,c的值为40.
(4)a=5;b=6;c=ab?a:b;
例中的ab?a:b是⼀个三⽬运算,它的功能是先做关系运算ab部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以⽤来代替if…else…语句的简单应⽤.
⼆.学好C语⾔的四种程序结构
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就⾏,它的执⾏顺序是⾃上⽽下,依次执⾏.
例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯⼦⽔,这当然要⽤到第三个杯⼦,假如第三个杯⼦是c,那么正确的程序为: c = a; a = b; b = c; 执⾏结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执⾏结果就变成a = b = c = 5,不能达到预期的⽬的,初学者最容易犯这种错误.顺序结构可以独⽴使⽤构成⼀个简单的完整程序,常见的输⼊、计算,输出三步曲的程序就是顺序结构,例如计算圆的⾯积,其程序的语句顺序就是输⼊圆的半径 r,计算s = 3.14159*r*r,输出圆的⾯积s.不过⼤多数情况下顺序结构都是作为程序的⼀部分,与其它结构⼀起构
成⼀个复杂的程序,例如分⽀结构中的复合语句、循环结构中的循环体等.
(2) 分⽀结构
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择.对于要先做判断再选择的问题就要使⽤分⽀结构.分⽀结构的执⾏是依据⼀定的条件选择执⾏路径,⽽不是严格按照语句出现的物理顺序.分⽀结构的程序设计⽅法的关键在于构造合适的分⽀条件和分析程序流程,根据不同的程序流程选择适当的分⽀语句.分⽀结构适合于带有逻辑或关系⽐较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语⾔分开,使得问题简单化,易于理解.程序流程图是根据解题分析所绘制的程序执⾏流程图.
学习分⽀结构不要被分⽀嵌套所迷惑,只要正确绘制出流程图,弄清各分⽀所要执⾏的功能,嵌套结构也就不难了.嵌套只不过是分⽀中⼜包括分⽀语句⽽已,不是新知识,只要对双分⽀的理解清楚,分⽀嵌套是不难的.下⾯我介绍⼏种基本的分⽀结构.
①if(条件)
{
分⽀体
}
这种分⽀结构中的分⽀体可以是⼀条语句,此时“{ }”可以省略,也可以是多条语句即复合语句.它有两条分⽀路径可选,⼀是当条件为真,执⾏分⽀体,否则跳过分⽀体,这时分⽀体就不会执⾏.如:要计算x的绝对值,根据绝对值定义,我们知道,当x=0时,其绝对值不变,⽽x0时其绝对值是为x的反号,因此程序段为:if(x0) x=-x;
②if(条件)
{分⽀1}
else
{分⽀2}
这是典型的分⽀结构,如果条件成⽴,执⾏分⽀1,否则执⾏分⽀2,分⽀1和分⽀2都可以是1条或若⼲条语句构成.如:求ax^2+bx+c=0的根
分析:因为当b^2-4ac=0时,⽅程有两个实根,否则(b^2-4ac0)有两个共轭复根.其程序段如下:
d=b*b-4*a*c;
if(d=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(“x1=%8.4f+%8.4fi\n”r, i);
printf(“x2=%8.4f-%8.4fi\n”r,i)
}
③嵌套分⽀语句:其语句格式为:
if(条件1) {分⽀1};
else if(条件2) {分⽀2}
else if(条件3) {分⽀3}
……
else if(条件n) {分⽀n}
else {分⽀n+1}
嵌套分⽀语句虽可解决多个⼊⼝和出⼝的问题,但超过3重嵌套后,语句结构变得⾮常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以⽤下⾯的语句.
④switch开关语句:该语句也是多分⽀选择语句,到底执⾏哪⼀块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那⼀路,它不同if…else 语句,它的所有分⽀都是并列的,程序执⾏时,由第⼀分⽀开始查,如果相匹配,执⾏其后的块,接着执⾏第2分⽀,第3分⽀……的块,直到遇到bre
ak语句;如果不匹配,查下⼀个分⽀是否匹配.这个语句在应⽤时要特别注意开关条件的合理设置以及break语句的合理应⽤.
(3)循环结构:
循环结构可以减少源程序重复书写的⼯作量,⽤来描述重复执⾏某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语⾔中提供四种循环,即goto循环、while循环、do –while循环和for循环.四种循环可以⽤来处理同⼀问题,⼀般情况下它们可以互相代替换,但⼀般不提倡⽤goto循环,因为强制改变程序的顺序经常会给程序的运⾏带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环.常⽤的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使⽤,这就要清楚三种循环的格式和执⾏顺序,将每种循环的流程图理解透彻后就会明⽩如何替换使⽤,如把while循环的例题,⽤for语句重新编写⼀个程序,这样能更好地理解它们的作⽤.特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了⼀个死循环,这是初学者的⼀个常见错误.
在学完这三个循环后,应明确它们的异同点:⽤while和do…while循环时,循环变量的初始化的操作应在循环体之前,⽽for循环⼀般在语句1中进⾏的;while 循环和for循环都是先判断表达式,后执⾏循环体,⽽do…while循环是先执⾏循环体后判断表达式,也就是说do…while的循环体最少被执⾏⼀次,⽽wh
ile 循环和for就可能⼀次都不执⾏.另外还要注意的是这三种循环都可以⽤break语句跳出循环,⽤continue语句结束本次循环,⽽goto语句与 if构成的循环,是不能⽤break和 continue语句进⾏控制的.
一个完整的c语言程序顺序结构、分⽀结构和循环结构并不彼此孤⽴的,在循环中可以有分⽀、顺序结构,分⽀中也可以有循环、顺序结构,其实不管哪种结构,我们均可⼴义的把它们看成⼀个语句.在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较⼤,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的⽅法是将C程序设计成模块化结构.
(4)模块化程序结构
C语⾔的模块化程序结构⽤函数来实现,即将复杂的C程序分为若⼲模块,每个模块都编写成⼀个C函数,然后通过主函数调⽤函数及函数调⽤函数来实现⼀⼤型问题的C程序编写,因此常说:C程序=主函数+⼦函数.因些,对函数的定义、调⽤、值的返回等中要尤其注重理解和应⽤,并通过上机调试加以巩固.
三.掌握⼀些简单的算法
编程其实⼀⼤部分⼯作就是分析问题,到解决问题的⽅法,再以相应的编程语⾔写出代码.这就要求掌握算法,根据我们的《C程序设计》教学⼤纲中,只要求我们掌握⼀些简单的算法,在掌握这些基
本算法后,要完成对问题的分析就容易了.如两个数的交换、三个数的⽐较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明⽩排序的具体过程,对代码的理解就不难了.如⽤选择法对10个不同整数排序(从⼩到⼤),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]⽐较,若a[1]⽐a[2]~a[10]都⼩,则不进⾏交换,即⽆任何操作;若a[2]~a[10] 中有⼀个⽐a[1]⼩,则将其中最⼤的⼀个(假设为a)与a[1]交换,此时a[1]中存放了10个中最⼩的数.第⼆轮将a[2]与a[3]~a[10] ⽐较,将剩下9个数中的最⼩者a与a[2]交换,此时a[2] 中存放的10个数中第2⼩的数;依此类推,共进⾏9轮⽐较,a[1]到a[10]就已按从⼩到⼤的顺序存放.即每⼀轮都出剩下数中的最⼩⼀个,代码如下:
for(i=1;i=9;i++)
for(j=i+1;j=10;j++)
if(aa[j]
{temp=a;
a=a[j];
a[j]=temp;
}
结语:当我们把握好上述⼏⽅⾯后,只要同学们能克服畏难、厌学、上课能专⼼听讲,做好练习与上机调试,其实C语⾔并不难学.
解析看不懂?求助智能家教解答查看解答
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论