上机实验九 函数综合练习一
【实验八参考答案见后】 目的和要求:
(1)熟练掌握参数传递的要领; (2)掌握全局变量的使用要领; (3)了解静态局部变量的特点。
实验内容: 一、完善程序题
1.求10!
【提示:本程序利用静态局部变量保留每次调用函数的结果。】 #include
________________________________; main() {int i; long f;
for(i=1;i<=N;i++)
f=____________________________; printf(\}
long JC(int n)
{______________________________; jc=jc*n; return jc; }
2.以下程序中的trap函数是一个用梯形法求定积分的通用函数,梯形法求定积分s的公式为:
s?((f(a)?f(b))/2??f(a?i*h))*h, h?i?1n?1a?b n其中n为积分小区间数,以下程序调用trap函数求定积分,被积函数是: f(x)=x*x+3*x+2,且n=1000,a=0,b=4。(程序运行结果参考:53.333344) #include
double mypoly(double x) {return(x*x+3.0*x+2.0); }
double trap(double a,double b) {double t,h; int i,n=1000;
t=0.5*(mypoly(a)+mypoly(b)); h=______________/(double)(n);
for(i=1;i<=n-1;i++) t=t+_____________________; t=t*h; return(t); }
main() {double y;
y=__________________; printf(\ }
3.下列程序完成的功能是:调用子函数求得数组a中所有的降序素数,即某正整数既是素数,又是降序数(所谓降序数,或是一位整数;或该数的高位数字大于等于低位数字,例如:-852。) #include
int a[N]={-852,4321,9887,5,64}; for(i=0;i if(____________________________) {n++; printf(\ if(n==0)printf(\} int SS(int x) /*此函数判断x是否素数*/ {int k,flag=1; if(x<2) ________________; for(k=2;k<=x-1;k++) if(x%k==0){flag=0;break;} return flag; } int JX(int x) /*此函数判断x是否降序数*/ {int s[20],i,k; int flag=1; if(x<0) x=-x; if(x<10) return 1; k=0; while(____________) {s[k++]=x; x=x/10; } for(i=____________; i>0;i--) if(s[i] 8 10 24 13 4 3 6 9 7 4 9 6 9 原 数 组 : 2 15 19 16 18 处 理 后 的 数 组 : 2 15 17 16 17 9 4 5 3 5 9 4 19 2 1 6 7 8 2 1 6 7 输出结果为:8 9 17 19 25 #include {int a[n][n]={{10,25,24,13,23},{4,3,6,9,7},{2,15,19,16,18},{17,9,4,5,3},{2,1,6,7,8}}; _____________________; int i; fun(a); for(i=0;i printf(\ printf(\ } void fun(_____________________) {int i, j, t, arr, col; for(i=0;i {arr=____________; col=0; for(j=1;j t=____________; ____________=x[i][col]; x[i][col]=t; } for(i=0;i 23 7 18 3 25 if(________________) {t=________; ________________; ________=t;} } 二、编程题 使用全局变量完成下列任务:任意读入10个整数,调用子函数求得它们的平均值、最大值、最小值后由主函数输出。 【实验八参考答案】 一、完善程序题 1.以下程序统计指定句子(即只含有字母、空格、句号的字符串)中的单词个数,并输出每个单词。 【本题的思路是:将每个单词存放到二维数组的每一行,则存放的行数即为单词的个数。】 #include {char *text=\ I will pass the examination in the summer holiday.\ int n, i, j, word; char a[20][80]; while(*text==' ' )text++; /*去掉前导空格*/ n=0; j=0; for(i=0;i if(isalpha(*(text+i))) /* isalpha 函数的功能是判断其参数是否为字母,要加\ {a[n][j++]= *(text+i) ; word=0;} else if(word==0){ word=1; a[n][j]='\\0' ; n++ ; j=0 ; } printf(\for(i=0;i 2.用指针完成下列任务:输出如下矩阵: 1 2 3 4