當前位置:首頁 » 編程語言 » c語言取代符號
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言取代符號

發布時間: 2022-07-16 18:35:39

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);
}