求教C语言大神!!!最好讲一下理由,万分感谢
阅读以下程序,输出结果为_________#include<stdio.h>#include<string.h>voidfun(chars[]);intmain(){ch...
阅读以下程序,输出结果为_________
#include<stdio.h>
#include <string.h>
void fun( char s[]);
int main()
{
char a[]="abcde";
int k;
fun(a);
puts(a);
return 0;
}
void fun( char s[])
{
int x,y;
char c;
x=0;
y=(strlen(s)-1)/2;
for( ; x<y; x++,y--)
{
c=s[y];
s[y]=s[x];
s[x]=c;
}
} 展开
#include<stdio.h>
#include <string.h>
void fun( char s[]);
int main()
{
char a[]="abcde";
int k;
fun(a);
puts(a);
return 0;
}
void fun( char s[])
{
int x,y;
char c;
x=0;
y=(strlen(s)-1)/2;
for( ; x<y; x++,y--)
{
c=s[y];
s[y]=s[x];
s[x]=c;
}
} 展开
展开全部
输出结果:cbade
由于字符数组 a[]= "abcde"; 其中包括了abcde 5个字符外,还有一个结束符 '\0',
所以 strlen(s) = 6,
y=(strlen(s)-1)/2; 属于整数除法运算,y=(6-1)/ 2=5/2=2
所以 for 循环了2次
第一次把 a[2]='c' 和 a[0]='a' 进行了交换
第二次条件不满足,未改变数组
其他位置字符未变,最后输出结果就是cbade
由于字符数组 a[]= "abcde"; 其中包括了abcde 5个字符外,还有一个结束符 '\0',
所以 strlen(s) = 6,
y=(strlen(s)-1)/2; 属于整数除法运算,y=(6-1)/ 2=5/2=2
所以 for 循环了2次
第一次把 a[2]='c' 和 a[0]='a' 进行了交换
第二次条件不满足,未改变数组
其他位置字符未变,最后输出结果就是cbade
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2020-03-31
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询