下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。 main() { int s[]={6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b; for(【 】) if(*a<*b) a=b;

admin2013-02-23  50

问题 下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。
   main()
   { int s[]={6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b;
   for(【  】)
   if(*a<*b) a=b;
   printf("%d",*a);
   }

选项

答案a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++

解析 题目要求输出数组中最大的数,所以要遍历整个数组,而指针a用来指向最大数,所以循环变量只有使用指针b。for初始化时,应该先让a指向第1个数,然后让b指向第2个数,故循环初始化语句应该为a=s,b=s+1或其他等价表达式。因为要使 b遍历整个数组,故循环条件应该为b-s<sizeof(s)/sizeof(s[0])或其他等价表达式。最后每次循环应该让b往后移动一位,故for的第 3条语句应该是++b、b++或其他等价形势。所以本题应填a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++或其他等价语句。
转载请注明原文地址:https://kaotiyun.com/show/wSPp777K
0

最新回复(0)