如何用C语言定义一个数学模型(数据结构)?

如何用C语言定义一个数学模型(数据结构)?,第1张

1、c语言(数据结构)中,在函数定义的头部分&怎么使用?

如果使用的是纯C语言,在函数定义的头部,不使用&来定义形参,当需将对形参的改变带回来时用指针即*。大多数据结构教材沿用严蔚敏版教材的习惯,用类C语言,描述数据结构,借助C++中的引用即&来定义形参,这时起到作用类似于指针,但函数的写法更简洁。

2、你只要记住一点,如果需要将参数改变带回来就要用引用或指针来实现。

3*和&写的顺序是不同的,

int * &c = a//这里c是一个引用,它是指针a的引用

int &*d//这里d是一个指针,它指向引用,但引用不是实体,所以这是错误的

C语言写多河段BOD-DO耦合矩阵模型源程序如下:

function F=pi(Q,L,O,kd,ka,t,Q3,T,L20,O20) % kd-BOD的降解速度常数,/d

%Q-在断面i处注入河流的流量,m3/s

%L,O-由断面i注入河流的污水的污染物(例如BOD)浓度与溶解氧(DO)浓度,mg/L

% kd-BOD的降解速度常数,/d

% ka-大气复氧速度,/d 

% t-由断面i到断面i+1经过时间,d

% Q3-在断面i处引出的流水流量,m3/s

% L20,O20-河流背景的BOD和DO浓度,mg/L

% 输入题目中变量值

n=input('请输入河流断面个数n ')

Q1(1,1)=input('请输入背景河水流量Q20(m3/s) ')

Q=input('请输入在断面i处注入河流的污水流量Q(m3/s) ')

L=input('请输入由断面i注入河流的污水的污染物(例如BOD)浓度L(mg/L) ')

O=input('请输入由断面i注入河流的污水溶解氧(DO)浓度O(mg/L) ')

kd=input('请输入BOD的降解速度常数kd(/d) ')

ka=input('请输入大气复氧速度ka(/d) ')

t=input('请输入由断面i到断面i+1经过时间t(d) ')

Q3=input('请输入在断面i处引出的流水流量Q3(m3/s) ')

T=input('请输入河水水温/℃ ')

L20=input('请输入河流背景的BOD浓度L20(mg/L) ')

O20=input('请输入河流背景的DO浓度O20(mg/L) ')

Os=468/(31.6+T) % Os-河流的饱和溶解氧的值 mg/L

Os

for i=1:1:n

Q2(i,1)=Q1(i,1)-Q3(i,1)+Q(i,1)% 根据连续性原理,写出每一个断面的流量Q与BOD的平衡关系

Q1(i+1,1)=Q2(i,1)

扩展资料:

单向耦合即A场对B场有影响,而B场对A场没有影响,常见的问题就是热应力计算,一般的热应力计算中,只考虑温度对结构的影响,而忽律结构变形对温度场的影响。

双向耦合即A场对B场有影响,而B场对A场也有影响,例如气动颤振问题,流场对结构的变形有影响,反过来结构变形也会影响流场。

/*TC环境下编的*/

#include <dos.h>

#include <stdio.h>

#include <ctype.h>

#include <conio.h>

#include <bios.h>

#include <alloc.h>

typedef struct winer

{

int x,y

struct winer *p

}winer

char status [20][20]

char far *printScreen=(char far* )0xB8000000

void putoutChar(int y,int x,char ch,char fc,char bc)

void printWall(int x, int y)

void printBox(int x, int y)

void printBoxDes(int x, int y)

void printDestination(int x, int y)

void printDestination1(int x,int y,winer **win,winer **pw)

void printMan(int x, int y)

void init()

winer *initStep1()

winer *initStep2()

winer *initStep3()

winer *initStep4()

void moveBoxSpacetoSpace(int x ,int y, char a)

void moveBoxDestoSpace(int x ,int y, char a)

void moveBoxSpacetoDes(int x, int y, char a)

void moveBoxDestoDes(int x, int y, char a)

int judge(int x, int y)

void move(int x, int y, char a)

void reset(int i)

void putoutChar(int y,int x,char ch,char fc,char bc)

{

printScreen[(x*160)+(y<<1)+0]=ch

printScreen[(x*160)+(y<<1)+1]=(bc*16)+fc

}

void printWall(int x,int y)

{

putoutChar(y-1,x-1,219,GREEN,BLACK)

status[x][y]='w'

}

void printBox(int x,int y)

{

putoutChar(y-1,x-1,10,WHITE,BLACK)

status[x][y]='b'

}

void printDestination1(int x,int y,winer **win,winer **pw)

{

winer *qw

putoutChar(y-1,x-1,003,YELLOW,BLACK)

status[x][y]='m'

if(*win==NULL)

{

*win=*pw=qw=(winer* )malloc(sizeof(winer))

(*pw)->x=x

(*pw)->y=y

(*pw)->p=NULL

}

else

{

qw=(winer* )malloc(sizeof(winer))

qw->x=x

qw->y=y

(*pw)->p=qw

(*pw)=qwqw->p=NULL

}

}

void printDestination(int x,int y)

{

putoutChar(y-1,x-1,003,YELLOW,BLACK)

status[x][y]='m'

}

void printMan(int x,int y)

{

gotoxy(y,x)

_AL=02

_CX=01

_AH=0xa

geninterrupt(0x10)

}

void printBoxDes(int x,int y)

{

putoutChar(y-1,x-1,10,YELLOW,BLACK)

status[x][y]='i'

}

void init()

{

int i,j

for(i=0i<20i++)

for(j=0j<20j++)

status[i][j]=0

_AL=3

_AH=0

geninterrupt(0x10)

gotoxy(40,4)

printf("Welcome to the box world!")

gotoxy(40,6)

printf("You can use up, down, left,")

gotoxy(40,8)

printf("right key to control it, or")

gotoxy(40,10)

printf("you can press Esc to quit it.")

gotoxy(40,12)

printf("Press space to reset the game.")

gotoxy(40,14)

printf("Wish you have a good time !")

gotoxy(40,16)

printf("April , 2007")

}

winer *initStep1()

{

int x

int y

winer *win=NULL

winer *pw

for(x=1,y=5y<=9y++)

printWall(x+4,y+10)

for(y=5,x=2x<=5x++)

printWall(x+4,y+10)

for(y=9,x=2x<=5x++)

printWall(x+4,y+10)

for(y=1,x=3x<=8x++)

printWall(x+4,y+10)

for(x=3,y=3x<=5x++)

printWall(x+4,y+10)

for(x=5,y=8x<=9x++)

printWall(x+4,y+10)

for(x=7,y=4x<=9x++)

printWall(x+4,y+10)

for(x=9,y=5y<=7y++)

printWall(x+4,y+10)

for(x=8,y=2y<=3y++)

printWall(x+4,y+10)

printWall(5+4,4+10)

printWall(5+4,7+10)

printWall(3+4,2+10)

printBox(3+4,6+10)

printBox(3+4,7+10)

printBox(4+4,7+10)

printDestination1(4+4,2+10,&win,&pw)

printDestination1(5+4,2+10,&win,&pw)

printDestination1(6+4,2+10,&win,&pw)

printMan(2+4,8+10)

return win

}

winer *initStep2()

{

int x

int y

winer *win=NULL

winer *pw

for(x=1,y=4y<=7y++)

printWall(x+4,y+10)

for(x=2,y=2y<=4y++)

printWall(x+4,y+10)

for(x=2,y=7x<=4x++)

printWall(x+4,y+10)

for(x=4,y=1x<=8x++)

printWall(x+4,y+10)

for(x=8,y=2y<=8y++)

printWall(x+4,y+10)

for(x=4,y=8x<=8x++)

printWall(x+4,y+10)

for(x=4,y=6x<=5x++)

printWall(x+4,y+10)

for(x=3,y=2x<=4x++)

printWall(x+4,y+10)

for(x=4,y=4x<=5x++)

printWall(x+4,y+10)

printWall(6+4,3+10)

printBox(3+4,5+10)

printBox(6+4,6+10)

printBox(7+4,3+10)

printDestination1(5+4,7+10,&win,&pw)

printDestination1(6+4,7+10,&win,&pw)

printDestination1(7+4,7+10,&win,&pw)

printMan(2+4,6+10)

return win

}

winer *initStep3()

{

int x

int y

winer *win=NULL

winer *pw

for(x=1,y=2y<=8y++)

printWall(x+4,y+10)

for(x=2,y=2x<=4x++)

printWall(x+4,y+10)

for(x=4,y=1y<=3y++)

printWall(x+4,y+10)

for(x=5,y=1x<=8x++)

printWall(x+4,y+10)

for(x=8,y=2y<=5y++)

printWall(x+4,y+10)

for(x=5,y=5x<=7x++)

printWall(x+4,y+10)

for(x=7,y=6y<=9y++)

printWall(x+4,y+10)

for(x=3,y=9x<=6x++)

printWall(x+4,y+10)

for(x=3,y=6y<=8y++)

printWall(x+4,y+10)

printWall(2+4,8+10)

printWall(5+4,7+10)

printBox(6+4,3+10)

printBox(4+4,4+10)

printBox(5+4,6+10)

printDestination1(2+4,5+10,&win,&pw)

printDestination1(2+4,6+10,&win,&pw)

printDestination1(2+4,7+10,&win,&pw)

printMan(2+4,4+10)

return win

}

winer *initStep4()

{

int x

int y

winer *win=NULL

winer *pw

for(x=1,y=1y<=6y++)

printWall(x+4,y+10)

for(x=2,y=7y<=8y++)

printWall(x+4,y+10)

for(x=2,y=1x<=7x++)

printWall(x+4,y+10)

for(x=7,y=2y<=4y++)

printWall(x+4,y+10)

for(x=6,y=4y<=9y++)

printWall(x+4,y+10)

for(x=3,y=9x<=5x++)

printWall(x+4,y+10)

for(x=3,y=3y<=4y++)

printWall(x+4,y+10)

printWall(3+4,8+10)

printBox(3+4,5+10)

printBox(4+4,4+10)

printBox(4+4,6+10)

printBox(5+4,5+10)

printBox(5+4,3+10)

printDestination1(3+4,7+10,&win,&pw)

printDestination1(4+4,7+10,&win,&pw)

printDestination1(5+4,7+10,&win,&pw)

printDestination1(4+4,8+10,&win,&pw)

printDestination1(5+4,8+10,&win,&pw)

printMan(2+4,2+10)

return win

}

void moveBoxSpacetoSpace(int x,int y,char a)

{

switch(a)

{

case 'u':

status[x-1][y]=0

printf(" ")

printBox(x-2,y)

printMan(x-1,y)

status[x-2][y]='b'

break

case 'd':

status[x+1][y]=0

printf(" ")

printBox(x+2,y)

printMan(x+1,y)

status[x+2][y]='b'

break

case 'l':

status[x][y-1]=0

printf(" ")

printBox(x,y-2)

printMan(x,y-1)

status[x][y-2]='b'

break

case 'r':

status[x][y+1]=0

printf(" ")

printBox(x,y+2)

printMan(x,y+1)

status[x][y+2]='b'

break

default:

break

}

}

void moveBoxDestoSpace(int x,int y,char a)

{

switch(a)

{

case 'u':

status[x-1][y]='m'

printf(" ")

printBox(x-2,y)

printMan(x-1,y)

status[x-2][y]='b'

break

case 'd':

status[x+1][y]='m'

printf(" ")

printBox(x+2,y)

printMan(x+1,y)

status[x+2][y]='b'

break

case 'l':

status[x][y-1]='m'

printf(" ")

printBox(x,y-2)

printMan(x,y-1)

status[x][y-2]='b'

break

case 'r':

status[x][y+1]='m'

printf(" ")

printBox(x,y+2)

printMan(x,y+1)

status[x][y+2]='b'

break

default:

break

}

}

void moveBoxSpacetoDes(int x,int y,char a)

{

switch(a)

{

case 'u':

status[x-1][y]=0

printf(" ")

printBoxDes(x-2,y)

printMan(x-1,y)

status[x-2][y]='i'

break

case 'd':

status[x+1][y]=0

printf(" ")

printBoxDes(x+2,y)

printMan(x+1,y)

status[x+2][y]='i'

break

case 'l':

status[x][y-1]=0

printf(" ")

printBoxDes(x,y-2)

printMan(x,y-1)

status[x][y-2]='i'

break

case 'r':

status[x][y+1]=0

printf(" ")

printBoxDes(x,y+2)

printMan(x,y+1)

status[x][y+2]='i'

break

default:

break

}

}

void moveBoxDestoDes(int x,int y,char a)

{

switch(a)

{

case 'u':

status[x-1][y]='m'

printf(" ")

printBoxDes(x-2,y)

printMan(x-1,y)

status[x-2][y]='i'

break

case 'd':

status[x+1][y]='m'

printf(" ")

printBoxDes(x+2,y)

printMan(x+1,y)

status[x+2][y]='i'

break

case 'l':

status[x][y-1]='m'

printf(" ")

printBoxDes(x,y-2)

printMan(x,y-1)

status[x][y-2]='i'

break

case 'r':

status[x][y+1]='m'

printf(" ")

printBoxDes(x,y+2)

printMan(x,y+1)

status[x][y+2]='i'

break

default:

break

}

}

int judge(int x,int y)

{

int i

switch(status[x][y])

{

case 0:

i=1

break

case 'w':

i=0

break

case 'b':

i=2

break

case 'i':

i=4

break

case 'm':

i=3

break

default:

break

}

return i

}

void move(int x,int y,char a)

{

switch(a)

{

case 'u':

if(!judge(x-1,y))

{

gotoxy(y,x)

break

}

else if(judge(x-1,y)==1||judge(x-1,y)==3)

{

if(judge(x,y)==3)

{

printDestination(x,y)

printMan(x-1,y)

break

}

else

{

printf(" ")

printMan(x-1,y)

break

}

}

else if(judge(x-1,y)==2)

{

if(judge(x-2,y)==1)

{

moveBoxSpacetoSpace(x,y,'u')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y,x-1)

}

else if(judge(x-2,y)==3)

{

moveBoxSpacetoDes(x,y,'u')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y,x-1)

}

else

gotoxy(y,x)

break

}

else if(judge(x-1,y)==4)

{

if(judge(x-2,y)==1)

{

moveBoxDestoSpace(x,y,'u')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y,x-1)

}

else if(judge(x-2,y)==3)

{

moveBoxDestoDes(x,y,'u')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y,x-1)

}

else

gotoxy(y,x)

break

}

case 'd':

if(!judge(x+1,y))

{

gotoxy(y,x)

break

}

else if(judge(x+1,y)==1||judge(x+1,y)==3)

{

if(judge(x,y)==3)

{

printDestination(x,y)

printMan(x+1,y)

break

}

else

{

printf(" ")

printMan(x+1,y)

break

}

}

else if(judge(x+1,y)==2)

{

if(judge(x+2,y)==1)

{

moveBoxSpacetoSpace(x,y,'d')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y,x+1)

}

else if(judge(x+2,y)==3)

{

moveBoxSpacetoDes(x,y,'d')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y,x+1)

}

else

gotoxy(y,x)

break

}

else if(judge(x+1,y)==4)

{

if(judge(x+2,y)==1)

{

moveBoxDestoSpace(x,y,'d')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y,x+1)

}

else if(judge(x+2,y)==3)

{

moveBoxDestoDes(x,y,'d')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y,x+1)

}

else

gotoxy(y,x)

break

}

case 'l':

if(!judge(x,y-1))

{

gotoxy(y,x)

break

}

else if(judge(x,y-1)==1||judge(x,y-1)==3)

{

if(judge(x,y)==3)

{

printDestination(x,y)

printMan(x,y-1)

break

}

else

{

printf(" ")

printMan(x,y-1)

break

}

}

else if(judge(x,y-1)==2)

{

if(judge(x,y-2)==1)

{

moveBoxSpacetoSpace(x,y,'l')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y-1,x)

}

else if(judge(x,y-2)==3)

{

moveBoxSpacetoDes(x,y,'l')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y-1,x)

}

else

gotoxy(y,x)

break

}

else if(judge(x,y-1)==4)

{

if(judge(x,y-2)==1)

{

moveBoxDestoSpace(x,y,'l')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y-1,x)

}

else if(judge(x,y-2)==3)

{

moveBoxDestoDes(x,y,'l')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y-1,x)

}

else

gotoxy(y,x)

break

}

case 'r':

if(!judge(x,y+1))

{

gotoxy(y,x)

break

}

else if(judge(x,y+1)==1||judge(x,y+1)==3)

{

if(judge(x,y)==3)

{

printDestination(x,y)

printMan(x,y+1)

break

}

else

{

printf(" ")

printMan(x,y+1)

break

}

}

else if(judge(x,y+1)==2)

{

if(judge(x,y+2)==1)

{

moveBoxSpacetoSpace(x,y,'r')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y+1,x)

}

else if(judge(x,y+2)==3)

{

moveBoxSpacetoDes(x,y,'r')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y+1,x)

}

else

gotoxy(y,x)

break

}

else if(judge(x,y+1)==4)

{

if(judge(x,y+2)==1)

{

moveBoxDestoSpace(x,y,'r')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y+1,x)

}

else if(judge(x,y+2)==3)

{

moveBoxDestoDes(x,y,'r')

if(judge(x,y)==3)

printDestination(x,y)

gotoxy(y+1,x)

}

else

gotoxy(y,x)

break

}

default:

break

}

}

void reset(int i)

{

switch(i)

{

case 0:

init()

initStep1()

break

case 1:

init()

initStep2()

break

case 2:

init()

initStep3()

break

case 3:

init()

initStep4()

break

default:

break

}

}

void main()

{

int key

int x

int y

int s

int i=0

winer *win

winer *pw

_AL=3

_AH=0

geninterrupt(0x10)

init()

win=initStep1()

do{

_AH=3

geninterrupt(0x10)

x=_DH+1

y=_DL+1

while(bioskey(1)==0)

key=bioskey(0)

switch(key)

{

case 0x4800:

move(x,y,'u')

break

case 0x5000:

move(x,y,'d')

break

case 0x4b00:

move(x,y,'l')

break

case 0x4d00:

move(x,y,'r')

break

case 0x3920:

reset(i)

break

default:

break

}

s=0

pw=win

while(pw)

{

if(status[pw->x][pw->y]=='m')

s++

pw=pw->p

}

if(s==0)

{

free(win)

gotoxy(25,2)

printf("congratulate! You have done this step!")

getch()

i++

switch(i)

{

case 1:

init()

win=initStep2()

break

case 2:

init()

win=initStep3()

break

case 3:

init()

win=initStep4()

break

case 4:

gotoxy(15,21)

printf("Congratulation! \n")

gotoxy(15,23)

printf("You have done all the steps, Welcome to play again!")

key=0x011b

getch()

break

default:

break

}

}

}while(key!=0x011b)

_AL=3

_AH=0

geninterrupt(0x10)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11585153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存