●试题七
阅读以下说明和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次,注意结果中的time。
第1题:
阅读以下两个说明、c函数和问题,将解答写入答题纸的对应栏内。
【说明1】
函数main()的功能旨在对输入的一个正整数n,计算12+22+32+…+n2,但是对该函数进行测试后没有得到期望的结果。
【c函数】
1.输入5测试上述main函数时,显示结果如下所示。
input an integer:5
result:-582598909
2.将行号为7的代码修改为:prinff(”n=%d\nresuh:%d\n”,n,sum);并再次
输入5测试main函数,显示结果如下所示。
input an interger:5
n=2293632
result:-582598909
阅读以上两个说明、c函数和问题,将解答写入答题纸的对应栏内。
【问题1】
请给出上述main函数中需要修改的代码行号,并给出修改后的整行代码。
【说明2】
函数test_f2{}编译时系统报告有错,修改后得到函数12_B{}。对函数12_B{}
进行编译时顺利通过,在某些C系统中执行时却由于发生异常而不能正确结束。
【c函数2】
【问题2】(1)请指出函数test_f2中不能通过编译的表达式;(2)请指出可能导致函数f2_B运行异常的表达式。
第2题:
第3题:
第4题:
第5题:
第6题: