| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 353 人关注过本帖
标题:C语言程序二次输入时,显示不该现实的的语句,代码都没问题,不知道哪有问题 ...
只看楼主 加入收藏
csy294745333
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-3-27
结帖率:9.09%
收藏
 问题点数:0 回复次数:3 
C语言程序二次输入时,显示不该现实的的语句,代码都没问题,不知道哪有问题
程序代码:
#include<stdio.h>
#define N 15
int main()
{
    int i,number,top,bott,mid,loca,a[N],flag=1,sign;
    char c;
    printf("enter date:\n");
    scanf("%d",&a[0]);
    i=1;
    while(i<N)
    {
        scanf("%d",&a[i]);
        if(a[i]>=a[i-1])
            i++;
        else
            printf("please enter another number:\n");
    }
    printf("\nAll fifteen numbers are:\n");
    for(i=0;i<N;i++)
        printf("%5d",a[i]);
    printf("\n");
    while(flag)
    {
        printf("please input a number to look for:\n");
        scanf("%d",&number);
        sign=0;        //sign为0表示未找到
        top=0;
        bott=N-1;
        if((number<a[0])||(number>a[N-1]))
            loca=-1;                 //loca为-1表示找不到
        while((!sign)&&(top<=bott))
        {
            mid=(top+bott)/2;
            if(number==a[mid])
            {
                loca=mid;
                printf("Has found %d,It's location 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("Can't find %d.\n",number);
        printf("Continue or not?(Y/N)\n");
        scanf("%c",&c);
        if(c=='n'||c=='N')
            flag=0;
    }
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册


printf("Continue or not?(Y/N)\n");
出现这一条时printf("please input a number to look for:\n");这一条也会跟着出现,之后后面也有类似问题,请问为什么
搜索更多相关主题的帖子: C语言 
2012-09-06 11:44
w995612220
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:139
专家分:313
注 册:2012-6-20
收藏
得分:0 
在scanf(...)语句后面加一个getchar()语句吸收掉回车键..例如scanf("%d",&number);getchar();

 for(i=0;i<N;i++)
        printf("%5d",a[i]);  
    getchar();
2012-09-06 11:56
csy294745333
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-3-27
收藏
得分:0 
回复 楼主 csy294745333
嗯,可以了,但是我还是不懂这是为什么,能讲解一下么?我Windows7用VC6.0绿色版,和编译器有关系么???
2012-09-06 12:07
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
    不是编译器的问题,而是scanf函数在输入数字时,会跳过空白符,而在读字符时,却不会跳过,这时,为了强制scanf函数在读入字符时跳过空白符,需要在格式转换说明%c前加个空格就好了,或者在前面加个getchar()以输出缓冲区的空白符!


Edsger Dijkstra:算法+数据结构=程序
2012-09-06 17:07
快速回复:C语言程序二次输入时,显示不该现实的的语句,代码都没问题,不知道哪 ...
数据加载中...
 
   



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

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