首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列程序说明和C代码,将应填人(n)处的字句写在对应栏内。 [程序5说明] 下列文法可用来描述化学分子式的书写规则(例如,A12(CO3)3”Cu(OH)2): λ→β\βλ β→δ\δn δ→ξ\ξθ\(λ) 其中
阅读下列程序说明和C代码,将应填人(n)处的字句写在对应栏内。 [程序5说明] 下列文法可用来描述化学分子式的书写规则(例如,A12(CO3)3”Cu(OH)2): λ→β\βλ β→δ\δn δ→ξ\ξθ\(λ) 其中
admin
2009-02-15
119
问题
阅读下列程序说明和C代码,将应填人(n)处的字句写在对应栏内。
[程序5说明]
下列文法可用来描述化学分子式的书写规则(例如,A12(CO3)3”Cu(OH)2):
λ→β\βλ
β→δ\δn
δ→ξ\ξθ\(λ)
其中:λ是—个分子式;δ或是一个元素,或是一个带括号的(子)分子式,元素或是一个大写字母(记为ξ),或是一个大写字母和一个小写字母(记为ξθ)β或是一个δ,或是在δ之后接上一个整数n,δn表示β有n个δ的元素或(子)分子式。—个完整的分子式由若干个β组成。
当然一个正确的分子式除符合上述文法规则外,还应满足分子式本身的语义要求。
下面的程序输入分子式,按上述文法分析分子式,并计算出该分子式的分子量。例如:元素H的原子量是1,元素O的原子量是16。输入分子式H2O,程序计算出它的分子量为18 (1×2+16)。程序中各元素的名及它的原子量从文件atom.dat中读入。
[程序5]
#include < stdio. h >
#include < string. h >
#define MAXN 300
#define GMLEN 30
struct elem { char name[ ]; /* 元素名*/
double v;/*原子量*/
} nTbl [MAXN];
char cmStr [GMLEN], * pos;
int c;FILE * fp;
double factor( );
double atom( ) /* 处理文法符号δ*/
{char w [3];int i; double num;
while((c = * pos++) ==’||c ==’\t’); /*略过空白字符*/
if(c == ’\n’) return 0.0;
if(c>=’A’ && C <=’Z’) {/*将元素名存入W */
w[i =0]=c;c= * pos ++
if(c >=’a’&& c <=’z’)w[ ++i] =c;else pos--;
w[ ++i] =’\0’,
for(i =0;nTbl
. v >0.0;i ++)
if(strcmp (w,nTbl
. name) ==0) return nTbl
. v;
printf (" \n元素表中没有所输入的无素: \t%s\n’,w); retur n - 1.0;
} elseif (c = =’(’) {
if((num=(1)) <0.0)return -l.0; /*包括可能为空的情况*/
if( * pos ++ ! = ’)’) { printf (" 分子式中括号不匹配!/n") ;return - 1.0; }
return num;
}
printf ("分子式中存在非法字符:\t%c\n" ,c);
return - 1.0;
}
double mAtom( ) /* 处理文法符号β*/
{ double num ;int n = ];
if((num=(2)) <0.0)return-l.0;
c= *pos++;
if(c >=’O’&&c <=’9’) {
n = 0; while(c > = 0&&c < =’9’)
{n=(3);
c= *poss ++;
}
}
pos --;
return num * n;
}
double factor( ) /*处理文法符号λ*/
{ double num =0.0,d;
if(( hum = mAtom ( )) < 0.0) return - 1.0;
while( * pos >= ’A’&& * pos <= ’Z’||* pos == ’(’) {
if((d=(4)) <0.0)return-1.0;
(5);
} return num;
void main( )
{ char fname[ ] ="atom. dst"; /*元素名及其原子量文件*/
int i;double num;
if((fp=fopon(fname,"r" )) == NULL) { /*以读方式打开正文文件*/
prinff("Can net open%s file. \n’ ,fname) ;return /*程序非正常结束 */
i=0;
while(i < MAXN&&fscanf (fp," %s%lf,bTbl
. name,&nTbl
. v) ==2)
i++;
fclose(fp) ;nTbl
. v =-1.0;
while(1) [/*输入分子式和计算分子量循环,直至输入空行结束*/
printf(" \n 输入分子式! (空行结束) \n" ) ;gets(cmStr);
pos = cmStr;
if(cmStr[0] == ’\0’) break;
if( (num = later( ) ) > 0.0)
if( * pos! = ’\0’)printf("分子式不完整! \n" );
else printf("分子式的分子量为%f\n",num);
}
选项
答案
(1)factor()(2)atom()(3)n*10+c-’0’(4)mAtom()(5)num+=d
解析
(1)查找“(”后的子分子式的分子量。(2)得到元素的原子量。(3)计算元素后面的数字。(4)计算文法符号的分子量。(5)将分子式的各个部分的分子量进行累加。atom()查找输入字符串一个元素,并输出它的原子量;遇到括号时,使用递归对括号后的元素进行识别和计算,输出后,检查是否括号匹配;遇到其他字符则直接返回-1;0表示失败。mAtom()对元素及其后面的数字进行辨识,并调用atom()计算它们的原子量。Factor()对整个分子式进行辨识并计算其分子量。
转载请注明原文地址:https://kaotiyun.com/show/NgDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
在结构化分析中,用数据流图描述(42)。当采用数据流图对银行客户关系管理进行分析时,(43)是一个加工。(43)
下面的协议中属于应用层协议的是(26),该协议的报文封装在(27)中传送。(27)
在汇编指令中,操作数在某寄存器中的寻址方式称为______寻址。
以下关于不同类型的软件测试的叙述,正确的是______。A.单元测试不是模块测试B.多个模块不能平行地独立进行测试,应该顺序执行C.系统测试是检验程序单元或部件之间的接口关系D.确认测试是通过检验和/或核查所提供的客观证据,证实软件是否满足特定预期
编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段,其中,(22)并不是每种编译器都必需的。
编写汇编语言程序时,下列寄存器中程序员可访问的是______。A.程序计数器(PC)B.指令寄存器(IR)C.存储器数据寄存器(MDR)D.存储器地址寄存器(MAR)
在结构化分析方法中,利用分层数据流图对系统功能建模。以下关于分层数据流图的叙述中,不正确的是___________(32)。采用数据字典为数据流图中的每个数据流、文件、加工以及组成数据流或文件的数据项进行说明,其条目不包括____________(33)。
设有学生实体Students(学号,姓名,性别,年龄,家庭住址,家庭成员,关系,联系电话),其中“家庭住址”记录了邮编、省、市、街道信息;“家庭成员,关系,联系电话”分别记录了学生亲属的姓名、与学生的关系以及联系电话。学生实体Students中的“
以下用例图中,A1和A2为(47)。A1和A2的关系为(48)。(47)
MVC模式(模型.视图一控制器)是软件工程中的一种软件架构模式,把软件系统分为模型、视图和控制器三个部分。________________不属于MVC模式的优点。
随机试题
Aristotledefinedafriendas"asinglesouldwellingintwobodies".Howmanyfriendswehave,andhoweasilywemake,maintain
女,35岁,乏力,夜尿多。应首选哪些检查
关于医务人员决策权的下述认识和作法中,正确的是
男,32岁,反复上腹痛二年余,向背部放射,夜间加重,曾二次大出血,经抢救治愈,最可能的诊断是
土工织物厚度指在2kPa法向压力下,其顶面与底面之间的距离,单位为mm。()
下列关于有线电视、广播线路规划的表述,错误的是()。
买卖双方在6月1日签订某涂料买卖合同,合同约定买方于6月15日先付20%的预付款.6月20日卖方将货物送至买方所在地,买方同时给付剩余货款。6月20卖方发生火灾,烧毁涂料仓库.6月18日卖方要求买买方履行给付预付款的义务,买方拒绝履行,这是买方的()
最近,教育部对全国中学教师进行了一次健康普查,结果发现,超过六成以上的教师有职业倦怠的现象。职业倦怠来源于压力过重和情绪不良,是没有处理好工作关系所带来的一种消极的情绪耗竭状态,表现为疲劳、工作无乐趣、无激情、对工作冷漠,并且认为自己的工作价值偏低。当个
Hometomagnatesandgangsters,refugeesandartists,thecitywas,inits______,ametropolisthatexhibitedallthehuesofth
A、Theremightbealinkbetweensugarlevelsandnegativesocialbehaviors.B、Thosewithlowersugarlevelshavethesamenegati
最新回复
(
0
)