提高C语言的编程能力
这是学好C编程的基础。c语言操作非常灵活,功能非常丰富,操作的类型也远远多于其他编程语言。与其他编程语言相比,表达式更简洁,如自加、自减、逗号运算、三眼运算等,使表达式更简单。但是初学者往往觉得这个表达式很难读懂,关键原因是没有完全理解运算符和运算序列。当多种不同的运算组成一个运算表达式时,即一个表达式中有多个运算符时,运算的优先顺序和组合规则非常重要。在学习中,只要我们把它们合理分类,找出它们与数学中所学运算的区别,记住这些运算并不难。有些运算符理解后会记在心里,以后用起来得心应手,有些运算符可以暂时放弃,以后用的时候再记。
首先要明确,运营商是按照不同的优先级来分类的。C编程中的运算符可分为15优先级,从高到低,优先级为1 ~ 15。除了第二级、第三级和14级是从右到左组合的,其他都是从左到右组合的,这就决定了同级运算符的运算顺序。让我们用几个例子来说明:
表达式(1) 5*8/4%10中有三个运算符,是同一级别的运算符,运算顺序从左到右组合。所以先算5 *8=40,再除以4,结果是10,最后是%(余数)运算,所以表达式最终结果是6544。
(2)a = 3;b = 5;c = ++ a* b;d = a++ * b;
对于c=++a*b,按表中所列顺序,先执行++后执行*,所以执行++a后,A的值为4。因为++是前置运算,所以运算中涉及了A的值,C的计算公式是4*5=20而不是3*5=15。对于d=a++*b,因为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 = a & gtb?甲:乙;
示例中的A & gtb?A:b是三眼运算,作用是做关系运算A >;在B部分,如果结果为真,则在问号后取A的值,否则在冒号后取B的值,所以C的值应该为6。这个操作可以用来代替if…else…语句的简单应用。
2.学好C语言的四种程序结构
(1)序列结构
Sequence structure的程序设计是最简单的,只要按照解题的顺序写出相应的语句,它的执行顺序是自上而下的。
比如说;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)分支结构
序列结构的程序虽然可以解决计算和输出的问题,但在选择之前无法判断。对于选择前需要判断的问题,要用分支结构。分支结构的执行是按照一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构编程方法的关键在于构造合适的分支条件和分析程序流程,并根据不同的程序流程选择合适的分支语句。分支结构适用于逻辑或关系比较等有条件判断的计算。设计这类程序时,往往需要先画出其程序流程图,再根据程序流程编写源程序,将程序设计分析从语言中分离出来,使问题简单易懂。程序流程图是根据问题解决分析绘制的程序执行流程图。
学习分支结构不要被分支嵌套所迷惑,只要流程图绘制正确,每个分支要执行的功能明确,嵌套结构并不难。嵌套只是包含分支语句的分支,并不是新知识。只要对双分支理解清楚,分支嵌套并不难。我来介绍几个基本的分支结构。
①如果(条件)
{
分支
}
这个分支结构中的分支可以是一个语句,在这种情况下可以省略“{}”,也可以是多个语句,即复合语句。它有两条分支路径可供选择。一种是当条件为真时执行分支,否则跳过分支,不执行分支。比如计算x的绝对值,根据绝对值的定义,我们知道当x >;=0,其绝对值保持不变,而x
②如果(条件)
{分行1}
其他
{分支2}
这是典型的分支结构。如果条件成立,执行分支1,否则执行分支2、分支1和分支2,分支2可以由1或几个语句组成。比如求ax ^ 2+bx+c = 0的根。
分析:因为当B 2-4ac >时;=0,方程有两个实根,否则(b 2-4ac
d = b * b-4 * a * c;
if(d & gt;=0)
{ x 1 =(-b+sqrt(d))/2a;
x 1 =(-b-sqrt(d))/2a;
printf("x1=%8.4f,x2=%8.4f\n ",x1,x2);
}
其他
{ r =-b/(2 * a);
I = sqrt(-d)/(2 * a);
printf(" x 1 = % 8.4f+% 8.4 fi \ 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分行}
嵌套分支语句可以解决多个入口和出口的问题,但是经过三重以上的嵌套后,句子结构变得非常复杂,对于程序的阅读和理解极其不方便。建议在triple内嵌套,超过triple就可以使用下面的语句。
④switch语句:该语句也是多分支选择语句。执行哪个块取决于开关设置,即表达式的值与常量表达式匹配的路径。它不同于if…else语句,它的所有分支都是并行的。程序执行时,第一个分支开始搜索,如果匹配,则执行后续的块,然后执行第二个分支和第三个分支的块,直到。如果不匹配,找出下一个分支是否匹配。在应用该语句时,要特别注意switch条件的合理设置和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的循环体至少执行一次,而while循环和for可能不执行一次。另外需要注意的是,三种循环都可以用break语句跳出循环,用continue语句结束这个循环,而goto语句和if形成的循环不能用break和continue语句控制。
序列结构、分支结构和循环结构并不是相互孤立的。循环中可以有分支和序列结构,分支中也可以有循环和序列结构。事实上,无论是哪种结构,我们都可以将它们视为广义上的陈述。在实际编程过程中,这三种结构往往相互结合,实现各种算法,设计相应的程序。但是编程的问题就大了,写出来的程序往往很长,重复,导致可读性差,难以理解。解决这个问题的方法是将C程序设计成模块化结构。
(4)模块化程序结构
C语言的模块化程序结构是通过函数来实现的,即把复杂的C程序分成几个模块,每个模块写成一个C函数,然后通过从主函数调用函数,从函数调用函数,写出一个大型问题的C程序,所以经常说C程序=主函数+子函数。所以在函数的定义、调用、返回值上要特别注意理解和应用,通过计算机调试巩固。
3.掌握一些简单的算法。
其实编程工作很大一部分就是分析问题,寻找问题的解决方案,然后用相应的编程语言编写代码。这需要掌握算法。按照我们C程序设计的教学大纲,只需要掌握一些简单的算法就可以了。掌握了这些基本算法后,就很容易完成问题的分析了。比如两个数的交换,三个数的比较,选择排序,冒泡排序,这就需要我们明确这些算法的内在含义,其中选择排序和冒泡排序是有点难度的,但是只要了解了排序的具体过程,理解代码就不难了。如果用选择法对10个不同的整数进行排序(从小到大),选择法的排序思想是:有10个元素a[1]~a[10],a[1]和A [2] ~ A [65438+]如果a[2]~a[10]中的一个小于a[1],则最大在第二轮中,a[2]与a[3]~a[10]进行比较,剩余9个数中最小的a[i]与a[2]进行交换,a[2]是a[2]中存储的10个数中第二小的数。以此类推,* * *进行9轮比较,a[1]到a[10]已经按降序存储。即在每一轮中找出最小的剩余数,代码如下:
for(I = 1;我& lt=9;i++)
for(j = I+1;j & lt=10;j++)
if(a[I]& gt;a[j]
{ temp = a[I];
a[I]= a[j];
a[j]= temp;
}
结论:当我们把握住以上几个方面,只要能克服畏难情绪和厌学情绪,上课专心听讲,在电脑上做题调试,其实C语言并不难学。
我觉得这篇文章不错,就给你了。自己写一个软件会收获很多。