首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

排序有关问题?

2012-02-25 
排序问题??这个是自己写的输入三个数字排序的问题,可以得到答案,但是每次在答案后面都会加了个Nullpointer

排序问题??
这个是自己写的输入三个数字排序的问题,可以得到答案,但是每次在答案后面都会加了个Null   pointer   assignment,是什么原因呢?请高手解释一下```


#include   "stdio.h "
main()
{int   a,b,c,i   ;
int   *p,*q,*s   ,*tmp;
    tmp=NULL;
        p=&a;q=&b;s=&c;  
            printf( "please   input   three   int   nums:\t ");
                                    scanf( "%d,%d,%d ",&a,&b,&c);
    if(*p> *q)   {   *tmp=*p;*p=*q;*q=*tmp;
      if(*q> *s)   {*   tmp=*q;*q=*s;*s=*tmp;
        if(*p> *q)   {   *tmp=*p;*p=*q;*q=*tmp;}
      }}    
      else   if(*q> *s)   {   *tmp=*q;*q=*s;*s=*tmp;
  if(*p> *q)   {   *tmp=*p;*p=*q;*q=*tmp;}}  
                          printf( "%d,%d,%d ",a,b,c);
         


[解决办法]
第一,注意程序格式.你自己看着不累吗?

第二, *p=*q合法,因为p q初始化为变量的地址. 但*tmp=*p不合法,因为tmp没有合法的指向.

第三, 就算题目限定了给三个变量排序,也最好写成通用的给X个变量排序.
[解决办法]
你的程序中把“tmp = NULL”去掉就可以运行了,原因我不知道。
你写的有点多了,这个程序好象就行了
#include "stdio.h "
main()
{int a,b,c,i ;
int *p,*q,*s ,*tmp;

p=&a;q=&b;s=&c;
printf( "please input three int nums:\t ");
scanf( "%d,%d,%d ",&a,&b,&c);
if(*p> *q)
{*tmp=*p;*p=*q;*q=*tmp;}
if(*p> *s)
{*tmp=*p;*p=*s;*s=*tmp;}
if (*q > *s)
{*tmp = *q; *q = *s; *s = *tmp;}

printf( "%d,%d,%d ",a,b,c);
}

热点排行