c程序编译成功,运行时TempFile.exe 遇到问题需要关闭,请教下,急待回复
TempFile.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。是什么原因呀,应该和编程环境没有关系,因为其他程序运行正常!请教,请教!!!
代码如下:
#include <stdio.h>
void sortCInt(int *p,int n)
{
int *sortAInt(int *p);
int *sortBInt(int *p);
int *a,*b;
int i;
a=sortAInt(p);
printf("整型数组冒泡法从小到大排列顺序为:\n");
for(i=0;i<20;i++)
{
printf("%4d",*(a+i));
}
printf("\n");
b=sortBInt(p);
printf("使用选择法从大到小排列顺序为:\n");
for(i=0;i<20;i++)
{
printf("%4d",*(b+i));
}
printf("\n");
}
void sortCString(char *p)
{
char *sortAString(char *p);
char *sortBString(char *p);
char *a,*b;
int i;
a=sortAString(p);
printf("字符型数组使用冒泡法从A到z排序为:\n");
for(i=0;i<20;i++)
{
printf("%4c",*(a+i));
}
printf("\n");
b=sortBString(p);
printf("使用选择法从z到A排序为:\n");
for(i=0;i<20;i++)
{
printf("%4c",*(b+i));
if((i+1)%4==0)
printf("\n");
}
printf("\n");
}
int *sortAInt(int *p)
{
int i,m,j;
for(j=0;j<19;j++)
for(i=0;i<19-j;i++)
if(*(p+i)>*(p+i+1))
{
m=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=m;
}
return p;
}
char *sortAString(char *p)
{
int i,j;
char m;
for(j=0;j<19;j++)
for(i=0;i<19-j;i++)
if(*(p+i)>*(p+i+1))
{
m=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=m;
}
return p;
}
int *sortBInt(int *p)
{
int i,m,k,j;
for(i=0;i<19;i++)
{
k=i;
for(j=i+1;j<20;j++)
if(*(p+j)>*(p+k))
k=j;
if(k!=i)
{
m=*(p+i);
*(p+i)=*(p+k);
*(p+k)=m;
}
}
return p;
}
char *sortBString(char *p)
{
int i,k,j;
char m;
for(i=0;i<20;i++)
{
k=i;
for(j=i+1;j<20;j++)
if(*(p+j)>*(p+k))
k=j;
if(k!=i)
{
m=*(p+i);
*(p+i)=*(p+k);
*(p+k)=m;
}
}
return p;
}
void main()
{
int a[4][5],i,t;
char b[4][5];
int *p=a[0][0];
char *q=b[0][0];
void sortCInt(int *p);
void sortCString(char *p);
void (*m)(int *);
void (*n)(char *);
m=sortCInt;
n=sortCString;
printf("请选择输入类型:\n");
printf("输入整型元素:1 输入字符型元素:2:\n");
scanf("%d",&t);
if(t==1)
{printf("请输入20个字符型元素:\n");
for(i=0;i<20;i++,q++)
scanf("%c",q);
(*m)(p);}
else
{printf("请输入20个整型元素:\n");
for(i=0;i<20;i++,p++)
scanf("%d",p);
p=*(a+0);
q=*(b+0);
(*n)(q);}
}
----------------解决方案--------------------------------------------------------
真够混乱的
[color=white]
----------------解决方案--------------------------------------------------------
告诉你:返回指针一般是很危险的!!
建议你从参数返回指针,而不要以函数返回值的形式来返回。
如:
void func(int *p)
{
*p += 1;
}
----------------解决方案--------------------------------------------------------
回复 3# flyue 的帖子
那怎样修改呢?时间紧迫啊,万望给助 ----------------解决方案--------------------------------------------------------
回复 5# かわい 的帖子
不算是吧我们猜的考试题
呵呵
----------------解决方案--------------------------------------------------------