在“运统1”车辆使用属性栏中填记代码“02”,表示()使用车辆和所属车辆。
A.集装箱专业运输公司
B. 特货专业运输公司
C. 行包专业运输公司
D. 路外其他企业
A.集装箱专业运输公司
B. 特货专业运输公司
C. 行包专业运输公司
D. 路外其他企业
第5题
[程序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 [i]. v >0.0;i ++)
if(strcmp (w,nTbl[i]. name) ==0) return nTbl [i]. 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[i]. name,&nTbl[i]. v) ==2)
i++;
fclose(fp) ;nTbl[i]. 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);
}
第6题
中国中福实业总公司代码:3103915009;收货单位同经营单位;特定商品进口登记证明: 3100-00-00111,代码:7;预录入编号:107039381;该批货物于2007年8月20日进口,于8月 23日由经营单位自行向大连新港海关申报,并表示该货立即运往黑龙江省五大连池军垦农场使用。货物为裸装,装入集装箱,箱号为UXXU425916-9,箱体自重。该商品的HS CODE:8433.5100。
资料2:
YANMAR AGRICULTURAL EQUIPMENT CO.,LTD.
1-32,CHAYAMCHI,KITA-KU,OSAKA 530,JAPAN
TEL:06 376 6336 8 CABLE:YANMAR OSAKA TELEX:523 3623
FAX:06 373 9474
资料3:
FOREICN TRADE DIVISION
YANMAR AGRICULTURAL EQUIPMENO CO.,LTD.
1-32,CHAYAMCHI,KITA-KU,OSAKA 530,JAPAN
TEL:06 376 6336 8 CABLE:YANMAR OSAKA TELEX:523 3623
FAX:06 373 9474
请根据以上资料,选择下列栏目正确选项:
“进口日期”栏应填( )。
A.2007.08.20
B.2007.08.23
C.2007.08.19
D.2007.08.24
第8题
阅读下列说明和C代码,回答问题 1 至问题3,将解答写在答题纸的对应栏内。
【说明】
某应用中需要对100000 个整数元素进行排序,每个元素的取值在 0~5 之间。排序算法的基本思想是:对每一个元素 x,确定小于等于 x的元素个数(记为m),将 x放在输出元素序列的第m 个位置。对于元素值重复的情况,依次放入第 m-l、m-2、…个位置。例如,如果元素值小于等于4 的元素个数有 10 个,其中元素值等于 4 的元素个数有3个,则 4 应该在输出元素序列的第10 个位置、第 9 个位置和第8 个位置上。
算法具体的步骤为:
步骤1:统计每个元素值的个数。
步骤2:统计小于等于每个元素值的个数。
步骤3:将输入元素序列中的每个元素放入有序的输出元素序列。
【C代码】
下面是该排序算法的C语言实现。
(1)常量和变量说明
R:常量,定义元素取值范围中的取值个数,如上述应用中 R值应取6i:循环变量
n:待排序元素个数
a:输入数组,长度为n
b:输出数组,长度为n
c:辅助数组,长度为R,其中每个元素表示小于等于下标所对应的元素值的个数。
(2)函数sort
1 void sort(int n,int a[ ],intb[ ]){
2 int c[R],i;
3 for (i=0;i< (1) ;i++){
4 c[i]=0;
5 }
6 for(i=0;i<n;i++){
7 c[a[i]] = (2) ;
8 }
9 for(i=1;i<R;i++){
10 c[i]= (3) ;
11 }
12 for(i=0;i<n;i++){
13 b[c[a[i]]-1]= (4) ;
14 c[a[i]]=c[a[i] ]-1;
15 }
16 }
【问题1】(8 分)
根据说明和C代码,填充 C代码中的空缺(1)~(4)。
【问题2】(4 分)
根据C代码,函数的时间复杂度和空间复杂度分别为 (5) 和 (6) (用 O符号
表示)。
【问题3】(3 分)
根据以上C代码,分析该排序算法是否稳定。若稳定,请简要说明(不超过 100 字);
若不稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。
从下列的2 道试题(试题五和试题六)中任选 1 道解答。
如果解答的试题数超过 道,则题号小的 道解答有效。
第9题
阅读下列说明和C代码,回答问题 1 至问题3,将解答写在答题纸的对应栏内。
【说明】
某应用中需要对100000 个整数元素进行排序,每个元素的取值在 0~5 之间。排序算法的基本思想是:对每一个元素 x,确定小于等于 x的元素个数(记为m),将 x放在输出元素序列的第m 个位置。对于元素值重复的情况,依次放入第 m-l、m-2、…个位置。例如,如果元素值小于等于4 的元素个数有 10 个,其中元素值等于 4 的元素个数有3个,则 4 应该在输出元素序列的第10 个位置、第 9 个位置和第8 个位置上。
算法具体的步骤为:
步骤1:统计每个元素值的个数。
步骤2:统计小于等于每个元素值的个数。
步骤3:将输入元素序列中的每个元素放入有序的输出元素序列。
【C代码】
下面是该排序算法的C语言实现。
(1)常量和变量说明
R:常量,定义元素取值范围中的取值个数,如上述应用中 R值应取6i:循环变量
n:待排序元素个数
a:输入数组,长度为n
b:输出数组,长度为n
c:辅助数组,长度为R,其中每个元素表示小于等于下标所对应的元素值的个数。
(2)函数sort
1 void sort(int n,int a[ ],intb[ ]){
2 int c[R],i;
3 for (i=0;i< (1) ;i++){
4 c[i]=0;
5 }
6 for(i=0;i<n;i++){
7 c[a[i]] = (2) ;
8 }
9 for(i=1;i<R;i++){
10 c[i]= (3) ;
11 }
12 for(i=0;i<n;i++){
13 b[c[a[i]]-1]= (4) ;
14 c[a[i]]=c[a[i] ]-1;
15 }
16 }
【问题1】(8 分)
根据说明和C代码,填充 C代码中的空缺(1)~(4)。
【问题2】(4 分)
根据C代码,函数的时间复杂度和空间复杂度分别为 (5) 和 (6) (用 O符号
表示)。
【问题3】(3 分)
根据以上C代码,分析该排序算法是否稳定。若稳定,请简要说明(不超过 100 字);
若不稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。
从下列的2 道试题(试题五和试题六)中任选 1 道解答。
如果解答的试题数超过 道,则题号小的 道解答有效。
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!