8.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<stdio.h>//8.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
void input(char s[])
{
gets(s);
}
void show(char s[])
{
puts(s);
}
void FanXuCunFang(char s[])//反序存放函数
{
int i,n;
n=strlen(s);
char s_temp[100];
for(i=0;i<n;i++)
{
s_temp[i]=s[n-i-1];
}
for(i=0;i<n;i++)
{
s[i]=s_temp[i];
}
}
int main()
{
char s[100];
printf("请输入非中文字符串:\n");
input(s);
printf("您输入的是:\n");
show(s);
printf("反序存放……………………\n");
FanXuCunFang(s);
printf("反序存放后输出:\n");
show(s);
return 0;
}
答案书上的算法更好,速度更快,今天看明白了,明天早上我要默写答案书上的算法。
昨天白天一直加班到晚上8点多。实在是没有精力了。今天又看了看书上的写法,默写如下:
#include<stdio.h>//8.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
void input(char c[])
{
gets(c);
}
void show(char c[])
{
puts(c);
}
void JiaoHuan(char c[])
{
int i,j;
char temp;
for(i=0,j=strlen(c)-1;i<(strlen(c)/2);i++,j--)
{
temp=c[i];
c[i]=c[j];
c[j]=temp;
}
}
int main()
{
char c[100];
printf("请输入英文字符:\n");
input(c);
printf("您的输入成功,您输入的是:\n");
show(c);
printf("交换……\n");
JiaoHuan(c);
printf("交换后:\n");
show(c);
return 0;
}
for(i=0,j=strlen(c)-1;i<(strlen(c)/2);i++,j--) 这行太棒了。节约了一半的运算时间。不论奇数还是偶数都可以使用,关键还是C语言的数组是从0开始的。