谁能给我解释一个程序里某些语句的用法

谁能给我解释一个程序里某些语句的用法,第1张

很简单的问题,其实只要好好看完谭老的书,这些问题就不在是问题了。加油吧。

1这两个是对函数的声明,double factorial(int) double 是函数的返回值类型, int是函数参数的类型,这里只有一个参数。另外一个也是这个意思。不过Term函数的参数是有两个参数,double类型和int类型。因为程序中有对自定义函数的引用,所以首先要进行声明,程序的最后则是对这两个函数的定义。

2l是long的意思,明白了吧,就是长类型,如long int,就是长整型。这里lf就是双精度。

3fabs是编译器提供的函数,求绝对值。就是求dTemp的绝对值然后与dEps进行比较。

4这个我已经说了,程序的最后是对所自定义的函数进行的定义。也就是对你自己定义的函数的设计。

通过你提的问题可以看出,对c的学习还是很浅。书本的基本知识还是要抓经的,毕竟没有基本功,想学好c语言是不可能的。

建议你先看完谭浩强的c语言教程。

加油!!

我也是初学者,大概的试试,不一定对哦。

#include<reg51h>//51头文件

#include

<intrinsh>//数学计算头文件

unsigned

char

idata

DataResult;//宏定义全局变量

sbit

IOCLK=P1^0;//位声明

sbit

DATAOUT=P1^1;;//位声明

sbit

CS=P1^2;;//位声明

void

int0svr(void)

interrupt

0

using

1;//貌似是定时器

{unsigned

char

count,tmp,i;

EX0=0;

tmp=0;

CS=1;

IOCLK=0;

CS=0;

_nop_();

for(count=0;count<8;count++)

{IOCLK=1;

if(DATAOUT)

tmp++;

tmp=tmp<<1;

IOCLK=0;

}

CS=1;

DataResult=tmp;

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

_nop_();

EX0=1;

}

void

main(void)//主函数

{TMOD=0x20;//初始化

TL1=0xe6;

TH1=0xe6;

PCON=0x00;

TR1=1;

SCON=0x50;//貌似

串口清零

CS=1;

EA=1;

EX0=1;

do

{SBUF=DataResult;

while(TI==0);

TI=0;

}while(SBUF!=0);

while(1);//等待

}

兄台俺是个菜鸟

,只会胡扯这些了,

我看这个好像是串口通信用的。您学会了给俺说说。。

这应该属于线性代数中,求解线性方程组AX=b中的解X(X1,X2……Xn),这个程序基本上可以用matlab中的一句话代替 X=A\b ,只是这个运算在方程组有无穷多解的情况下会报错。

你的程序的详细注释如下:

A=[6,-2,2,4;12,-8,4,10;3,-13,3,3;-6,4,2,18]; % 线性方程组系数矩阵 A

b=[0;-10;-39;-16]; % AX=b 中的 b

B=[A b]; %构造 增广矩阵 B

ra=rank(A) % 求解系数矩阵 A 的秩

rb=rank(B) % 求解增广矩阵 B 的秩

n=length(b); % 得到 b 的长度,后面要用到

X=zeros(n,1); % 初始化向量 X 用于存放方程组的解

C=zeros(1,n+1); % 初始化 C 用于下面的两行交换

if ra>rb % 如果增广矩阵的秩大于系数矩阵的秩,则方程组无解,(提示一下,这里程序错了,应该是 ra<rb )

disp('B的秩大于A的秩,方程组无解!') %屏幕输出这句话

return; % 程序结束

elseif ra==rb & rb==n % 如果增广矩阵的秩等于系数矩阵的秩,都等于n,则方程组有唯一解

disp('B和A的秩均等于n,方程组有唯一解,用高斯列主元消去法求解过程如下:') %屏幕输出这句话

for p=1:n-1 %高斯消元法,逐步将B化为梯形矩阵,即近似上三角形的矩阵

disp('p='); %屏幕显示当前对第几列进行 *** 作

disp(p);

[Y,j]=max(abs(B(p:n,p))); %从第p列的p到n行的元素中选出一个绝对值最大的元素Y,及其所在位置j。

disp('j='); % 屏幕输出最大元素所在的位置

disp(j);

C=B(p,:); %这三句话是进行两行互换,将当前 *** 作的最上面一行,即第p行,与第j行进行互换

B(p,:)= B(j+p-1,:);

B(j+p-1,:)=C;

disp(B); %屏幕输出两行互换后的 B

for k=p+1:n %以B(p,p)为基准,将第p列其下侧的元素依次通过初等行变换,化为零

m= B(k,p)/ B(p,p); %第p列,第k个元素与B(p,p)的比值

B(k,p:n+1)= B(k,p:n+1)-m B(p,p:n+1); %将第k行进行初等行变换

end

disp(B); %屏幕输出变换后的 B

end

b=B(1:n,n+1);%从变换后的B中提取出b

A=B(1:n,1:n); %从变换后的B中提取出A

X(n)=b(n)/A(n,n); %从最后一行计算出X(n)

for q=n-1:-1:1 %依次从第n-1行到第1行,求解出X(n-1)……X(1)

X(q)=(b(q)-sum(A(q,q+1:n)X(q+1:n)))/A(q,q);

end

disp(X) % 屏幕输出最终的解 X

else % 如果前两种情况都不满足,那就只有可能是ra=rb,且都小于n,方程组有无穷多解

disp('B和A的秩相等切小于n,方程组有无穷解!') %屏幕输出这句话

end

Bitree T -> 定义Bitree一个实例对象:T;

Bitree &T -> 定义Bitree的实例对象的引用,就是一个已经定义的对象的别名,需要初始化;

/

摘自<<高质量C++/C编程指南>>

引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。

int m;

int &n = m;

n相当于m的别名(绰号),对n的任何 *** 作就是对m的 *** 作。例如有人名叫王小毛,他的绰号是“三毛”。说“三毛”怎么怎么的,其实就是对王小毛说三道四。所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。

/

Bitree T -> 定义Bitree的实例对象指针,指向一个实例对象;

代码参考:

Bitree T;

Bitree &T = T;

Bitree T = &T; //&是取地址

你用的那本书?找来找去都没找到你说的这都段代码,是写错了?不过这种语言不是编程语言,是一种描述语言,更贴近于自然语言。其实进程同步中的临界资源很好表示啊。就比如生产者消费者问题。

我们老师教我们不用按照书上的方法写,按他的方式是一样的:

其中P()=wait() *** 作,V()=signal() *** 作

第一步,设置变量,第二步,信号量初值S1,S2,前驱为S1=1,后继为S2=0,第三步,前驱进程钱放置一条P(S1),结束位置放置一条V(S2) *** 作;后继进程钱放置一条P(S2),结束位置放置一条V(S1) *** 作。

其实书上写的那些代码是没用的,这个数组表示有很多资源array{0,1,…,n-1},但是考试和一般情况只会考一种资源,知道一种资源也就知道很多资源的方法了,具体是:

VAR mutex,empty,full;

mutex=1;empty=n;full=0;

proceducer(生产者):

begin

p(empty);

p(mutex); //防止生产者和消费者同时访问缓存区

buffer(in):=nextp; //存入数据,在考试时,可以直接用自然语言说,比如直接写:存数据;

in:=(in+1) mod n;//保证存入的数据在缓存区顺序排列

v(empty);

v(full);

end

consumer(消费者):

begin

p(full);

p(mutex);

nextc:=buffer(out);

out:=(out+1) mod n;

v(empty);

v(empty);

end

这个是拉格朗日插值的数值计算程序

输入 x0,y0 分别是已知点的 x,y 坐标

输入 x1 是需要插值的点的 x 坐标

输出 y1 是插值出来得相应于 x1 的 y 坐标

define是宏定义语法,相当于现实生活中的起昵称。

#define N 10 就是给10这个数字起了一个昵称,叫做N

以后的代码中,遇到N的地方,其实就是10,编译器会在编译之前,将N都给一模一样的替换成10。

sort函数是进行前后顺序颠倒的,for循环有三个部分。

第一个部分是初始化,也就是将q指向p + N -1的位置。其中,p是一个形参地址,假设这个p指向的地址,是一个真实的地址,例如xxx胡同1号。那么p + N - 1,就相当于p + 10 - 1,也就是p + 9,相当于xxx胡同10号。上面的函数中,sort的实参是a[10],xxx胡同10号,其实就是a数组的最后一个元素。

第二部分是跳出for循环的条件,就是p < q

第三部分是每次执行完毕之后,进行什么 *** 作,p++,q--

for循环执行体的内容,其实就是一次数据的交换。

假设输入是1,2,3,4,5执行函数之后的结果,就是5,4,3,2,1

以上就是关于谁能给我解释一个程序里某些语句的用法全部的内容,包括:谁能给我解释一个程序里某些语句的用法、请详细解释一下这个C语言程序各语句是什么意思(程序不长)、matlab程序代码解释,【注】需要每条程序语句都需要解释 急急急~~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9858888.html

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

发表评论

登录后才能评论

评论列表(0条)

保存