问答题
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*data),此函数的功能是找出字符串数组中最大的ASCIl值,如果有相同变量,则输出最后一个所在的位置;如果字符串为空,则返回-1;或者不存在时也返回-1。
注意:不能修改函数的其他部分。计算数字如果第一个字母最大,则返回0。依次增加。
试题程序:
#include
intfun(char*data)
{
}
voidmain()
{
charsource[1024];
cout<<"请输入一行英文字符串:\n";
cin.getline(source,1024);
cout<<"最大的字母出现在距离头部"< <<"个字母处"< }
【正确答案】 imfun(char*data)
{
intMaxPos=0:
if(data==NULL
return-l:
charMaxData=data[0];
if(MaxData==0)
return-1;
for(inti=1;data[i]!=0;i++)
if(data[i]>=MaxData)
{
MaxData=data[i];
MaxPos=i:
}
returnMaxPos;
}
【答案解析】 【解析】本题考查的是查找最大值算法。根据题意,首先检查传入参数的合法性,如不合法或为空串,则返回-1,然后通过for循环遍历整个字符串,将最大值字符保存到MaxData内,并将最大位置保存给MaxPos,最后返回Max-Pos。