填空题 阅读以下函数说明和C语言函数,将应填入{{U}} (n) {{/U}}处的字句写在对应栏内。 [说明1] 本程序输入一字符串,并将其中的大写字母变成小写字母。 [C函数1] #include<stdio.h> void main() { int i=0; char s[120]; printf("Enter a string./n"); scanf("%s",s); while({{U}} (1) {{/U}}){ if({{U}} (2) {{/U}}) 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({{U}} (3) {{/U}}); k=(10w+high)/2; if({{U}} (4) {{/U}}) return k; else if({{U}} (5) {{/U}})high=k-1; else low=k+1; return -1; }
  • 1、
【正确答案】 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”。