●试题七 阅读以下说明和C++代码,将解答写入答题纸的对应栏内。 【说明】 请编写一个函数int SeqS

16 查阅

●试题七

阅读以下说明和C++代码,将解答写入答题纸的对应栏内。

【说明】

请编写一个函数int SeqSearch(int list[],int start,int n,int key),该函数从start开始,在大小为n的数组list中查找key值,返回最先找到的key值的位置,如果没有找到则返回-1。请修改程序中画线部分的错误并将不同情况下的输出结果补充完整。

【程序】

文件search.cpp的内容如下:

#include <iostream.h>

int SeqSearch(int list[],int start,int n,int key)

{

for(int i=start;i<=n;i++)// (1)

{

if(list[i]=key) // (2)

{

return i;

}

}

return -1;

}

void main()

{

int A[10];

int key,count=0,pos;

cout<<" Enter a list of 10 integers: ";

for(pos=0;pos<10;pos++)

{

cin>>A; // (3)

}

cout<<"Enter a key: ";

cin>>key;

pos=0;

while((pos=SeqSearch(A,pos,10,key))!=-1)

{

count++;

pos++;

}

cout<<key<<" occurs "<<count<<(count!=1?" times":" time")<<" in the list."<<endl;

}

第一种情况:输入2 3 12 6 8 45 8 33 7 输入key:8

输出: (4)

第二种情况:输入2 3 12 6 8 45 8 33 7 输入key:9

输出: (5)

参考答案:

●试题七【答案】 (1)for(int i=start;i<n;i++)(2)if(list[i]==key)(3)cin>>A[pos](4)8 occurs 2 times in the list(5)9 occurs 0 time in the list【解析】数组下标从0开始,所以n次循环要在i=n-1时结束,而不是在i=n时结束。判断是否相等使用"==",一个等号是赋值。将输入数字逐个赋给A的pos处的元素。8出现2次,注意结果中的times。9出现0次,注意结果中的tim

软考初级