Alt”又名更改键、替换键,因为它是英语单词“Alternative”(交换、替换)的缩写,大多数情况下与其它键组合使用。在没有鼠标的情况下,使用“Alt”键可以很容易地打开软件的菜单。大家都知道,Alt键在键盘上有一左一右两个。在美国制的键盘中,左右两边的键用途是一样的。但是,你知道吗?大部分欧洲的键盘上,右边的“Alt”键都标名为“Alt Gr”,它的作用和转换键(Shift)差不多——同时按下转换键和字母键就可选择大写或小写。
#include<iostream>using namespace std
#define max 15
#define NULL 0
struct llist{
int e[max]
int n
}
struct node{
int data
node *next
}
void setnull(llist &lt) //置线性表lt为空
{
lt.n = 0
}
void creat(llist &lt) //输入线性表lt中元素的值
{
int i
do
{
cout<<"INPUT THE COUNT OF DATA IN LINEAR LINKED LIST h (1<=n<=" << max << ") : "
cin>>lt.n
}while(lt.n<1 || lt.n>max)
for (i=0i<lt.ni++)
{
cout<<"INPUT THE DATA IN LINEAR LINKED LIST h \t"<< i+1 << " : "
cin>>lt.e[i]
}
}
void outllist(llist lt) //输出线性表lt中元素的值
{
int i
cout<<"DATA IN LINEAR LIST lt:\n"
for(i = 0i < lt.n++i)
cout<<lt.e[i]<<'\t'
cout<<'\n'
}
void error(char err[]) //输出出错信息
{
cout<<err<<"出错\n"
}
int length(llist lt) //函数功能为求线性表lt的表长
{
return lt.n
}
void getelem(llist lt,int i,int &ai) //算法功能取第i个元素的值,由ai返回
{
if (lt.n == 0)
error("err1")//表空出错
else if (i < 1 || i > lt.n)
error("err2")//i值出错
else ai = lt.e[i - 1]
}
void create(llist lt,node *&h) //算法功能由线性表lt建立h指向链表
{
int i
node *p, *q
if (lt.n < 1)
{
h = NULL
return
}
else
{
h = new node()
h->data = lt.e[0]
h->next = NULL
}
q = h
for(i = 1i < lt.n++i)
{
p = new node()
p->data = lt.e[i]
p->next = NULL
q->next = p
q = p
}
}
void outllink(node *h) //输出h指向链表中的结点数据
{
node *p
p = h
cout<<"DATA IN LINEAR LINKED LIST h:\n"
while(p)
{
cout<<p->data<<'\t'
p = p->next
}
cout<<'\n'
}
void insert_llink(node *&h,int ai,int x) //线性链表插入算法
{
node *i,*p,*q
i = new node
i->data = x
if(h == NULL)
{
error("err1")//链表为空 cout<<"链表空"<<'\n'
}
else
{
if(h->data == ai)
{
i->next = h
h = i
}
else{
p = h
while(p->data != ai && p->next != NULL)
{
q = p
p = p->next
}
if(p->data == ai)
{
q->next = i
i->next = p
}
else
error("err2")//未找到数据域值为ai的结点
}
}
}
void delete_llink(node *&h,int x) //线性链表删除算法
{
node *p,*q
if(h == NULL)
error("err1")//表空出错
else if(h->data == x)
{
p = h
h = h->next
p ->next = NULL
delete(p)//由系统收回结点存储空间
}
else
{
p = h
while(p->data != x && p->next != NULL)
{
q = p
p = p->next
}
if (p->data == x){
q->next = p->next
p->next = NULL
delete(p)//由系统收回结点存储空间
}
else
error("err2")//未找到数据域值等于x的结点
}
}
void main(void)
{
llist lt
node *h
char c
int ai,x
cout<<" * * * THE PROGRAM FOR LINEAR LINKED LIST * * *\n"
setnull(lt)
creat(lt)
outllist(lt)
h=NULL
create(lt,h)
outllink(h)
do{
cout<<"TO SELECT COMMAND(I,D,O,E)\n\t"
cout<<"COMMAND:"
cin>>c
switch(c){
case 'I':cout<<"TO INSERT NEW ELEMENT IN THE LINEAR LINKED LIST h\n"
cout<<"VALUE OF THE ELEMENT(ai) = "
cin>>ai
cout<<"VALUE OF NEW ELEMENT(x) = "
cin>>x
insert_llink(h,ai,x)
outllink(h)
break
case 'D':cout<<"TO DELETE ELEMENT IN THE LINEAR LINKED LIST h\n"
cout<<"VALUE OF THE ELEMENT(x) = "
cin>>x
delete_llink(h,x)
outllink(h)
break
case 'O':cout<<"ELEMENT OF LINEAR LINKED LIST h READS AS FOLLOWS\n"
outllink(h)
break
case 'E':
break
default:
error("命令字")
}
}
while(c != 'E')
}
c语言,位符合赋值运算子, <<=,>>=,&=,^=!=, 分别什么含义啊?1.= 赋值运算子 变数=表示式 如:a=3;将a的值赋为3
2./= 除后赋值 变数/=表示式 如:a/=3即a=a/3
3.*= 乘后赋值 变数*=表示式 如:a*=3即a=a*3
4.%= 取模后赋值 变数%=表示式 如:a%=3即a=a%3
5.+= 加后赋值 变数+=表示式 如:a+=3即a=a+3
6.-= 减后赋值 变数-=表示式 如:a-=3即a=a-3
7.<<= 左移后赋值 变数<<=表示式 左移就是将《左边的数的二进位制各位全部左移若干位,《右边的数指定移动位数,高位丢弃,低位补0, 移几位就相当于乘以2的几次方
8.>>= 右移后赋值 变数>>=表示式 右移运算子是用来将一个数的各二进位制位右移若干位,移动的位数由右运算元指定(右运算元必须是非负值),移到右端的低位被舍弃,对于无符号数,高位补0。对于有符号数,某些机器将对左边空出的部分用符号位填补(即“算术移位”),而另一些机器则对左边空出的部分用0填补(即“逻辑移位”)。注意:对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的
系统移入1。移入0的称为“逻辑移位”,即简单移位;移入1的称为“算术移位”。
9.&= 按位与后赋值 变数&=表示式 按位与是指:参加运算的两个资料,按二进位制位进行“与”运算。如果两个相应的二进位制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若,A=true,B=true,则A∩B=true
10. ^= 按位异或后赋值 变数^=表示式 参与运算的两个量按照对应的位进行异或运算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0
此外,一个数与0异或仍保持不变,即a^0=a
一个数与自己异或结果为0,即a^a=0
11.|= 按位或后赋值 变数|=表示式 参与运算的两个量按照对应位进行或运算,且
0|0→0, 0|1→1, 1|0→1, 1|1→1
这些位运算都是与二进位制码有关的,所以多弄弄也就会了
C语言中复合赋值运算子 :<<= , >>= ,&= ,^= , |= 分别表示什么啊 ? 请高手指点运算子= 这种组合是赋值语句的一种简写形式,例如:
a+=b其实就是a=a+b,只不过你说的是逻辑运算子,道理是一样的.
<<是左移,>>是右移,&是与,|是或,^是异或,都是针对2进位制运算的.
C语言中算术运算子和赋值运算子哪个优先顺序高?算术运算子高! 表示式优先顺序()(小括号) [](阵列下标) .(结构成员) ->(指标型结构成员)↑最高!(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变数地址) │*(指标所指内容) type(函式说明) sizeof(长度计算) │*(乘) /(除) %(取模) │+(加) -(减) │<<(位左移) >>(位右移) │<(小于) <=(小于等于) >(大于) >=(大于等于) │==(等于) !=(不等于) │&(位与) │^(位异或) │|(位或) │&&(逻辑与) │||(逻辑或) │?:(?表示式) │= += -=(联合操作) │,(逗号运算子) │最低 1. .的优先顺序高于*。->操作符用于消除这个问题。 *p.f变成了*(p.f)而不是(*p).f2. []高于*,于是int *ap[]中的ap变成了元素为int指标的阵列。3. 函式()高于*,因此,int *fp()不再是函式指标了,而是一个函式,返回int *。4. 逗号运算子在所有运算子中优先顺序最低,所以,i = 1, 2就成了(i = 1), 2而不是i = (1, 2)。 逗号运算子的值是最右边运算元的值,逗号运算子结合性从左至右,因此又称为顺序求值运算子。5. 在表示式中如果有布林操作、算术运算、位操作等混合计算,始终应该在适当的地方加上括号。 x = f() + g() * h()乘法先于加法执行,但是g()和h()的呼叫可能以任何顺序出现。同样,f()可能在乘法之前呼叫,也可能在乘法之后呼叫。 优先顺序和结合性规则告诉你哪些符号组成一个意群,大部分这样的意群内部如何进行计算的次序是未定义的。有些操作符,如&&和||等,其运算元的计算顺序是确定的,它们使用短路原则。 C语言中记住两个优先顺序就够了:乘法和除法先于加法和减法,在涉及其他操作符时一律加上括号。结合性用于在几个操作符具有相同的优先顺序时确定先执行哪一个。每个操作符拥有某一级别的优先顺序,同时也拥有左结合性或者右结合性。 所有的赋值符(包括复合赋值符)都具有右结合性(从右到左执行),因此可以使用连等的赋值形式。唯一的三目运算子?:也是具有右结合性的。 所有优先顺序相同的操作符,它们的结合性也相同,这是必须如此的。在函式呼叫中,各个引数的计算顺序是不确定的
附录C C语言运算子优先顺序和结合性
优先顺序 运算子 含义 运算型别 结合性
1 ( )
[ ]
->
, 圆括号
下标运算子
指向结构体成员运算子
结构体成员运算子 单目 自左向右
2 !
~
++ --
(型别关键字)
+ -
*
&
sizeof 逻辑非运算子
按位取反运算子
自增、自尖运算子
强制型别转换
正、负号运算子
指标运算子
地址运算子
长度运算子 单目 自右向左
3 * / % 乘、除、求余运算子 双目 自左向右
4 + - 加、减运算子 双目 自左向右
5 <<
>>左移运算子
右移运算子 双目 自左向右
6 <<= >>= 小于、大于、小于等于、大于等于 关系 自左向右
7 = = != 等于、不等于 关系 自左向右
8 &按位与运算子 位运算 自左向右
9 ^ 按位异或运算子 位运算 自左向右
10 | 按位或运算子 位运算 自左向右
11 &&逻辑与运算子 位运算 自左向右
12 || 逻辑或运算子 位运算 自左向右
13 ? : 条件运算子 三目 自右向左
14 = += -= *=
/= %= <<= >>= &= ^= |= 赋值运算子 双目 自右向左
15 , 逗号运算 顺序 自左向右
C语言中的算术自反赋值运算子怎么运算?算术自反赋值运算子有加赋值(+=、双目中缀)、减赋值(-=、双目中缀)、乘赋值(*=、双目中缀)、除赋值(/=、双目中缀)、模赋值(%=、双目运算)。前一个运算物件必须是变数,后一个运算物件是表示式。运算规则是先计算右边表示式的值,再和左边变数进行相应的运算,然后将结果赋予左边的变数。例如说 x += b其运算就是 x = x + b x -= b其运算就是 x = x - b x *= b其运算就是 x = x * b x /= b其运算就是 x = x / b x %= b其运算就是 x = x % b 说白了就是那种型别运算的简写。。。。。
c语言 复合赋值运算子的问题,请指教!第一步:a=a/(a-6),a的值传递给第二步进行下一步计算
第二步:a=a*a,a的值传递给第三步进行下一步计算
第三步:a=a+a,a的最终结果在这里
记住两句话:
1、=赋值号,自右向左进行;
2、a+=1相当于a=a+1。这个a/=a-6先把a-6看成一个数,a/=1不就是a=a/1嘛;
我新手,c语言关系运算符和赋值运算子,哪个优先顺序高?比如a=b>c怎么理解?下面的是优先顺序排序上面的高下面的低,左右高低有描述。
() [] ->. left to right
! ~ ++ -- + - * (type) sizeof right to left
* / % left to right
+ - left to right
<<>>left to right
<<= >>= left to right
== != left to right &left to right
^ left to right
| left to right
&&left to right
|| left to right
?: right to left
= += -= *= /= %= &= ^= |= <<= >>= right to left
, left to right
========================
a=b>c 相当于 a = (b>c)
在c语言中,逻辑运算子和赋值运算子那个更优先计算呢?逻辑运算子
C语言中算术运算子、关系运算符、逻辑运算子、赋值运算子等运算子的优先顺序 求大神帮忙解析:
(1) 记住加减乘除就可以了
(2) 其它的,直接加括号
(3) 应付考试:多做练习题
(4) 职场程式猿:直接加括号