C语言程序设计实验报告

金陵科技学院实验报告

300 600 900

4、讨论、思考题 (1)功能:编写函数float fun(),利用以简单迭代方法Xn+1=cos(Xn)求方程:cos(x)-x=0的一个实根。迭代步骤如下:

1)取x1初值为0.0;

2)x0=x1,把x1的值赋给x0;

3)x1=cos(x0),求出一个新的x1;

4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2); 5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 输出:程序将输出结果Root=0.739085。

(2)功能:编写float fun(float array[],int n),统计出若干个学生的平均成绩,最高分以及得最高分的人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最高分为92,得最高分的人数为3人。

(3)编写函数 int fun(int lim,int aa[MAX]),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回求出素数的个数。

(4)功能:编写函数int fun(int a[M][M]),求5行5列矩阵的主、副对角线上元素之和。注意,两条对角线相交的元素只加一次。

(5)功能:请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

程序清单及流程图: 程序调试

#include int func(int a,int b) {

return(a+b); } main() {

int x=3,y=8,z=4,r; r=func(func(x,y),z); printf(\}

5

金陵科技学院实验报告

2.程序改错题

/*(1) 功能:判断m是否为素数,若是返回1,否则返回0。*/ #include

/**********FOUND**********/ int fun( int m) {

int i,k=1; if(m<=1) k=0;

/**********FOUND**********/ for(i=2;i

void main() {

int m,k=0; for(m=1;m<100;m++) if(fun(m)==1) {

printf(\ if(k%5==0) printf(\ } }

(2)功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。

#include #define N 11 main()

{ int i,number,a[N]={1,2,4,6,8,9,12,15,149,156};

printf(\ /**********FOUND**********/ scanf(\

6

金陵科技学院实验报告

printf(\ for(i=0;i

/**********FOUND**********/ for(i=N-2;i>=0;i--) if(number<=a[i])

/**********FOUND**********/ a[i+1]=a[i]; else {

a[i+1]=number;

/**********FOUND**********/ break; }

if(number

(3)找出一个二行三列二维数组中的最大值,输出该最大值及其行列下标,建议二维数组值由初始化给出。

#include \#include \main() {

int i,j,max,s,t;

/**********FOUND**********/ int a[2][3]={1,34,23,56,345,7}; /**********FOUND**********/ max=a[0][0];

7

金陵科技学院实验报告

s=t=0;

for(i=0;i<2;i++) /**********FOUND**********/ for(j=0;j<3;j++) if(a[i][j]>max)

{ max=a[i][j]; s=i; t=j; } /**********FOUND**********/

printf (\}

四、实验结果与分析(程序运行结果及其分析)

/*(1) 功能:编写函数float fun(int n),求一分数序列2/1,3/2,5/3,8/5,13/8,21/13?的前n项之和。

说明:每一分数的分母是前两项的分母之和,每一分数的分子是前两项的分子之和。

例如:求前20项之和的值为32.660259。*/ #include float fun(int n); float fun(int n) { float i;

double a = 1, b = 2, x = 2, y = 3, sum; sum = x / a + y / b; for (i = 0; i < (n/2-1); i++) {

a += b; b += a; x += y; y += x;

sum += x / a + y / b; } return sum; }

main() { int n,i; double sum =0.0; printf(\请输入一个数 n=\ scanf(\ sum= fun(n);

8

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4