《C语言程序设计》实验指导书答案 下载本文

#define n 4 int main() {

int i,j;

int a[m][n]; time_t t;

srand((unsigned) time(&t)); printf(\ for (i=0; i

a[i][j]=rand()0; printf(\ if(j!=0&&j%(n-2)==0) {

a[i][n-1]=0; printf(\ } }

printf(\ for(i=0;i

for(j=0;j

printf(\ }

printf(\ }

system(\ return 0; }

3. //有一个m×n矩阵,找出最大元素值及其最大元素值所在的行、列位置。 #include #include #include #define m 3 #define n 3 int main() {

int i,j,max=-65536; int row,col;

int a[m][n]={77,99,69,76,87,90,100,88,66};

for (i=0; i

max=-65536; for(j=0;j

if(a[i][j]>max) {

max=a[i][j]; row=i;col=j; } } }

printf(\

printf(\另一种输出方式 system(\ return 0; }

4. //有n个考生,每个考生有考号和一个总分成绩,如果录取m人,确定录取分数线,并输出录取考生的考号和成绩。 #include #include #include #define n 4

void SelectSort(int a[n][2])//选择排序 { int i,j,k,min,t0,t1; for(i=0;i

{//选出最小值所在的位置j

min=65535;//可试试此句不在循环内的结果。 for(k=i;k

if(i!=j) {//交换 t1=a[i][1]; t0=a[i][0]; a[i][1]=a[j][1]; a[i][0]=a[j][0]; a[j][1]=t1; a[j][0]=t0;

} }

printf(\ for(i=0;i

printf(\}

int main() {

int i,j,m;

int a[n][2]={1,99,2,76,3,90,4,88};

SelectSort(a);//调用选择排序函数,第八章内容 printf(\ scanf(\ printf(\

for (i=n-m; i

printf(\ }

system(\ return 0; }

5. //将矩阵m(n,n)对角线上的元素置为1,其余元素置为0。 #include #include #include #define n 3 int main() {

int i,j;

int m[n][n]={1,99,2,76,3,90,4,88,66}; for(i=0;i

m[i][j]=1; else

m[i][j]=0;

printf(\ for(i=0;i

for(j=0;j

printf(\ printf(\ }

system(\ return 0; }

实验七(第7章实验

实验目的:

1.掌握函数的定义和使用方法。

2.了解参数传递方式。 3.掌握简单的递归算法。 实验内容:

N!

1. 用函数过程计算 —————— M!(N-M)!

2.裴波那契数列的前两项是1、1,以后的每一项都是其相邻前两项之和。编写函数过程求: ⑴ 数列前n项和FS;⑵ 前n项的平均值V。并就n=20计算并输出FS与V。

3.编写一个用梯形法求一元函数f(x)在〔a,b〕上积分近似值的函数过程。并就 f(x)=sin(2x)+x,当[a,b]=[0,3.14159]、小区间数n=10和n=20时,分别计算并输出积分的近似值s1和s2,保留3位小数。(未实现)

4.编写一个函数程序,其功能是判定一个数是否为素数,若是素数则函数返回值为1, 若不是素数则函数返回值为0。用此函数判定找出 100 以内最大的 3 个素数。

532

5.编写函数程序,用牛顿迭代法求一元方程 x+2x-x+x+1=0在 0 附近的近似值。 6.编写函数程序,计算正整数 n1~n2 之间所有素数之和。 7.用递归方法求 Fibonacci数列前 20 项及其这20项的和。 实验过程: 实验结果:1. // #include #include

float func(int m,int n) { int i;

long int factorial_n=1,factorial_m=1,factorial_nm=1; float solut=0.0; for(i=1;i<=n;i++) factorial_n*=i; for(i=1;i<=m;i++) factorial_m*=i; for(i=1;i<=n-m;i++) factorial_nm*=i;

solut= 1.0*factorial_n/(factorial_m*factorial_nm);//注意括号,如果没有,除的意义就变了。 return solut; }

main(){ int m,n;