当前位置:首页 » 编程语言 » 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范式学习