问题 问答题

使用VC6打开考生文件夹下的工程RevPrroj7。此工程包含一个源程序文件 RevMain7.cpp。在该文件中,函数fun()的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII码值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如:若a中的字符串为aBCDeFgH,b中的字符串为ABcd,则c中的字符串为 aBcdeFgH。
请改正程序中的错误,使它能得到正确结果。
注意,不要改动主函数,不得删行或增行,也不得更改程序的结构。
源程序文件RevMain7.cpp中的程序清单如下:
//RevMain7.cpp
#include<iostream>
#include<string>
using namespace std;
void fun(char *p,char *q,char *c)

int k=1;
while(*p!=*q)

if(*p<*q)
c[k]=*q;
else
c[k]=*p;
if(*p)
p++;
if(*q)
q++;


int main()

char a[10]="aBCDeFgH",b[10]="ABcd",c[80]=’\0’;
fun(a,b,c);
cout<<"The string a is "<<a<<’\n’;
cout<<"The string b is "<<b<<’\n’;
cout<<"The string c is "<<c<<endl;
return 0;

答案

参考答案:
正确的fun()函数为:
void fun(char *p,char *q,char *c)
{
int k=0;
while((!*p)&&(!*q))
{
if(*p<*q)
c[k]=*q;
else
c[k]=*p;
if(*p)
p++;
if(*q)
q++;
k++;
}
}

解析: 此题中主函数没有错误。其错误全部集中在函数fun()中。分析函数fun():
①整数k用来记录字符串c的偏移,因此k初始值应该为0。
②循环结束的条件应该是两个字符串指针都已经移到字符串尾部。
③在while循环体中,k值应该递增。

单项选择题

为解决国际法不加禁止行为产生的损害后果的责任问题,国际社会缔结了一些条约,采用了不同的责任制度,假设下列选项中所涉各国都是相关公约的缔约国,则下列说法中正确的是?

A、甲国某船运公司的一艘核动力船舶在乙国港口停泊时发生核泄漏,给乙国造成了6000万美元的损失,则因为《关于核损害的民事责任的维也纳公约》和《核动力船舶经营人公约》采用国家责任制度,即由国家承担对外国损害的责任,所以这6000万损失应由甲国全部承担

B、甲国发射的气象卫星偏离轨道与乙国的遥感卫星发生碰撞,给乙国造成了6000万美元的损失,则根据《空间物体造成损害的国际责任公约》规定的绝对责任制度,甲国应对乙国的损失全部赔偿

C、甲国发射的气象卫星与乙国的遥感卫星发生碰撞,造成乙国卫星坠落,其碎片又将丙国正在飞行的民航飞机撞落,造成丙国航空公司6000万美元的损失,则根据《空间物体造成损害的国际责任公约》规定的相对责任制度,甲乙两国应对这6000万美元的损失全部赔偿

D、甲国某船运公司的一艘油轮在乙国港口停泊时,发生泄漏,造成油污大面积污染,给乙国造成6000万损失,则因为《1969年国际油污损害民事责任公约》采用营运人赔偿制度,即船舶所有人承担赔偿责任,所以这6000万损失应由该船运公司赔偿

单项选择题