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

#include<stdio.h>
main()
{
int a[3],*p;
printf("Please input 3 interger:");
for(p=a;*p!='\0';p++)
scanf("%d",p);
giveout(a,3);
}

int giveout(int *p,int n)
{int i,temp;
for(;*p!='\0';p++)
{if(*p>*(p+1))
{temp=*(p+1);
*(p+1)=*p;
*p=temp;
}
}
for(i=0;i<3;i++,p++)
printf("%d\t",*p);
}

我是想一个任意输入三个数排序的程序 ,哪里有语法错误啊



搜索更多相关主题的帖子: 指针 
2007-10-10 20:39
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 

for(p=a;*p!='\0';p++)

p指向的又不是字符串
能不出错吗?


[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-10 20:49
zhao9302
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-5-10
收藏
得分:0 

那如果我要用指针该怎么改啊


我要一步一步往上爬……
2007-10-10 20:54
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 
for(p=a;p&lt;a+3;p++)

清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-10-10 20:57
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
收藏
得分:0 

#include<stdio.h>
main()
{
int a[3],*p;
printf("Please input 3 interger:");
for(p=a;*p!='\0';p++)
scanf("%d",p);
giveout(a,3);
}

int giveout(int *p,int n)
{int i,temp;
for(;*p!='\0';p++)/*注意这里是p自加运算,数值改变*/
{if(*p>*(p+1))
{temp=*(p+1);
*(p+1)=*p;
*p=temp;
}
}/*循环结束时候p已经指向数组尾*/
for(i=0;i<3;i++,p++)/*这里p再递增时候就不知道指到哪里去了,下面的打印自然不可能按你的计划把数字打出*/
printf("%d\t",*p);
}


简单的快乐着~
2007-10-10 20:57
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
不需要指针的地方,为什么要硬上指针呢?指针又不是狗皮膏药

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-10 20:58
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 

#include <stdio.h>

#define IN
#define OUT

void giveout( OUT int *p, IN int n);

int main()
{
int a[3];
int *p;
int i

printf("Please input 3 interger:");

for ( p = a, i = 0; i < 3; i++ )
{
scanf("%d",p);
p++;
}

giveout(a, 3);

return 0;
}

void giveout( OUT int *p, IN int n)
{
int i,temp;

/* 如果你原意是想排序的话, 那么你的这个算法有问题 */
for ( i = 0; i < n - 1; i++)
{
if ( p[i] > p[i+1] )
{
temp = p[i+1];
p[i+1] = p[i];
p[i] = temp;
}
}

for ( i = 0; i < n; i++ )
{
printf("%d\t", p[i]);
}

return;
}


[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-10 21:07
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
收藏
得分:0 
非要用指针4楼的正解,注意只有字符串结尾才是\0,数组不是

简单的快乐着~
2007-10-10 21:08
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
for(;*p!='\0';p++)
{if(*p>*(p+1))
{temp=*(p+1);
*(p+1)=*p;
*p=temp;
}
}
而且在你这段代码中已经改变p的位置了
所以后面的打印程序也会出错

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-10 21:09
zhao9302
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-5-10
收藏
得分:0 

谢谢拉


我要一步一步往上爬……
2007-10-10 21:31
快速回复:指针程序 哪里有错
数据加载中...
 
   



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

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