| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 672 人关注过本帖
标题:指针问题,
只看楼主 加入收藏
52wd
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2005-7-16
收藏
 问题点数:0 回复次数:6 
指针问题,

对输入n个整数排序并输出: #include<stdio.h> main() {int a[100],i,n,*p; p=a; /*指针指向数组*/ printf("\nInput the total of number:"); scanf("%d",&n); printf("Input the number:"); for(i=0;i<n;i++) scanf("%d,",&a[i]); p=a; sort( a, n); printf("The array number is:"); for (p=a,i=0;i<n;i++) printf("%d\t",*(p+i));

} sort(int *p,int n) /*冒泡法进行排序/* {int t,j,i; for (j=1;j<n;j++) {for (i=0;i<n-j;i++) if(*(p+i)>*(p+i+1)) {t=(*p+i); /*指针指向的值调换*/ *(p+i)=*(p+i+1); *(p+i+1)=t; } }

} 运行后输入是乱码 为什么???

搜索更多相关主题的帖子: 指针 int number sort 
2005-07-20 14:20
164726003
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2005-7-12
收藏
得分:0 
最后两行t=(*p+i)应该是t=*(p+i)其他没仔细看

坚持!!!
2005-07-20 16:42
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
冒泡算法错了,仔细看看!
p=a;  来回写这么多遍干什么?

[此贴子已经被作者于2005-7-20 18:08:09编辑过]



差点把你忘了...
2005-07-20 18:07
52wd
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2005-7-16
收藏
得分:0 
谢谢二楼兄弟提醒,那一行不小心写错了,
改回来了,可以用了,
三楼的兄弟,也谢谢你的关心啦
不过,那个冒泡法应该没有错吧
你按二楼的改一下去运行,

2005-07-20 18:26
52wd
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2005-7-16
收藏
得分:0 

如果把后面三行 {t=*(p+i); *(p+i)=*(p+i+1); *(p+i+1)=t; } 改成是地址调换,而不是值调换,(前面的int i改成int*t)如: {t=p+i; p+i=p+i+1; p+i+1=t; } 整个新程序是这样子: #include<stdio.h> main() {int a[100],i,n,*p;

printf("\nInput the total of number:"); scanf("%d",&n); printf("Input the number:"); for(i=0;i<n;i++) scanf("%d,",&a[i]); sort( a, n); printf("The array number is:"); for (p=a,i=0;i<n;i++) printf("%d\t",*(p+i));

} sort(int *p,int n) {int *temp,j,i; for (j=1;j<n;j++) {for (i=0;i<n-j;i++) if(*(p+i)>*(p+i+1)) {temp=p+i; p+i=p+i+1; p+i+1=temp; } }

} 编译时,出现这样的错误: 错误 array.c 22: 需要逻辑0或非0在 sort 函数中 错误 array.c 23: 需要逻辑0或非0在 sort 函数中 警告 array.c 27: 'temp' 被赋值但却没有使用在 sort 函数中#include<stdio.h> 看不懂请解释一下,


2005-07-20 18:46
164726003
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2005-7-12
收藏
得分:0 
地址交换?就算交换成功也只是指针指向的地址改变 而数据并没有真正的改变如果要改变地址来排序的话你要用到指针数组了而不是指针

坚持!!!
2005-07-20 21:00
yedeyao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-7-21
收藏
得分:0 

#include<stdio.h> #include<malloc.h>

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

printf("\nInput the total of number:"); scanf("%d",&n); p=(int*)malloc(n*sizeof(int)); printf("Input the number:"); for(i=0;i<n;i++) scanf("%d,",&a[i]); sort( a, n); printf("The array number is:"); for (p=a,i=0;i<n;i++) printf("%d\t",*(p+i));

} sort(int *p,int n) {int *temp,j,i; for (j=1;j<n;j++) {for (i=0;i<n-j;i++) if(*(p+i)>*(p+i+1)) {temp=*(p+i); *(p+i)=*(p+i+1); *(p+i+1)=temp; } }

} 试试这个

2005-07-21 22:18
快速回复:指针问题,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015723 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved