| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖
标题:高手帮忙看下 这个小程序!输出 有问题 就是看不出来 !请高手帮忙
只看楼主 加入收藏
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
高手帮忙看下 这个小程序!输出 有问题 就是看不出来 !请高手帮忙
#include<stdio.h>
#define N 7
main()
{int i,number,top,mid,bott,loca,a[N],flag=1,sign;
char c;
printf("enter data:\n");
scanf("%d",&a[0]);
i=1;
while(i<N)
    { scanf("%d",&a[i]);
      if(a[i]>a[i-1])
      {i++;}
      else
      {printf("enter this data again:\n");}
    }
printf("\n");
for(i=0;i<N;i++)
{printf("%4d",a[i]);}
printf("\n");
while(flag)
    {printf("input number to look for  ");
    scanf("%d",&number);
    sign=0;
    top=0;
    bott=N-1;
    if(number<a[0]||number>a[N-1])
        loca=-1;
    while((!sign)&&(top<=bott))
        {mid=(top+bott)/2;
         if(number==a[mid])
         {loca=mid;
          printf("Has found %d,its position is %d \n",number,loca+1);
            sign=1;
         }
         else if(number<a[mid])
         bott=mid-1;
         else
            top=mid+1;
        }
    if(!sign||loca==-1)
        printf("cannot find %d.\n",number);
   
    printf("continue or not(Y/N)?");
    scanf("%c",&c);
    if(c=='N'||c=='n')
        flag=0;
    }
return 0;
}
搜索更多相关主题的帖子: include number 
2011-11-21 14:09
xxyisi
Rank: 2
等 级:论坛游民
帖 子:16
专家分:42
注 册:2011-10-28
收藏
得分:0 
试了下,木有问题啊。
2011-11-21 14:42
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:20 
程序代码:
#include<stdio.h>
#define N 7

 main()

 {int i,number,top,mid,bott,loca,a[N],flag=1,sign;

 char c;

 printf("enter data:\n");                      //往下看!
 scanf("%d",&a[0]);

 i=1;

 while(i<N)
     { scanf("%d",&a[i]);
       if(a[i]>a[i-1])
       {i++;}
       else
       {printf("enter this data again:\n");}
     }

 printf("\n");

 for(i=0;i<N;i++)

 {printf("%4d",a[i]);}                          //往下看!!
 printf("\n");

 while(flag)
     {
     printf("input number to look for  ");
     scanf("%d",&number);
     sign=0;
     top=0;
     bott=N-1;
     if(number<a[0]||number>a[N-1])
         loca=-1;
     while((!sign)&&(top<=bott))
         {mid=((top+bott)/2);
          if(number==a[mid])
          {loca=mid;                              //再往下看!!!
           printf("Has found %d,its position is %d \n",number,loca+1);
             sign=1;
          }
          else if(number<a[mid])
          bott=mid-1;
          else
             top=mid+1;
         }
     if(!sign||loca==-1)
         printf("cannot find %d.\n",number);
   
     printf("continue or not(Y/N)?"); //这儿了 嘻嘻
     getchar();           //在输入流中有回车键 而scanf(%c)会读取回车符 所以你第一次实际上是将回车赋值给了c
     scanf("%c",&c);
     getchar();          //注意
     if(c=='N'||c=='n')
         flag=0;
     }

 return 0;

 } 

能力 技巧
2011-11-21 14:46
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
我运行到这
printf("continue or not(Y/N)?");
scanf("%c",&c);
输出就变成continue or not(Y/N)?input number to look for  直接跳过scanf("%c",&c);了。

2011-11-21 14:46
xxyisi
Rank: 2
等 级:论坛游民
帖 子:16
专家分:42
注 册:2011-10-28
收藏
得分:0 
3L高人
2011-11-21 14:52
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
回复 3楼 非死亡!
为什么 加个getchar();呢
2011-11-21 14:53
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:0 
getchar()的目的是取出回车符.   getchar()从标准输入设备提取一个字符(包含空白字符(就是回车符,换行符,tab符等))返回提取的字符的ascii码,
原型: int getchar(oid)
例:
char a;
a=getchar();
这里没有写a,就是只提取字符,不赋值给任何的变量.从而达到去回车的目的;   

能力 技巧
2011-11-21 15:04
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
回复 7楼 非死亡!
虽然还是很茫然 但是多谢指点 !我也会坚持学下去的!!
2011-11-21 15:06
xxyisi
Rank: 2
等 级:论坛游民
帖 子:16
专家分:42
注 册:2011-10-28
收藏
得分:0 
scanf和getchar都是从缓冲区里的数据流上截取数据,程序里你输入一个要查找的数赋值给number的时候后面会回车,这时候缓冲区里的数据流有一个int和一个char型的数据,其实就是5个字节的数据,scanf(“%d”,&number)把int大小的数据(4个字节)流截取用了,缓冲区里还剩下了个一字节的回车符的数据,如果没有3L加的getchar的话,你会输入Y或者N然后回车,这个时侯缓冲区里的数据从前往后是  回车   Y或者N  回车  ,你的scanf会从最前面截取一个字符大小的数据就,1个字节就截到了回车,既不是Y也不是N,
3L加了getchar()会先把回车符从缓冲区截去,你的scanf就能截到你想要的Y或者N了。
2011-11-21 15:18
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
头都大了好深奥
2011-11-21 15:26
快速回复:高手帮忙看下 这个小程序!输出 有问题 就是看不出来 !请高手帮忙
数据加载中...
 
   



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

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