问题 填空题

阅读以下函数说明和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”。

多项选择题
单项选择题