和积分的区间等分数作为函数的参数。分别求出下列定积分的值。 4.解答参考 (1)
#include
char *p[3]={s[0],s[1],s[2]}; char *pc; int i,j,k;
cout<<\ for (i=0;i<3;i++) cin>>p[i]; for (i=0;i<2;i++) { k=i;
for (j=i+1;j<3;j++)
if (strcmp (p[i],p[j])<0) k=j; if (k!=i)
{ pc=p[i];p[i]=p[k];p[k]=pc; } }
for ( i=0;i<3;i++) cout<
程序运行结果: Input 3 String: Visual Basic Visual C++ Delphi Visual C++ Visual Basic Delphi
Visual Basic Visual C++ Delphi (3) 解:
# include
{ return x-y;} int mul(int x,int y) { return x*y;} int div(int x,int y) { return x/y;} int res(int x,int y) { return x%y;} void main(void) { int x,y;
char operate; int (*f)(int,int);
cout<<\ cout<<\ while(1) {
cin>>x>>operate>>y ; switch (operate) {
case '+': f=add; break;
case '-': f=sub; break; case '*': f=mul; break; case '/': f=div; break; case '%': f=res; break; default: return; }
cout< 程序运行结果: input three 0 end Input x operate y= 10 + 20 10+20=30 10 - 5 10-5=5 10 * 15 10*15=150 10 / 2 10/2=5 10 % 3 10%3=1 0 0 0 (3) 方法一:用指向一维数组的指针变量和二维数组的行数作为函数的参数 #include float ave(float (*p)[3],float *max,float *min) { float sum=0; int i,j; for(i=0;i<3;i++) { for(j=0;j<3;j++) { sum+=(*p)[j]; if (*max<(*p)[j]) *max=(*p)[j]; if (*min>(*p)[j]) *min=(*p)[j]; } p++; } return sum/9; } void main(void) { float a[3][3],max,min,average; int i,j; cout<<\ for (i=0;i<3;i++) for (j=0;j<3;j++) cin>>a[i][j]; max=min=a[0][0]; average=ave(a+0,&max,&min); cout<<\ cout<<\ cout<<\} 方法二:用数组名为函数参数,在函数内用指向一维数组的指针变量,求出平均值、最大值和最小值,并输出。 解: #include { float max,min,sum=0,(*p)[3]; int i,j; max=min=a[0][0]; for(i=0;i<3;i++) { p=a+i; for(j=0;j<3;j++) { sum+=(*p)[j]; if (max<(*p)[j]) max=(*p)[j]; if (min>(*p)[j]) min=(*p)[j]; } } cout<<\} void main(void) { float b[3][3]; int i,j; cout<<\ for (i=0;i<3;i++) for (j=0;j<3;j++) cin>>b[i][j]; fun(b); } 程序运行结果: Input Data:10 25 90 80 70 35 65 40 55 ave=52.2222 max=90 min=10 (4) 图 用梯形法求定积分面积 y y=f (x) yn-1 y2 yn y1 y0 △s0 △s1 △s2 ? △sn-1 x=a x=b x0 x1 x2 x3 xn-1 xn x 0 a h b 分析:由高等数学可知, 的定积分值等于由曲线y=f(x)、直线x=a 、x=b、 y=0所围曲边梯形的面积s,如下图所示。现将曲边梯形划分成n个小曲边梯形△s0、△s1、△s2、?、△sn-1。每个曲边梯形的高均为h=(b-a)/n,用矩形近似曲边梯形后各曲边梯形的面积近似为: △s0=y0*h △s1=y1*h △s2 =y2*h ? △sn-1=yn-1*h s =△s0+△s1+△s2+?+△sn-1=(y0+y1+y2+?+yn-1)*h =((f (x0)+(f (x1)+f (x2)+…+f (xn-1))*h ∵x0=a ,xn=b,xi=a+i*h ∴用梯形法求定积分面积的公式为: 其中:a、b分别为积分的下、上限,n为积分区间的分隔数,h=(b-a)/n,h为积分步长;f(x)为被积函数。 程序编写如下: # include { return (1+log(x)+x*x*x);} float f2(float x) { return (1/(1+x*x));} float f3(float x) { return (x+exp(x))/(1+sin(x)+x*x);} float integral(float (*f)(float),float a,float b,int n) { float y,h; int i; y=0; h=(b-a)/n; for (i=0;i void main (void ) { cout<<\ cout<<\ cout<<\} 程序运行结果: s1=5.13245 s2=2.11232 s3=3.31222 实验九 1.实验目的 (1)初步学会用枚举类型变量处理有限元素组成的集合问题。 (2)掌握结构体类型、结构体变量、结构体数组的定义格式。 (3)学会使用结构体变量与结构体数组处理如职工档案、职工工资等问题。 2.实验要求 (1)编写实验程序; (2)在VC++运行环境中,输入源程序; (3)编译运行源程序; (4)输入测试数据进行程序测试; (5)写出运行结果。 3.实验内容 (1)从A、B、C、D四个字母中任取3个不同的字母,共有多少种取法?编写程序,输出