Ⅰ c语言编程用的符号有哪些
如果真正掌握了C 语言,你就能很轻易的回答上来。这个问题就请读者试着回答一下吧。本章不会像关键字一样一个一个深入讨论,只是将容易出错的地方讨论一下。
表(2.1)标准C 语言的基本符号
C 语言的基本符号就有20 多个,每个符号可能同时具有多重含义,而且这些符号之间相互组合又使得C 语言中的符号变得更加复杂起来。
你也许听说过“国际C 语言乱码大赛(IOCCC)”,能获奖的人毫无疑问是世界顶级C程序员。这是他们利用C 语言的特点极限挖掘的结果。下面这个例子就是网上广为流传的一个经典作品:
#i nclude <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?main(2,_+1,"%s %d %d
"):9:16:t<0?t<-72?main(_,t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw'
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"):t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1):0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:
uwloca-O;m.vpbks,fxntdCeghiry"),a+1);}
还没发狂?看来你抵抗力够强的。这是IOCCC 1988 年获奖作品,作者是Ian Phillipps。
毫无疑问,Ian Phillipps 是世界上最顶级的C 语言程序员之一。你可以数数这里面用了多少个符号。当然这里我并不会讨论这段代码,也并不是鼓励你也去写这样的代码(关于这段代码的分析,你可以上网查询)。
Ⅱ c语言的运算符号数组替代
运算符号字符只是一个记号,最后由程序翻译就好了。我看楼主问题似乎和计算24点的问题有点相似,我正好写了一个,就是全搜索,计算所有可能的解,式子表现为一颗二叉树,叶子节点是数,其它节点代表运算符。代码如下,仅供参考:
#include<stdio.h>
#include<string.h>
/*
*gametoget24,given,foursymbols(+-*/)
*willmaxf(n)=3**(n-1)*n!*(n-1)!values
*f(4)=3888f(5)=233280
*f(6)=20995200f(7)=2645395200
*somaybe6or7isthelimited.
*/
#defineLMX_ABS(a)((a)<0?(-(a)):(a))
boolDblEqual_L(doublea,doubleb)
{
returnLMX_ABS(a-b)<0.0000001;
}
#defineMAXN6
#defineMAX_SAVE128
intn=4,aim=24;
intv[MAXN]={5,3,7,8};
charsymbols[8]="+-_*/?";
structNode
{
doubleval;
intsyb;
structNode*l,*r,*p;
};
Nodenode[(MAXN*2-1)*MAX_SAVE],curr[MAXN*2-1];
Node*root[MAX_SAVE];
boolused[MAXN*2-1];
inti_save,i_exist,i_base;
voidDfsCopy_L(Node*q,Node*p)
{
if(p->l!=NULL){
node[i_base].p=q;
node[i_base].val=p->l->val;
node[i_base].syb=p->l->syb;
q->l=&node[i_base];
i_base++;
node[i_base].p=q;
node[i_base].val=p->r->val;
node[i_base].syb=p->r->syb;
q->r=&node[i_base];
i_base++;
DfsCopy_L(q->l,p->l);
DfsCopy_L(q->r,p->r);
}
}
voidSave_L(Node*p)
{
i_base=i_save*(MAXN*2-1);
root[i_save]=&node[i_base];
Node*q=root[i_save];
q->val=p->val;
q->syb=p->syb;
i_base++;
DfsCopy_L(q,p);
i_save++;
}
voidPrint_L(Node*p)
{
if(p->syb<0)printf("%d",(int)(p->val+0.0001));
elseif(p->syb==2||p->syb==5){
printf("(");
Print_L(p->r);
printf("%c",symbols[p->syb-1]);
Print_L(p->l);
printf(")");
}else{
printf("(");
Print_L(p->l);
printf("%c",symbols[p->syb]);
Print_L(p->r);
printf(")");
}
}
doubleCal_L(doublea,doubleb,intk)
{
doubler;
switch(k)
{
case0:r=a+b;break;
case1:r=a-b;break;
case2:r=b-a;break;
case3:r=a*b;break;
case4:r=a/b;break;
case5:r=b/a;break;
default:r=1.0;break;
}
returnr;
}
voidgo(intstep)
{
if(step==2*n-1){
inti=2*n-2;
if(DblEqual_L(curr[i].val,aim)){
i_exist++;
if(i_save<MAX_SAVE){
Save_L(&curr[i]);
}
Print_L(&curr[i]);
printf(" ");
}
return;
}
inti,j,k;
for(i=0;i<step-1;i++)
if(used[i])
for(j=i+1;j<step;j++)
if(used[j]){
used[i]=false;
used[j]=false;
used[step]=true;
curr[step].l=&curr[i];
curr[step].r=&curr[j];
curr[i].p=&curr[step];
curr[j].p=&curr[step];
for(k=0;k<6;k++)
{
curr[step].syb=k;
curr[step].val=Cal_L(curr[i].val,curr[j].val,k);
go(step+1);
}
used[i]=true;
used[j]=true;
used[step]=false;
}
}
intmain(intargc,char*argv[])
{
inti;
for(i=0;i<n;i++)
{
curr[i].val=v[i];
curr[i].syb=-1;
used[i]=true;
}
go(n);
return0;
}
Ⅲ C语言,关于符号代替的问题
putchar 只能输出一个字符、 换成printf("bc");吧
#include <stdio.h>
int main ()
{
char ch;
int he = 0;
int n=0;
int m=0;
while ((ch=getchar())!='#')
{
putchar (ch);
if (ch=='.')
{
putchar ('\b');
putchar ('!');
n++;
}
else if (ch=='a')
{
printf ("bc");
m++;
}
}
he=n+m;
printf ("%d\n",he);
return 0;
}
Ⅳ c语言如何替换字符串中的“&”符号
你好!
原理相同。。找到关键字词。。可以使用strstr()库函数。。使用STRCPY替换函数。。但是要考虑替换单词长度和被替换单词长度。。做好其他字符串的移位和字符串
如有疑问,请追问。
Ⅳ c语言各种符号的意思
&: 在C语言中有两种意思,一种是取地址符,是单目运算符;另一种是位运算符,表示“按位与”,是双目运算符。|: 是位运算符,表示“按位或”。
资料扩展
1、符号 & 和 | 这两个运算符都是二进制的按位操作符。
&: 二进制“与”(都为1时,结果是1,否则是0。),比如:1010 & 1011 = 1010,1010 & 1000 = 1000。
|: 二进制“或”(有1时,结果是1,都是0时,结果为0。),比如:1010 | 1011 = 1011,1010 | 1000 = 1010。
2、位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字。
例如:
表达式10&15表示(1010 & 1111),它将返回表示1010的值10。因为真真得真,或者是11得1,同位全是1结果也是1。
表达式10|15表示(1010 | 1111),它将返回表示1111的值15。假假得假。全零得零。
3、C语言中的符号分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符。
4、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
Ⅵ c语言编程用的符号有哪些是什么意思
1、C语言常用编程符号:
%取余数
5%3=2
&位的和
2&3=2
|位或
2|3=3
!非
!2=0
&&和
3&&5为真
4&&0
为假
||或
3||0为真
0||0为假
+=
相当于
a+=b
a=a+b,其他相似
如*=
-=
/=
<<
位向左移
>>位向右移
sizeof
确定占的空间大小
sizeof(int)
><
>=
<=这就是大于小于大于等于,小于等于
a?b:c判断,如果a为真,则返回b,否则返回c
!=不等于
++
——自增自减,a--相当于a=a-1
2、运算符优先级:
Ⅶ 我想问下C语言中能不能用某种符号代替+-*/的作用 比如printf("%d",2+3); prifntf("%d",2代替符号3):
#define 就是字符串替换
#define jia +
意义是把程序中出现的"jia"最后都替换成"+"
所以最后printf("%d",2+3); 和printf("%d",2 jia 3);是等效的
Ⅷ c# /c语言 用符号可以代替if语句的语法怎么写来着
m=a>b?1:0;
意思就是说如果a>b,m=1,否则m=0;
这个运算符叫三元运算符或者叫条件运算符
Ⅸ c语言如何替换字符串中的&符号
/* 下面的函数可取去除字符串s中指定的字符c_h。在调用该函数时,用delchar(s,'&')即可删除s中所有的'&'字符。*/
char *delchar(char *s, char c_h) {
char *p,*q;
p = s;
while(*p != '\0') {
if(*p == c_h) {
q = p;
while(*q != '\0') {
*q = *(q + 1);
q++;
}
p--;
}
p++;
}
return (s);
}