任务目标
采用指针变量作为形参,编写一个实现两字符交换的函数。在主函数中输入一个字符串,调用字符交换函数将其中的字符按从小到大的顺序排序后输出。
我的解决方案如下
#include <stdio.h>
void main()
{
char str[80], i, j;
void swap(char* pa, char* pb);
gets(str);
int a;
for (a = 79; a >= 0; a--)
if (str[a] != '\0')
{
a++;
break;
}
int m,n;
char* p1=&i, * p2=&j;
for(m = 0; m < a; m++)
for (n = 1; n < a - m; n++)
{
i = str[n]; j = str[n - 1];
if (i<j)
{
swap(p1, p2);
}
str[n] = i; str[n - 1] = j;
}
printf("%s\n", str);
}
void swap(char* pa, char* pb)
{
char ch;
ch = *pa;
*pa = *pb;
*pb = ch;
}
但是在实际使用时,
输入:
ekfdac
目标输出:
acdefk
但是实际输出了 '(一串子)烫?'
请问问题出在哪里,求解答谢谢!