南邮《高级语言程序设计》期末总复习及模块一(3)

2020-05-05 13:59

#include void main() {

int x=1,y=2; for(;x<10;x++) { x+= 2; if ( x>7 ) {

printf(\ break; }

if ( x= =6 ) continue; y *= x; } }

这一模块中有很多经典算法,下面几个是同学们必须非常熟悉的:

(1) 质数问题

① 判断一个整数是否为质数(用一层循环可以解决) 会定义函数实现,函数原型:int prime(int n); 判断参数n是否为质数,如果是,返回1,如果不是,返回0。

② 找出一定范围内所有的质数(用两层循环可以解决) 会定义函数实现,函数原型:void prime(int low,int high); 找出从low到high范围内的所有质数,是质数则输出。如果函数需要返回该范围内的质数个数,则应该将返回值类型修改为int。

③能按一定的格式输出 (2)求最大公约数问题

可以用辗转相减或相除的方法都可以得到。

会定义函数实现,函数原型:int gcd(int m,int n);在辗转相除法中,当余数为0时的除数即为最大公约数,注意循环控制方式的不同可能导致返回值的不一样。求最小公倍数:a*b/gcd(a,b) (3)求和问题:

掌握求和问题中条件的控制方式、累加的方式: ① 可以根据求和的项数要求来求解,例如:求100项之和;

② 可以根据每一项的精度进行求解,例如:求到这一项的绝对值不超过1E-6为止,注意这时的循环条件应该为:while(fabs(term)>=1E-6),如果用do...while循环,条件也是这样表示。

③ 注意分子、分母、当前项、和分别用一个变量表示,正确定义变量的类型,正确解决变符号问题:s=-s; (4)输出规则图形式问题

分析行号与当前行前导空格数、符号个数、符号形状之间的关系,正确控制换行。

(5)利用循环可以控制输入数据的范围,这在实验三的P23页。 int a,b; do

{ scanf(”%d%d”,&a,&b); } while (a<10||a>b||b>1000);

实现输入的a,b范围是:10<=a<=b<=1000

模块三:函数

C语言的源程序由一个或多个函数组成,其中必须有且只能有一个主函数main( ),程序执行总是从main函数开始的,也是因main函数的结束而结束整个程序。 C函数只可以嵌套调用,而不能嵌套定义

C函数可以在定义的时候调用自己,这就是直接递归方式 这一部分需要搞清楚以下问题:

(1)函数定义:包括函数首部和函数体,函数首部又包括了函数返回值类型 函数名(形式参数表),函数体是由一对大括号括起的语句系列组成,函数的形式参数名字是无关紧要的,若函数无需返回值,则将返回值类型可以定义为void。函数的返回值由首部的函数返回值类型决定,return后的表达式类型若与其不一致,则自动转换。函数只能返回一个值,如果一个函数需要返

回多个信息,则要考虑其中的形式参数采用指针参数。 例如:int f(int a[],int n,int *max); 由函数返回数组a的前n个元素之和,而元素的最大值通过设定max指针,在函数体内求*max实现,外部调用时,要用一个地址实参对应于形式参数max。 (2)函数原型:函数应当先定义后被调用,如果出现调用先于定义的情况,则必须对后定义的函数在调用点之前进行原型声明,函数原型就是函数定义的首部最后加一个分号,在原型声明中形式参数名字可以缺省。

(3)函数调用:形式为:函数名(实在参数表),实在参数与形式参数对应的要求是:个数相同、对应位置的类型最好一致 (4)形式参数类型:有值形式参数,这时实在参数将值赋值到值形式参数变量中;指针形式参数,这时将实参的地址赋值到指针形式参数中,虽然都是单向传递,但是可以通过在被调函数中修改指针所指向的内容达到修改实参变量的目的。如:swap(int *x,int *y),在该函数体内交换的是*x和*y的值;对swap的几种正确与错误实现需要能正确理解。如果函数原型为:swap(int *x,int y),在函数体内交换*x 和y的值,则主函数中的调用形式应该为:swap(&a,b);只有实参a可能会得到改变,无法完成a、b互换的目的。

(5)变量的作用域问题:

全局变量——在所有函数之外定义的变量,作用于定义点到程序结束处,但应去除掉同名局部量的作用域部分。

局部自动变量——在某函数内部定义的变量,包括形式参数也是,其作用域只在本函数内,生命期为:所在函数被调用时分配空间,该函数当次结束时空间不复存在。下次再调用则重新分配空间。在不同函数中定义的局部量可以同名,因此形式参数可以与实在参数同名,因为处于不同的函数。

局部静态变量——在某函数内部定义的变量,有static关键字,其作用域只在本函数内,生命期为:所在函数被调用时在静态存储区分配空间,只初始化一次,本次函数调用结束后仍然存在,其值保留,但是在函数之外的其余部分均不可见,等该函数再次被调用时,该变量就在原来值的基础上继续变化。

(6)函数的递归:会阅读递归函数,并能对简单的调用得到运行结果,理解递归的条件:有明确的边界条件;原问题可转化为新问题,新旧问题的解决方法一样。 练习:

1、若用一维数组名作为函数调用时的实在参数,则实际上传递给形参的是______。

2、若在主函数中定义了数组变量:int arr[20],并调用了函数

f(arr),则下列关于函数f的原型声明,哪几个是完全等效的______。

A、 void f(int x[20]); B、 void f(int x[ ]);

C、 void f(int x[10 ]); D、 void f(int x); E、 void f(int *x);


南邮《高级语言程序设计》期末总复习及模块一(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:JIRA用户指南

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: