C语言程序练习.docx

上传人:b****6 文档编号:5281962 上传时间:2022-12-14 格式:DOCX 页数:15 大小:16.67KB
下载 相关 举报
C语言程序练习.docx_第1页
第1页 / 共15页
C语言程序练习.docx_第2页
第2页 / 共15页
C语言程序练习.docx_第3页
第3页 / 共15页
C语言程序练习.docx_第4页
第4页 / 共15页
C语言程序练习.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C语言程序练习.docx

《C语言程序练习.docx》由会员分享,可在线阅读,更多相关《C语言程序练习.docx(15页珍藏版)》请在冰豆网上搜索。

C语言程序练习.docx

C语言程序练习

2014年03月14号

#include

doublefun(doublex,doubley);

doubleEuler(doubledx,doublex,doubley);

doubleTrapz(doubledx,doublex,doubley);

intmain()

{

doublex0;

doublex,y;

doubledx;

doubleEy=1,Ty=1;

x0=0;

y=1;

dx=0.1;

for(x=x0;x<1;x+=dx)

{

Ty+=Trapz(dx,x,Ty);

Ey+=Euler(dx,x,Ey);

//printf("%lf,%lf\n",x+dx,Ey);

printf("%lf,%lf\n",x+dx,Ty);

}

return0;

}

doublefun(doublex,doubley)

{

returny-2*x/y;

}

doubleEuler(doubledx,doublex,doubley)

{

returndx*fun(x,y);

}

doubleTrapz(doubledx,doublex,doubley)

{

doubledy=Euler(dx,x,y);

return(dy+Euler(dx,x+dx,y+dy))/2;

}

打开txt文件

#include"stdio.h"

#include"string.h"

voidREADDAT(char(*t)[12])

{

FILE*fp;

inti;

fp=fopen("E:

\\Hello.txt","r");

for(i=0;i<10;i++)

{

fgets(t[i],12,fp);

}

fclose(fp);

}

voidmain()

{

inti;

chart[10][12]={0};

READDAT(t);

for(i=0;i<10;i++)

puts(t[i]);

}

2014415

函数指针的练习

#include

voidMyFun(int,int);//这个申明也可写成:

voidMyFun(int);

void(*FunP)(int,int);//也可申明成void(*FunP)(intx),但习惯上一般不这样。

intmain(intargc,char*argv[])

{

MyFun(10,1);//这是直接调用MyFun函数

FunP=MyFun;//将MyFun函数的地址赋给FunP变量

(*FunP)(20,1);

//这是通过函数指针变量FunP来调用MyFun函数的。

FunP(1111,1);//*FunP等于MyFun的功能

return0;

}

voidMyFun(intx,inty)//这里定义一个MyFun函数

{

printf("%d\n",x+y);

}

函数指针和指针函数结合起来用

#include"stdio.h"

int*(*pFun)(int*,int*);

int*fun(int*p,int*q);

intmain(intargc,char*argv[])

{

inta;

intb;

pFun=fun;

printf("pleaseinputtwonums:

");

scanf("%d,%d",&a,&b);

pFun(&a,&b);

return0;

}

int*fun(int*p,int*q)

{

intt;

t=*p;

*p=*q;

*q=t;

printf("%d,%d",*p,*q);

return0;

}

20140418

雅克比迭代

#include"stdio.h"

intmain()

{

doubleA[100][100];

doubleb[100];

doublef[100];

doubleB[100][100];

doubleD[100][100];

doubleL[100][100];

doubleU[100][100];

doublex[100];

doublex2[100];

doubletmp;

intm,n,i,j,k;

inta;

printf("pleaseinputtheArrayArowandcolumn:

");

scanf("%d%d",&m,&n);

for(i=0;i

{

for(j=0;j

scanf("%lf",&A[i][j]);

}

for(i=0;i

{

for(j=0;j

printf("%lf",A[i][j]);

printf("\n");

}

printf("pleaseinputtheArrayB:

");

for(i=0;i

{

scanf("%lf",&b[i]);

}

for(i=0;i

{

printf("%lf",b[i]);

printf("\n");

}

for(i=0;i

{

for(j=0;j

if(i==j)

D[i][j]=A[i][j];

else

D[i][j]=0;

}

for(i=0;i

{

for(j=0;j

printf("%lf",D[i][j]);

printf("\n");

}

for(i=0;i

{

for(j=0;j

{

if(i>j)

L[i][j]=-A[i][j];

else

L[i][j]=0.0;

}

}

for(i=0;i

{

for(j=0;j

printf("%lf",L[i][j]);

printf("\n");

}

for(i=0;i

{

for(j=0;j

if(i

U[i][j]=-A[i][j];

else

U[i][j]=0;

}

for(i=0;i

{

for(j=0;j

printf("%lf",U[i][j]);

printf("\n");

}

for(i=0;i

{

for(j=0;j

{

if(i==j)

B[i][j]=0.0;

else

B[i][j]=-A[i][j]/D[i][i];

}

}

for(i=0;i

{

for(j=0;j

printf("%lf",B[i][j]);

printf("\n");

}

printf("\n");

for(i=0;i

{

f[i]=b[i]/D[i][i];

}

for(i=0;i

{

printf("%lf",f[i]);

}

printf("\n");

printf("输入初始值:

");

for(i=0;i

{

scanf("%lf",&x[i]);

}

printf("\n");

printf("输入迭代次数:

");

scanf("%d",&a);

for(k=0;k

{

for(i=0;i

x2[i]=x[i];

for(i=0;i

{

tmp=0.0;

for(j=0;j

{

tmp+=B[i][j]*x2[i];

}

x[i]=tmp+f[i];

printf("%lf",x[i]);

}

printf("\n");

}

return0;

}

2014年4月23号

高斯数值积分计算程序

#include

#include

doublegauss(double(*func)(doublex),doublea,doubleb,intn);

intmain()

{

doublefunction_name(double);

doublea,b;

intn;

printf("请输入积分上限b:

\n");

scanf("%lf",&b);

printf("请输入积分下限:

a\n");

scanf("%lf",&a);

printf("请输入积分的点数n:

\n");

scanf("%d",&n);

doubleans;

ans=gauss(function_name,a,b,n);

printf("ans=%lf",ans);

return0;

}

doublegauss(double(*func)(doublex),doublea,doubleb,intn)/*高斯求积*/

{

/*高斯点及其求积系数列表*/

doublex1[1]={0.0};

doubleA1[1]={2};

doublex2[2]={-0.5573503,0.5573503};

doubleA2[2]={1,1};

doublex3[3]={-0.7745967,0.0,0.7745967};

doubleA3[3]={0.555556,0.888889,0.555556};

doublex4[4]={0.3399810,-0.3399810,0.8611363,-0.8611363};

doubleA4[4]={0.6521452,0.6521452,0.3478548,0.3478548};

doublex5[5]={0.0,0.5384693,-0.5384693,0.9061799,-0.9061799};

doubleA5[5]={0.5688889,0.4786287,0.4786287,0.2369269,0.2369269};

double*p,*t;

switch(n)

{

case1:

p=x1;

t=A1;

break;

case2:

p=x2;

t=A2;

break;

case3:

p=x3;

t=A3;

break;

case4:

p=x4;

t=A4;

break;

case5:

p=x5;

t=A5;

break;

default:

printf("intputwrong!

");

}

doubleg=0;

inti;

for(i=0;i

{

g+=(*func)((b-a)*p[i]/2+(a+b)/2)*t[i];

}

g*=(b-a)/2;

returng;

}

doublefunction_name(doublex)

{

return(sqrt(x));

}

2014年4月25号

LU分解程序

#include

intmain(intargc,char*argv[])

{

inti,j;

intk;

floats=0;

floatm=0;

intdim;

floatA[100][100];

floatL[100][100];

floatU[100][100];

printf("请输入要分解的初始矩阵的维数:

");

scanf("%d",&dim);

printf("请输入要分解的初始矩阵:

");

for(i=1;i<=dim;i++)

{

for(j=1;j<=dim;j++)

scanf("%f",&A[i][j]);

}

for(i=1;i<=dim;i++)

{

for(j=1;j<=dim;j++)

printf("%f",A[i][j]);

printf("\n");

}

printf("\n");

//LandU

for(i=1;i<=dim;i++)

{

for(j=1;j<=dim;j++)

if(i>j)

{

U[i][j]=0;

}

}

for(i=1;i<=dim;i++)

{

for(j=1;j<=dim;j++)

if(i

{

L[i][j]=0;

}

}

for(i=1;i<=dim;i++)

{

for(j=1;j<=dim;j++)

if(i==j)

{

L[i][j]=1;

}

}

for(j=1;j<=dim;j++)

{

U[1][j]=A[1][j];

}

for(i=1;i<=dim;i++)

{

L[i][1]=A[i][1]/U[1][1];

}

//l和U

for(i=2;i<=dim;i++)

{

for(j=i;j<=dim;j++)

{

s=0;

for(k=1;k<=i-1;k++)

s+=L[i][k]*U[k][j];

U[i][j]=A[i][j]-s;

}

for(j=i+1;j<=dim;j++)

{

m=0;

for(k=1;k<=i-1;k++)

m+=L[j][k]*U[k][i];

L[j][i]=(A[j][i]-m)/U[i][i];

}

}

printf("分解以后的矩阵L:

\n");

for(i=1;i<=dim;i++)

{

for(j=1;j<=dim;j++)

{

printf("%f",L[i][j]);

}

printf("\n");

}

printf("\n");

printf("分解以后矩阵U:

\n");

for(i=1;i<=dim;i++)

{

for(j=1;j<=dim;j++)

{

printf("%f",U[i][j]);

}

printf("\n");

}

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1