请高手帮我解决一下这道C语言题目,谢谢!

下面的程序的运行结果为( )
#include<stdio.h>
#include<string.h>
fun( char *w,int n)
{
char t,*s1, *s2;
s1=w; s2=w+n-1;
while(s1<s2) {t=*s1++; *s1=*s2--; *s2=t;}
}
main( )
{
char *p;
p="1234567";
fun(p,strlen(p));
puts(p);
}

A 7654321 B 1714171 C 1711717 D 7177171

请简略的说一下过程,谢谢!!
strlen:统计字符串中字符的个数(不包括终止符‘\0')

1、1234567
s1指针指向1,s2指针指向7
t=*s1++ s1指针指向2(t得到1的值 1)
s1=*s2-- s2指针指向6(值发生改变1734567)
*s2=t; (值发生改变1734517)
2、
s1指针指向2,s2指针指向6
t=*s1++ s1指针指向3(t得到2的值 7)
s1=*s2-- s2指针指向5(值发生改变1714517)
*s2=t; (值发生改变1714717)
3、
s1指针指向3,s2指针指向5
t=*s1++ s1指针指向4(t得到3的值 1)
s1=*s2-- s2指针指向4(值发生改变1711717)
s1=*s2-- s2指针指向5(值发生改变1711717)
4、函数退出

#include<stdio.h>
#include<string.h>
void fun( char *w,int n)
{
char t,*s1, *s2;
s1=w; s2=w+n-1;
while(s1<s2) {t=*s1++; *s1=*s2--; *s2=t;}
}
void main( )
{
char p[10]="1234567";
fun(p,strlen(p));
puts(p);
}
温馨提示:内容为网友见解,仅供参考
无其他回答

请高手帮我解决一下这道C语言题目,谢谢!
s=fun(3)=3-fun(3-1)=3-fun(2)=3-2=1 所以选A.

请高手帮我解决一下这道C语言题目,谢谢!
答案C

请高手帮我解决一下这道C语言题目,谢谢!
a的地址传给n,while 把a的值变为 -1,因为while跳出循环的条件是0,而测试的是减一之前的a,所以a的值变为-1了,输出之前,a的值又被加为0,所以结果是 0

请高手帮我解决一下这道C语言题目,谢谢!
1、1234567 s1指针指向1,s2指针指向7 t=*s1++ s1指针指向2(t得到1的值 1)s1=*s2-- s2指针指向6(值发生改变1734567)s2=t; (值发生改变1734517)2、s1指针指向2,s2指针指向6 t=*s1++ s1指针指向3(t得到2的值 7)s1=*s2-- s2指针指向5(值发生改变1714517)s2=t; ...

一道c语言问题,请各位高手们帮帮忙,谢谢
char p[][20]={“get”,”put”,”out”};p是一个有3个元素的数组,数组中的每个元素都是一个char[20]类型的数组。也就是说,p是一个二维数组。strlen(p[0])+strlen(p[1])+ strlen(p[2])即计算p中的三个字符串的长度总和,为3+3+3=9。

谁能帮我解释一下这道c语言题目啊 不懂
1.转换说明符 a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)c 字符 d 有符号十进制整数 f 浮点数(包括float和doulbe)e(%E) 浮点数指数输出[e-(E-)记数法]g(%G) 浮点数不显无意义的零"0"i 有符号十进制整数(与%d相同)u 无符号十进制整数 o 八进制...

c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...

C语言高手帮忙做这三道题,要详解 谢谢拉!!
1、A while()是判断括号里的是真还是假,若表达式为0,就是假,若表达式非0,就是真。"!"是非逻辑运算符,简单说就是把非0变成0,把0变成1。。。"while(!x)”就是"(!x)"取真是进行循环,就是"!x"的值为非0时,就是"x"的值为0时。所以就是x==0.2、C 这题和上题一样,就是(m...

请各位C语言高手帮忙解决下面的问题。
printf("请输入15个数:\\n");for(i=0; i<15; i++){ scanf("%d", a+i);} printf("\\n请输入要查找的数:\\n");scanf("%d", &target);ret = binary_find(a, target, 0, 14);if(-1 != ret){ printf("\\n%d找到了, 它是a[%d]\\n", target, ret);} else { printf("\\...

我这有一道C语言的题看不懂,真心求帮助,各位C语言高手拜托啦,
栈是一种特殊的存储空间,他用的是后进先出的数据处理方式 有两个标量,bottom和top,表示栈底和栈顶,初始时,栈为空,那么bottom和top肯定都是0 目前你栈的存储空间是s(1:40)也就是说最多可以存40个数据 栈每存入一个数据(入栈),top就增1,每出栈一次,top就减1,所以,当你top==20时,...

相似回答