下面程序的运行结果是#include #define SIZE 12sub(char *a int t1 int t2) { char ch; while(t
下面程序的运行结果是#include #define SIZE 12sub(char *a,int t1,int t2) { char ch; while(t1<t2) { ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1++;t2--; }} main() { char s[SIZE]={’A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’}; int i; sub(s,7,SIZE-1); for(i=0;i<SIZE;i++) printf("%c ",s[i]); printf(" ");}
-
参考答案:A B C D E F G L K J I H在本题中,程序首先定义了一个大小为12的宏SIZE,然后定义了一个函数sub,该函数带有三个形参,第一个为字符型指针变量,另外两个为整型变量。在主函数中,首先定义了一个大小为宏SIZE的字符型数组s,并对其进行了初始化操作,然后定义一个循环变量i,接着调用函数sub,传递的实参分别为数组名s,7和数组长度减1,此时程序运行到sub函数,在该函数体中,首先运行while循环,该循环的结束条件为t1<t2,从传递的参数可以知道t1和t2的初值分别为7和11。第一次循环时,将*(a+t1)即a[7]的值赋值给ch,然后将*(a+t2)即a[11]的值赋给a[7],将ch的值赋给a[11],从分析可以知操作其实是交换*(a+t1)与*(a+t2)的值,即a[7]和a[11]的值,然后变量t1加1为8,t2减1为10。由于8<10,程序进行第二次循环,即交换数组元素a[8]和a[10]的值,然后变量t1加1为9,t2减1为9。由于这两个变量的值相等,循环结束。循环结束后,数组s中各元素的值分别为A、B、C、D、E、F、G、L、K、J、I、H,最后主函数用一个循环,输出数组s中各元素的值,因此,最后输出的结果是A B C D E F G L K J I H。
