| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 633 人关注过本帖
标题:有一个问题,大神帮我看一下问题在哪?
只看楼主 加入收藏
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
有一个问题,大神帮我看一下问题在哪?
#include<stdio.h>
int main()
{
    int i,b,k,flag=1;
    int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
    printf("请输入一个要查找的数:");
    scanf("%d",&b);
    for(i=0;i<15;i++)
    {
        if(a[i]==b)
        
            k=i;            
        else
            flag=0;
    }
    if(flag==1)
    {
       printf("您查找的数是第%d个数\n",k+1);
    }
       if(flag==0)
       {
           printf("您查找的数不在该数组内!");
       }
           return 0;
}




为什么不管输入什么数都显示:您查找的数不在该数组内
搜索更多相关主题的帖子: return include 
2013-12-22 20:33
灵魂解剖者
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-11-27
收藏
得分:0 
首先是if与else不对应(注意基本的格式,要标准自己的格式);其次是逻辑不对;就算有一个数与之对应;但是循环一直进行;下面的flag也会被下一次循环所赋值,从而变成0;所以;即使有值与之对应;也会输出您查找的数不在数组内!
2013-12-22 21:05
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:10 
声明一下,我也是小菜。。。大家互相讨论哈。。
这个我没有上机调试,就说一下我发现的问题:
主要是这个循环体! :
for(i=0;i<15;i++)
    {
        if(a[i]==b)
        
            k=i;            
        else
            flag=0;
    }
flag初始为1,而循环体是有判定的:
这个循环体基本上都是要做十五次,只要a[i]!=b,flag就会变为0,又因为至少会有十四次判定是这个所以不管你输入什么最后flag都是0。
在这个循环体里面a[i]==b才是特殊情况,所以flag的值应该跟随这个情况成立的时候而改变,而不是在与之相反的情况改变。因为按照你这样做,不管是对程序的正确性,还是效率性上面的情形都不好。

那么改动一下:
for(i=0;i<15;i++)
        if(a[i]==b)
          {        
            k=i;
            flag=1;
           }  

这样的话,你的flag初始值应该是0(表示还没有找到)。

我的经验哈:编写一个程序(当然了,相对简单的)以后,顺着程序的流程想想写写画画程序流程(程序从哪一步走到哪一步),所以可能的情况(各种吧,例如这个当输入的值是数组里面的一个值 和 不是数组里面的一个值 这是两种情况),一般会发现一些问题和不足的。。。。

未知令人期待!
2013-12-22 21:11
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
收藏
得分:0 
回复 3楼 神机军师
谢谢啊,讲得很详细!!
2013-12-22 21:23
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
收藏
得分:0 
回复 3楼 神机军师
如果查找结束后要让它继续问是否进行查询怎么弄呢?
2013-12-22 23:04
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
回复 5楼 编程了啊
加入一个for语句就好~

未知令人期待!
2013-12-23 04:59
flamebaby
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2013-12-8
收藏
得分:0 
#include<stdio.h>
 int main()
 {
     int i,b,k,flag=1;
     int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
    while(1){
     printf("请输入一个要查找的数:");
     scanf("%d",&b);
     for(i=0;i<15;i++)
     {
         if(a[i]==b){      
             k=i;  
            break;
        }         
         else
             flag=0;
     }
     if(flag==1)
     {
        printf("您查找的数是第%d个数\n",k+1);
     }
        if(flag==0)
        {
            printf("您查找的数不在该数组内!");
        }
    }
            return 0;
 }
2013-12-23 13:16
mmiaoaa
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2013-12-23
收藏
得分:0 
帮你顶顶
2013-12-23 13:56
编程了啊
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:20
注 册:2013-12-19
收藏
得分:0 
回复 7楼 flamebaby
你这个根本查不了
2013-12-23 20:56
E01114124
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2013-10-22
收藏
得分:0 
#include<stdio.h>
int main()
{
     int i,b,k,flag=1;
     int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
    while(1){
     printf("请输入一个要查找的数:");
     scanf("%d",&b);
     for(i=0;i<15;i++)
     {
         if(a[i]==b){      
             k=i;  
            break;
        }         
         else
             flag=0;
     }
     if(flag==1)
     {
        printf("您查找的数是第%d个数\n",k+1);
     }
        if(flag==0)
        {
            printf("您查找的数不在该数组内!");
        }
    }
            return 0;
}
2013-12-24 12:17
快速回复:有一个问题,大神帮我看一下问题在哪?
数据加载中...
 
   



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

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