首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列程序说明和C代码,将应填人(n)处的字句写在对应栏内。 [程序5说明] 下列文法可用来描述化学分子式的书写规则(例如,A12(CO3)3”Cu(OH)2): λ→β\βλ β→δ\δn δ→ξ\ξθ\(λ) 其中
阅读下列程序说明和C代码,将应填人(n)处的字句写在对应栏内。 [程序5说明] 下列文法可用来描述化学分子式的书写规则(例如,A12(CO3)3”Cu(OH)2): λ→β\βλ β→δ\δn δ→ξ\ξθ\(λ) 其中
admin
2009-02-15
113
问题
阅读下列程序说明和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://www.kaotiyun.com/show/NgDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
某开发小组欲开发一个软件系统,实现城市中不同图书馆的资源共享,包括实体资源和电子资源,共享规则可能在开发过程中有变化。客户希望开发小组能尽快提交可运行的软件,且可以接受多次交付。这种情况下最适宜采用(31)开发过程模型。主要是因为这种模型(32)。(
下面的协议中属于应用层协议的是(26),该协议的报文封装在(27)中传送。(26)
在机器指令的地址字段中,直接指出操作数本身的寻址方式称为___________。
系统可维护性的评价指标不包括______。
给系统增加特征越容易,说明软件的______越好。
通常测试用例很难100%覆盖测试需求,因为(47)。①输入量太大。②输出结果太多。③软件实现途径多。④测试依据没有统一标准。
如果在查找路由表时发现有多个选项匹配,那么应该根据___________(25)原则进行选择。假设路由表有4个表项如下所示,那么与地址139.17.179.92匹配的表项是____________(26)。(25)
POP3协议采用___________(23)模式,客户端代理与POP3服务器通过建立___________(24)连接来传送数据。(24)
设有关系模式R(A1,A2,A3,A4,A5,A6),其中:函数依赖集F={A1→A2,A1A3→A4,A5A6→A1,A2A5→A6,A3A5→A6),则___________(21)是关系模式R的一个主键,R规范化程度最高达到____________(
若某文件系统的目录结构如下图所示,假设用户要访问文件f1.java,且当前工作目录为Program,则该文件的全文件名为(24),其相对路径为(25)。 (25)
随机试题
李国庆诉上海市静安区政府、上海市政府房屋征收补偿决定及行政复议决定案上海市静安区人民政府(以下简称“静安区政府”)于2012年10月19日作出房屋征收决定,李国庆户承租的公房在征收范围内。安置补偿协商过程中,静安区住房保障和房屋管理局(以下简称“静安房管
患者,男,62岁。发热,乏力2个月伴胸闷10余天。提示:胸腔积液化验检查结果:比重1.019,细胞数1000×106/L,中性粒细胞78%,红细胞80×109/L,蛋白含量38g/l,糖0.3mmol/L,乳酸脱氢酶3560U/L,腺苷脱氨酶
幼儿园可与居住建筑合建的最大规模为:
如图7-19所示电路,正弦电流f2的有效值I2=1A,电流i3的有效值I3=2A,因此电流i1的有效值I1等于()。
关于注册建造师施工管理签章文件的填写要求中说法有误的是()。
销售金项链缴纳的消费税为( )元。销售金银首饰缴纳的消费税为( )元。
下列有关围债的说法,正确的有()。
清末司法机构改革后,其最高审判机关是()。
Inthepasttenyearsskyscrapershavedeveloped______inChicagoandNewYorkCity.(2011年四川大学考博试题)
Whatdeterminesthekindofpersonyouare?Whatfactorsmakeyoumoreorlessbold,intelligent,orabletoreadamap?Allof
最新回复
(
0
)