所属年份:2011.3;2011.9
请编一个函数fun(char *s),该函数的功能是:把字符串中的内容逆置。
例如,字符串中原有的字符串为”abcdefg”,则调用该函数后,串中的内容为”gfedcba”。
#include
#include
#include
#define N 81
void fun(char*s)
{
}
main()
{
char a[N];
FILE *out;
printf("Enter a string:");
gets(a);
printf("The original string is:");
puts(a);
fun(a);
printf("\n");
printf("The string after modified:");
puts(a);
strcpy(a,"Hello World!");
fun(a);
/******************************/
out=fopen("out.dat","w");
fprintf(out,"%s",a);
fclose(out);
/******************************/
}
【考点分析】
本题考查:while循环语句;字符串的操作;变量交换。
【解题思路】
将字符串中的内容逆置,实际上就是将第一个字符和最后一个字符交换,再将第二个字符与倒数第二个字符交换,依此类推,直到中间的字符为止。因此,长度为n的字符串需要交换的次数为n/2。
本程序使用while语句表示每一个字符,然后将前后对应的字符进行交换。
【参考答案】
void fun(char*s)
{
char ch;
int i,m,n;
i=0;
m=n=strlen(s)-1;
/*将第i个和倒数第i个数互换,但循环的次数为数组长度的一半*/
while(i
{
/*使用中间变量叫唤*/
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++; m--;
}
}