
按二重积分的定义做。
我的这个出错,一起讨论下吧:
#include<stdioh>
#include<mathh>
#define N 100
void main(){
double result,(p)(double,double);
double f(double,double);
double integral(double,double,double,double,double(p)());
p=f;
// printf("请输入a b c d 的值:\n");
// scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
result=integral(20,80,0,60,p);
printf("该二重积分的值为:\n");
printf("%f",result);
printf("\n");
}
//求二重积分的函数
double integral(double a,double b,double c,double d,double (p)(double,double)){
int i,j;
double x,y,h1,h2,volum=0;
h1=(b-a)/N;
h2=(d-c)/N;
x=a;
y=c;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
volum+=(p)(x,y)h1h2;
y+=h2;
}
x+=h1;
}
return(volum);
}
double f(double x,double y){
double h;
h=sqrt((2+xx)sin(xy)sin(xy))+xxycos(x)-30xyy;
return (h);
}
运行结果:
10^3
=1000在c语言里是不对的,^在c语言里是按位异或运算符。。lz应该是把vb和c弄混了吧。。vb中10^3
=1000是对的。。
c语言中,10的3次方是1e3,但用e来表示10的次方前提是e前后都是常数,若lz的a在之前被定义为常数,则10ea是对的,不然则要通过循环或函数来实现。。
简单一点函数
pow10(a)就可以表示10的a次方,但是这样用,前面一定要加#include“mathh”,因为这个函数是定义在这个头文件之下的。。
lz念在我大晚上,,还是情人节大晚上给你码字的份上,给我最佳答案吧。。。
#include<iostreamh>
//定义结构类型
struct student
{
int num;
char name[20];
float grade;
};
void main(void)
{
//声明数组
int i,size;
char str[]="This is a string";
int int_values[] = {51, 23, 2, 44, 45,0,11};
float float_values[] = {151, 133, 222, 104, 15};
student st_arr[]={101,"WangLin",92,102,"LiPing",85,103,"ZhaoMin",88};
//显示char类型数组元素及其大小
size=sizeof(str) / sizeof(char);
cout<<"Number of elements in str: ";
cout<<size<<endl;
for(i=0;i<size;i++) {
cout<<str[i];
}
cout<<endl;
//显示int类型数组元素及其大小
size=sizeof(int_values) / sizeof(int);
cout<<"Number of elements in int_values: ";
cout<<size<<endl;
for(i=0;i<size;i++) {
cout<<int_values[i]<<" ";
}
cout<<endl;
//显示float类型数组元素及其大小
size=sizeof(float_values) / sizeof(float);
cout<<"Number of elements in float_values: ";
cout<<size<<endl;
for(i=0;i<size;i++) {
cout<<float_values[i]<<" ";
}
cout<<endl;
//显示student类型数组元素及其大小
size=sizeof(st_arr) / sizeof(student);
cout<<"Number of elements in st_arr: ";
cout<<size<<endl;
for(i=0;i<size;i++) {
cout<<st_arr[i]num<<" ";
cout<<st_arr[i]name<<" ";
cout<<st_arr[i]grade<<endl;
}
}
#include<iostreamh>
//add()函数的定义,其有返回值
double add(double x,double y)
{
double z;
z=x+y;
cout<<x<<"+"<<y<<"="<<z<<endl;
return(z);
}
main()
{
double a=05,b=10;
//以不同参数形式调用函数add()
cout<<"add(15,25)="<<add(15,25)<<endl;
cout<<"add(a,b)="<<add(a,b)<<endl;
cout<<"add(2a,a+b)="<<add(2a,a+b)<<endl;
cout<<"----------------------"<<endl;
//以表达式方式调用函数add()
double c=2add(a,b);
cout<<"c="<<c<<endl;
cout<<"----------------------"<<endl;
//以语句式方式调用函数add()
add(2a,b);
cout<<"----------------------"<<endl;
//用其他类型参数调用函数add()
int n=1,m=2;
cout<<"add("<<n<<","<<m<<")="<<add(n,m)<<endl;
}
#include<iostreamh>
//定义符号函数sgn(),其返回值为int类型
int sgn(double x)
{
if (x>0) return(1); //返回出口1
if (x<0) return(-1); //返回出口2
return(0); //返回出口3
}
//main()函数定义
main()
{
double x;
int i;
for (i=0;i<=2;i++) {
cout<<"x=";
cin>>x;
cout<<"sgn("<<x<<")="<<sgn(x)<<endl;
}
}
源代码如下:
#include#includefloat f1(float x)
{
return(10+x);
}
float f2(float x)
{
return(20x+30);
}
float f3(float x)
{
return(exp(x)+1);
}
float f4(float x)
{
return(pow(1+x,2));
}
float f5(float x)
{
return(pow(x,3));
}
float fsimp(float a,float b,float (p)(float))
{
float c,s;
c=(a+b)/2;
s=(b-a)/6(p(a)+4p(c)+p(b));
return s;
}
int main()
{
float a,b;
printf("请输入积分下限a的值:");
scanf("%f",&a);
printf("请输入积分上限b的值:");
scanf("%f",&b);
printf("%f\n",fsimp(a,b,f1));
}
扩展资料
1、对应于一个积分式要有一段程序,可以改变程序的一小部分来改变所要求的积分式。
2、除数不能位0。
3、两个整数相除,结果仍是整数。
4、若被除数其中有一个为浮点数或者两个都为浮点数,则结果为浮点类型。 *** 作数必须为整数,不能是浮点数。
以上就是关于如何用C语言求二重定积分全部的内容,包括:如何用C语言求二重定积分、积分在C语言里怎么实现、C语言编程如何编写积分公式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)