} }
答案:【12】br[I]或*(br+i)
评析:二维数组a存放3行4列的数组元素,一维数组b用于存放每行的最大数。在函数fun中,外层for循环用于控制行数,内层for循环用于控制列数。
(13)以下程序运行后的输出结果是___【13】___。
void swap(int x, int y) { int t;
t=x;x=y;y=t;printf(―%d %d ―,x,y); } main()
{ int a=3,b=4;
swap(a,b); printf(―%d %d‖,a,b);
答案:【13】4 3 3 4
评析:用变量作为函数的实参时,属单向传递,即―值传送‖方式,此种函数参数的传递方式只能由实参传给形参,不能由形参传回来给实参。
(14)以下程序运行后的输出结果是___【14】___。
#include
void fun(char *s, int p, int k) { int i;
for(i=p;i { char s[]=‖abcdefg‖; fun(s,3,strlen(s)); puts(s); } 答案:【14】abcfg 评析:函数fun的作用是将s所指的字符串中从第p十3到第k+1个字符向前移动两个位置。本题程序是将数组s中从第6个元素开始的值分别向前移动两个位置。在执行fun函数时,p的值是3,k的值是7, 所以,具体执行―for(i=p;i i=3:判断i i=4:判断i i=5:判断i i=6:判断i (15)以下程序运行后的输出结果是___【15】___。 #include main() { char ch[]=‖abc‖,x[3][4]; int i; for(i=O;i<3;i++) strcpy(x[i],ch); for(i=O;i<3;i++) printf(―%s‖,&x[i][i]); printf(―\\n‖); } 答案:【15】abcbcc 评析:字符数组ch的值?abc‘分别复制到了二维数组x的每一行,使得二维数组中每一行的值均为?abc‘,再通过第二个for循环打印出每一行上所要求输出的字符串。 (16)以下程序运行后的输出结果是___【16】___。 fun(int a) int b=0;static int c=3; b++;c++; return(a+b+C); } main() {int i,a=5; for(i=0;i<3;i++)printf(―%d%d‖,i,fun(a)); printf(―\n‖); } 答案:【16】010111212 评析:静态局部变量是在编译时赋初值的,在程序运行时它已有初值。 (17)以下程序运行后的输出结果是___【17】___。 struct NODE { int k; struct NODE *link; }; main() { struct NODE m[5],*p=m,*q=m+4; int i=0; while(p!=q) { p->k=++i; p++; q->k=i++; q–; } q->k=i; for(i=0;i<5;i++) printf(―%d‖,m[i].k); printf(―n‖); } 答案:【17】13431 评析:程序执行过程如下: p=m,q=m+4,条件p!=q成立,执行p->k=++i;,由于是―前加‖,所以m[O].k=1.执行p++后p=m+l;执行q->k=i++;,由于是―后加‖,所以m[4].k=1,然后使得i加上1,即i=2,q–后,q=m+3: p=m+l,q=m+3,条件p!=q成立,执行p->k=++i;,由于是―前加‖,所以i=3,m[0].k=3,执行p++后p=m+2;执行q->k=i++;,由于是―后加‖,所以m[4].k=3,i=4,q–后,q=m+2; p=m+2,q=m+2,条件p!=q不成立,则执行q->k=i;即m[2].k=4;故输出的值为13431。 (18)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文, 时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回 文即正向与反向的拼写都一样,例如:adgda。请填空。 #include char *huiwen(char *str) { char *pl,*p2; int i,t=0; pl=str;p2=___【18】___; for(i=0;i<=strlen(str)/2;i++)