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

c語言bnf

發布時間: 2023-05-22 01:24:22

⑴ C語言中比long long int 更大的整數類型是什麼

  1. long long 類型的范圍是:-9223372036854775808~9223372036854775807

  2. 如果只用正數可以考慮用咐型unsigned long long范圍是:0~18446744073709551615

  3. 如果需要更大的數字可以衡搭猜考慮使用枝世 數組來儲存

  4. 參考大數運算

  5. http://ke..com/link?url=FkfzF-RbPFxaGa_a

⑵ 用C語言編程愷撒密碼加密解密程序

#include<stdio.h>

#defineisletter(c)(((c)>='a'&&(c)<='z')||((c)>='A'&&(c)<='Z'))

voidEnc(constchar*str,char*out,intkey)
{
inti=0;
while(str[i])
{
if(isletter(str[i]))
{
out[i]=嫌知str[i]+key;
if(!isletter(out[i]))
out[i]-=26;
}
else
蘆指out[i]=str[i];
i++;
}
out[i]=0;
}
voidDenc(constchar*str,char*out,intkey)
{
inti=0;
while(str[i])
{
if(isletter(str[i]))
{
out[i]=str[i]-key;
if(!isletter(out[i]))
陪者配out[i]+=26;
}
else
out[i]=str[i];
i++;
}
out[i]=0;
}

intmain()
{
charout[100],out2[100];
Enc("",out,3);
printf("%s ",out);
Denc(out,out2,3);
printf("%s ",out2);
}

⑶ C++中類型說明符、類型限定符、類型修飾符的區別是什麼希望分別介紹一下

怎麼說呢……你可以用來定義鏈信變數的基本都是說明符,譬如int、char、double。
volatile、const等是限定符,你能不能對它做點啥,它啥時候有啥時候纖喚信沒,放在那裡,跟這個有關。
修飾符是修飾說明符的,unsigned、short等等,這兩個可以用來修飾int。毀輪
不過unsigned和short也可以定義變數……只是一種簡化的寫法

⑷ c程序設計的內容簡介

本書適用於「高級程序語言設計」或「程序設計基礎」課程,該課程是計算缺唯機系的專業基礎課。本書重點在於程序設計,而對C語言本身則採取有所取、有所不取的策略。對於那些常用的語言成分,直接講述與程序設計方法有關的語言成分,詳細准確地介紹;對於那些與程序設計方法聯系不太緊要,但還是常用的部分,放在最後簡單介紹;而對於那些與講述程序設計方法關系燃燃不太大,也不常用的部分則根本不涉及。
本書有如下特點
1. 全書整體結構好,知識體系新穎完整,章節安排合理。
2. 注重對學生進行嚴格的抽象思維訓練。嚴格按照國際標准ISO/IEC 9899:1999 和國家標准GB/T 15272-94介紹C語言,並使用BNF表示語法,使用自然言設計語義。
3. 本書最大的特點是以「程序設計」為主線,重點放在講述程序設計方法上,擯棄了目前各種程序設計書中流行的以「解釋程序設計語言」為主的做伏段培法;注重對學生進行程序設計方法及演算法的訓練,力圖做到嚴格的理論與具體方法、演算法有機結合。
4. 自始至終貫穿結構化程序設計思想,所有例題都具有良好的結構和程序設計風格。
5. 圖文並茂,引進PAD圖表示程序邏輯。

⑸ C語言中 有哪些關鍵字

關鍵字,已經有人列出了,不重復了。if 是關鍵字,毫無疑問。
如果寫程序,不是標示符要滿足那些條件,而是應當遵循一定規則命名。
比如,臨時變數,tmp、temp、i、j、k、x、y、z。
一般變數要求有含義,比如sum表示和,avg表示平均值。
全局變數使用比如,g_time全局時間。
一般規則:
1、可以作為標識符的:
a、下劃線或者字母
b、下劃線或者字母開頭,後面接若干個(下劃線或者字母或者數字)。
如果要精確需要看BNF,參考C90,6.1.2章節。
c、不能和關鍵字一樣
2、關於關鍵字:標準的已經有人列出了,但是C語言的各個方言會有不同的關鍵字,比如VC裡面的__int64也是一個關鍵字。具體的要查具體方言的手冊。
3、使用標識符的一般規則:
a、局部的標識符不要和全局的重名,比如最好不要用printf,scanf等作為局部變數。
b、盡量不要使用庫函數的名字,其實和上面的一樣,庫函數大都是全局的。
c、盡量不要用C++的關鍵字,比如class作為標識符,這樣以後移植會遇到困難。
個人感覺,C語言這個地方確實是有些缺陷的,C++引入了命名空間才解決了全局符號過多的問題。
事實上,沒有人知道C語言究竟有多少全局符號和函數,尤其是當使用了眾多庫函數的時候,甚至有些時候庫函數和庫函數都會重名,一旦發生都是損失巨大的悲劇。
大致就是這樣,慢慢使用中積累經驗吧,多看看類似的C語言規范,會提高你的水平。

⑹ BNF範式介紹

巴科斯範式  以美國人巴科斯(Backus)和丹麥人諾爾(Naur)的名字命名的一種形式化的語法表示方法,用來描述語法的一種形式體系,是一種典型的元語言。又稱巴科斯-諾爾形式(Backus-Naur form)。它不僅能嚴格地表示語法規則,而且所描述的語法是與上下文無關的。它以遞歸方式描述語言中的各種成分,凡遵守其規則的程序就可保證語法上的正確性。它具有語法簡單,表示明確,便於語法分析和編譯的特點。

BNF表示語法規則的方式為:非終結符用尖括弧括起。每條規則的左部是一個非終結符,右部是由非終結符和終結符組成的一個符號串,中間一般以「::=」分開。具有相同左部的規則可以共用一個左部,各右部之間以直豎「|」隔開。

所謂非終結符就是語言中某些抽象的概念不能直接出現在語言中的符號,終結符就是可以直接出現在語言中的符號。

BNF表示語法基本結構為 :

<non-terminal> ::= <replacement>

non-terminal意為非終止符,就是說我們還沒有定義完的東西,還可以繼續由右邊的replacement,也就是代替物來進一步解釋、定義。

BNF關鍵字及含義 :

       < > : 內包含的為必選項。

[ ] : 內包含的為可選項。 

{ } : 內包含的為可重復0至無數次的項。 

|  : 表示在其左右兩邊任選一項,相當於"OR"的意思。 

::= : 是「被定義為」的意思 

"..." : 術語符號 

 [...] : 選項,最多出現一次 

{...} : 重復項,任意次數,包括 0 次 

(...) : 分組 

|   : 並列選項,只能選一個 

斜體字: 參數,在其它地方有解釋 

例子:C語言的聲明語句可以用BNF這樣描述 : 

<聲明語句> ::= <類型><標識符>; | <類型><標識符>[<數字>]; 

這一句中<聲明語句>這個非終結符被定義成了兩種形式(上面用|隔開的兩部分),同時在這里引入了三個終結符: 分號; 左方括弧[,右方括弧 ]。 

<類型> ::= <簡單類型> | <指針類型> | <自定義類型> 

<指針類型> ::= <簡單類型> * | <自定義類型> * 

<簡單類型> ::= int|char|double|float|long|short|void 

<自定義類型> ::= enum<標識符>|struct<標識符>|union<標識符>|<標識符>

到這里就基本上把<類型>定義清楚了。

<數字> ::= 0x<畢穗十六進制數字串> | 0<八進制數字串> | <十進制數字串> 

<十六進制數字串> ::= <十六進制數字> | <十六進制數字串><十六進制數字> 

<八進制數字串> ::= <八進制數字> | <八手弊卜進制數字串><八進制數字> 

<十進制數字卜彎串> ::= <十進制數字> | <十進制數字串><十進制數字> 

<十六進制數字> ::= <十進制數字> | A | B | C | D | E | F 

<十進制數字> ::= <八進制數字> | 8 | 9 

<八進制數字> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 

到這里就把<數字>定義清楚了 

<標識符> ::= <字母> | <標識符> <字母數字串> 

<字母數字串> ::= <字母>|<十進制數字>|<字母數字串><字母>|<字母數字串><十進制數字> 

<字母> ::= _ | <大寫字母> | <小寫字母> 

<小寫字母> ::= a|b|c|d|e|f|g|h|i|j ……  

<大寫字母> ::= A|B|C|D|E|F|G|H|I|J …… 

到此為止整個聲明語句就定義完了(就是說已經沒有非終結符了)。

         雖然看起來很繁,但前面定義的各種非終結符都可以很容易的在別的地方重用。比如,函數聲明可以定義成下面的樣子: 

<函數聲明語句> ::= <類型><標識符>(<形參表>); 

<形參表> ::= <類型><標識符> | <形參表>,<形參表> 

只用兩句就描述完了,所以BNF實際上比用自然語言要簡練得多(整個C語言只用一二百句就可以描述清楚),而且相當的精確,不會有自然語言中那種模稜兩可的表達。如果你對BNF比較敏感的話,會發現C裡面的標識符不能由數字開頭,而且在C裡面下劃線是被當做字母看待的(也就是說能用字母的地方都可以用下劃線)。

參考資料:

1. 巴科斯範式

2. BNF範式學習