指针和函数问题请教
最近做C语言的练习题,遇见了几个没大想明白的题(由于我是初学,问题弱智请大家不要见笑),在此写出请各位解答,谢谢先。
题1、有以下程序:
#include<stdio.h>
main()
{char str[]="xyz",*ps=str;
while(*ps) ps++;
for (ps--;ps-str>=0;ps--)
puts(ps);
}
最后的输出结果是:B
A.yz B.z C.z D.x
xyz yz yz xy
xyz xyz
我分析下去好像应该是
z
zy
zyx,答案解析看了也没大明白,希望得到更好的解析,谢谢
题2、以下程序的输出结果是:f
#include<stdio.h>
main()
{char *p="abcdefghijklmnopq";
while (*p++!='\e');
printf("%c\n",*p);
}
而我认为应该是在e之前结束循环,答案则为d,谢谢能替我解析
题3、请读以下程序:
#include<stdio.h>
void fun(int *s)
{static int j=0;
do
s[j]+=s[j+1];
while(++j<2);
}
main()
{int k,a[10]={1,2,3,4,5}
for(k=1;k<3;k++)
fun(a);
for(k=0;k<5;k++)
printf("%d",a[k]);
}
上面程序输出的结果是:35745
我自己认为答案是35845,不知道应给怎么弄,求解
题4、有以下程序:
#include<stdio.h>
void f(int y,int *x)
{y=y+*x;
*x=*x+y;
}
main()
{int x=2,y=4;
f(y,&x);
printf("%d %d\n",x,y);
}
执行后输出的结果是:8 4可是我则认为是6 10,请帮忙解析