我要疯了!到底哪错了啊 各位高手进来帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:11:08
例如:键盘上输入:***C##b@A##a@B***,则输出结果:baCBA***##@##@***。

#include <stdio.h>
void main ()
{
void fun (char *p);
char a[30];

char *q;
gets(a);
q=a;
fun(q);
}
void fun (char *p)
{
char b[30];char c[30];
int i=0,j=0; int t,n;
for(;*p!='\0';p++)
{
if (('A'<=*p&&*p<='Z')||('a'<=*p&&*p<='z'))
{b[i]=*p;i++;continue;}
{c[j]=*p;j++;}
}
n=i+1;i=0;j=0;
for(i=0;i<n-j;i++)
if (b[i]>b[i+1])
{
t=b[i];
b[i]=b[i+1];
b[i+1]=t;}

printf("%s",b);printf("%s",c);
return;
编译什么 都没问题 只是结果乱码……

对任意一串输入,进行单步调试,按程序实际逻辑运行一次,每步都查看一下你的几个字串数组内的数据,你肯定能发现问题——这样的问题问别人解决是学不好的,希望你明白

#include <stdio.h>
int main ()
{
void fun (char *p);
char a[30];

char *q;
gets(a);
q=a;
fun(q);
return 0;
}
void fun (char *p)
{
char b[30];char c[30];
int i=0,j=0,n; char t; // char t.
for(;*p!='\0';p++)
{
if (('A'<=*p&&*p<='Z')||('a'<=*p&&*p<='z'))
{b[i]=*p;i++;continue;}
{c[j]=*p;j++;}
}
//n=i+1;i=0;j=0; //
for(n=0;n<i;n++)
for(j=n+1;j<i;j++) //排序
if (b[n]<b[j])
{
t=b[n];
b[n]=b[j];
b[j]=t;}

printf("%s",b);printf("%s",c);
return;
}

好啊