问题 填空题

阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。
[说明1]
本程序输入一字符串,并将其中的大写字母变成小写字母。
[C函数1]
#include<stdio.h>
void main()
int i=0;
char s[120];
printf("Enter a string.\n");
scanf("%s",s);
while( (1) )
if( (2) )
s[i]=s[i]-’A’+’a’;
i++;

printf("%s\n",S);

[说明2]
本程序用二分法,在已按字母次序从小到大排序的字符数组list[len]中,查找字符c,若c在数组中,函数返回字符c在数组中的下标,否则返回-1。
[C函数2]
int search(char list[],char c,int len)
( intlow=0,high=len-1,k;
while( (3) );
k=(10w+high)/2;
if( (4) ) return k;
else if( (5) )high=k-1;
else low=k+1;
return -1;

答案

参考答案:s[i] (2) ’A’<=s[i]&&s[i]<= ’Z’ (3) low<=high (4) list[k]==c
(5) list[k]>c或c<list[k]

解析:
函数1的功能是将读入的字符串中大写字母变成小写字母,因此对读入的每个字符首先判断该字符是否为’\0’,所以(1)填“s[i]”;然后判断该字符是否为大写字母,(2)填“’A’<=s[i]&&s[i]<=’Z’”。
函数2根据二分查找的特点,函数search中while循环的过程是将(low+high)/2对应的元素与给定的字符C比较,找到则返回,因此(4)填“list[k]==c”;否则继续。当list[k]>c时,high=k-1;当list[k]<c时,low=k+1。所以(5)填“list[k]>c”或“c<list[k]”。直到low>high时循环终止,所以(3)应填“low<=high”。

单项选择题
单项选择题 A1/A2型题