程序开发中什么是赋值?怎么一个流程?

程序开发中什么是赋值?怎么一个流程?,第1张

赋值就是把一个值存在一个变量空间中。

赋值的语法定义是等号左边放一个变量列表, 而等号右边放一个表达式列表。 两边的列表中的元素都用逗号间开:

stat ::= varlist ‘=’ explist

varlist ::= var {‘,’ var}

explist ::= exp {‘,’ exp}

表达式放在 §3.4 中讨论。

在作赋值 *** 作之前, 那值列表会被 调整 为左边变量列表的个数。 如果值比需要的更多的话,多余的值就被扔掉。 如果值的数量不够需求, 将会按所需扩展若干个 nil。 如果表达式列表以一个函数调用结束, 这个函数所返回的所有值都会在调整 *** 作之前被置入值列表中 (除非这个函数调用被用括号括了起来

赋值语句首先让所有的表达式完成运算, 之后再做赋值 *** 作。 因此,下面这段代码

i = 3

i, a[i] = i+1, 20

会把 a[3] 设置为 20,而不会影响到 a[4] 。 这是因为 a[i] 中的 i 在被赋值为 4 之前就被计算出来了(当时是 3 )。 简单说 ,这样一行

x, y = y, x

会交换 x 和 y 的值, 及

x, y, z = y, z, x

会轮换 x,y,z 的值。

对全局变量以及表的域的赋值 *** 作的含义可以通过元表来改变。 对 t[i] = val 这样的变量索引赋值, 等价于 settable_event(t,i,val)。 (关于函数 settable_event 的详细说明,。 这个函数并没有在 Lua 中定义出来,也不可以被调用。 这里我们列出来,仅仅出于方便解释的目

对于全局变量 x = val 的赋值等价于 _ENV.x = val

一位数组赋值的几种方式

int

a[10]={1,2,3,4,5,6,7,8,9,10}

.一般初始化,例:

int

a[10]={3,10,5,3,4,5,6,7,8,9};

int

array[5]={2,3,4,5,6};

其结果是给每一个数组元素都指定了初值。

2.部分元素初始化,其余元素均为零。

例:

int

a[10]={7,8,9,67,54};

仅给前5个元素赋初值,后5个元素初值为0。

3.全部元素均初始化为1。

int

a[10]

=

{1,1,1,1,1,1,1,1,1,1}

不允许简写为 int

a[10]={1}或int

b[10]={1*10}

同学们想一想上述定义a和b数组后,初始化结果是什么?

注意:当程序不给数组指定初始值时,编译器作如下处理:

(1)部分元素初始化,编译器自动为没有初始化的元素初始化为0。

(2)数值数组如果只定义不初始化,编译器不为数组自动指定初始值,即初值为一些随机值(值不确定)。

4.如果全部元素均指定初值,定义中可省略元素的个数。

例:

int

a[5]={9,28,3,4,5}可以写为:

int

a[

]={9,28,3,4,5}

数组元素的引用

c语言规定,不能整体引用数值数组,只能逐个引用数组元素;

元素引用方式:数组名[下标表达式]

例:a[0]

=

a[5]

+

a[7]

-

a[2*3]

“下标表达式”可以是任何非负整型数据。

特别强调:1.一个数组元素,实质上就是一个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。

2.在c语言中,数组作为一个整体,不能参加数据运算,只能对单个的元素进行处理。

Pascal

这里是完全程序,过程部分为快排

program qsort

var n,p:integer

a:array[0..100000] of integer

procedure qs(l,r:integer)//假设被排序的数组是a,且快排后按升序排列)

var i,j,m,t:integer

begin

i:=l

j:=r//(l(left),r(right)表示快排的左右区间)

m:=a[(l+r)div2]//注意:本句不能写成:m:=(l+r)div2

repeat

while a[i]<m do inc(i)

while a[j]>m do dec(j)//若是降序把'<'与‘>'互换

if i<=j then

begin

t:=a[i]

a[i]:=a[j]

a[j]:=t

inc(i)

dec(j)

end

until i>j

if l<j then qs(l,j)//递归查找左区间

if i<r then qs(i,r)//递归查找右区间

end

begin

readln(n)//有n个数据要处理

for p:=1 to n do read(a[p])//输入数据

qs(1,n)

for p:=1 to n do write(a[p],'')//输出快排后的数据

end.

或者

procedure quickSort(var a:array of integerl,r:Integer)

var i,j,x:integer

begin

if l>=r then exit

i:=l

j:=r

x:=a[i]

while i<=j do

begin

while (i<j)and(a[j]>x) do dec(j)

if i<j then

begin

a[i]:=a[j]

inc(i)

end

while (i<j)and(a[i]<x) do inc(i)

if i<j then

begin

a[j]:=a[i]

dec(j)

end

a[i]:=x

quicksort(a,l,i-1)

quicksort(a,i+1,r)

end

end

C++语言

#include <iostream>

using namespace std

void Qsort(int a[], int low, int high)

{

if(low >= high)

{

return

}

int first = low

int last = high

int key = a[first]/*用字表的第一个记录作为枢轴*/

while(first < last)

{

while(first < last && a[last] >= key)

{

--last

}

a[first] = a[last]/*将比第一个小的移到低端*/

while(first < last && a[first] <= key)

{

++first

}

a[last] = a[first]

/*将比第一个大的移到高端*/

}

a[first] = key/*枢轴记录到位*/

Qsort(a, low, first-1)

Qsort(a, first+1, high)

}

int main()

{

int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24}

Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1)/*这里原文第三个参数要减1否则内存越界*/

for(int i = 0 i < sizeof(a) / sizeof(a[0]) i++)

{

cout << a[i] << ""

}

return 0

}/*参考数据结构p274(清华大学出版社,严蔚敏)*/


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存