运行结果不对 错在哪里

mmmmnnn123 2012-04-10 05:36:37
#include <stdio.h>
int main()
{
int i,j,n;
int a[100];
int *p;

void swap(int *p1,int *p2);
scanf("%d",&n);
for(p=a;p<a+n;p++);
scanf("%d",p);

for(i=0;i<n;i++)
for(p=a;p<a+n-i;p++)
if(*p>*(p+1))
swap(p,p+1);

for(p=a;p<a+n;p++)
printf("%d",*p);
printf("\n");
return 0;
}

void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
...全文
190 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfq0987 2012-04-10
  • 打赏
  • 举报
回复
下面按楼主的代码改后,就可以排序了。

#include <stdio.h>
int main()
{
int i,j,n;
int a[100];
int *p;

void swap(int *p1,int *p2);
scanf("%d",&n);
for(p=a;p<a+n;p++); //多个分号
scanf("%d",p);

for(i=0;i<n;i++)
for(p=a+i;p<a+n-1;p++) //还有这个地方
if(*p>*(p+1))
swap(p,p+1);
for(p=a;p<a+n;p++)
printf("%d",*p);
printf("\n");
return 0;
}

void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
Qyee16 2012-04-10
  • 打赏
  • 举报
回复
不对时,可以一直f10,,,发现,哪不对就改。。。F10

F9下断点,F10 单步,F11 进入函数内部。
wfq0987 2012-04-10
  • 打赏
  • 举报
回复
严重错误for(p=a;p<a+n;p++);
后面有分号。
cikerexue 2012-04-10
  • 打赏
  • 举报
回复

#include <stdio.h>

void swap(int *p1,int *p2);

int main()
{
int i,j,n;
int a[100];
int *p;

scanf("%d",&n);

for(p=a;p<a+n;p++)
scanf("%d",p);

for(i=0;i<n;i++)
for(p=a;p<a+n-i-1;p++) /*这里多循环了一次导致空间指向错误*/
if(*p>*(p+1))
swap(p,p+1);

for(p=a;p<a+n;p++)
printf("%d", *p);
printf("\n");

return 0;
}

void swap(int *p1,int *p2)
{
int temp;

temp=*p1;
*p1=*p2;
*p2=temp;
}
goldbeef 2012-04-10
  • 打赏
  • 举报
回复
错误好多啊,建议LZ单步调试
slyfox2 2012-04-10
  • 打赏
  • 举报
回复
修改了下,vc6.0测试通过:

#include "stdafx.h"


void swap1(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}

int main(int argc, char* argv[])
{
int i,j,n;
int a[100];
int *p;
int temp;

scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&temp);
a[i]=temp;
printf("%d",a[i]);
}

for(p=a;p<a+n-1;p++)
if(*p>*(p+1))
swap1(p,p+1);

for(p=a;p<a+n;p++)
printf("%d",*p);
printf("\n");

return 0;
}


slyfox2 2012-04-10
  • 打赏
  • 举报
回复

#include <stdio.h>
int main()
{
int i,j,n;
int a[100];
int *p;

void swap(int *p1,int *p2);
scanf("%d",&n);
for(p=a;p<a+n;p++);
scanf("%d",p); //这里值没有赋值到数组里

for(i=0;i<n;i++) //多了个for循环
for(p=a;p<a+n-i;p++)
if(*p>*(p+1))
swap(p,p+1);

for(p=a;p<a+n;p++)
printf("%d",*p);
printf("\n");
return 0;
}

void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
mmmmnnn123 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

语法不对,方法 swap 都没声明
[/Quote]能运行啊,但是结果不对
big_cucumber 2012-04-10
  • 打赏
  • 举报
回复
语法不对,方法 swap 都没声明
mmmmnnn123 2012-04-10
  • 打赏
  • 举报
回复
这是一个冒泡法排序

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧