| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1542 人关注过本帖
标题:请问如何编程
只看楼主 加入收藏
jojosf
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-3-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
请问如何编程
输入一个数,如果是1295-1344,1381-1420,1570-1574则输出“张三”,否则输出“无此人”;如果是1345-1380,1575-1590,6001-6030,6114-6135则输出“李四”,否则输出“有此人”,请问如何编程?
搜索更多相关主题的帖子: 编程 输入 一个数 输出 
2018-03-22 16:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
……否则输出“此人”……否则输出“此人”
------ 既非张三又非李四时,到底输出什么?
2018-03-22 16:29
jojosf
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-3-22
收藏
得分:0 
输错了,不在号码段都是“无此人”
2018-03-22 16:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
回复 3楼 jojosf
不就是 if 嘛,不知道你哪里不会?

---------------------------------------
用C++写个二分法查找的(纯粹找乐)
程序代码:
#include <string>
#include <vector>
#include <utility>
#include <algorithm>

const std::string& foo( unsigned id )
{
    static const std::string nobody = "无此人";
    static const std::vector<std::pair<unsigned,std::string>> buf
        = { {1295,"无此人"}
          , {1345,"张三" }
          , {1381,"李四"}
          , {1421,"张三" }
          , {1570,"无此人"}
          , {1575,"张三" }
          , {1591,"李四"}
          , {6001,"无此人"}
          , {6031,"李四"}
          , {6114,"无此人"}
          , {6136,"李四"} };

    auto itor = std::upper_bound( std::begin(buf), std::end(buf), id
        , [](unsigned id,const auto& value){return id<value.first;} );
    return itor!=std::end(buf) ? itor->second : nobody;
}

#include <cassert>

int main(int argc, char **argv)
{
    assert( foo(1294)=="无此人" );
    assert( foo(1295)=="张三" );
    assert( foo(1344)=="张三" );
    assert( foo(1345)=="李四" );
    assert( foo(1380)=="李四" );
    assert( foo(1381)=="张三" );
    assert( foo(1420)=="张三" );
    assert( foo(1421)=="无此人" );
    assert( foo(1569)=="无此人" );
    assert( foo(1570)=="张三" );
    assert( foo(1574)=="张三" );
    assert( foo(1575)=="李四" );
    assert( foo(1590)=="李四" );
    assert( foo(1591)=="无此人" );
    assert( foo(6000)=="无此人" );
    assert( foo(6001)=="李四" );
    assert( foo(6030)=="李四" );
    assert( foo(6031)=="无此人" );
    assert( foo(6113)=="无此人" );
    assert( foo(6114)=="李四" );
    assert( foo(6135)=="李四" );
    assert( foo(6136)=="无此人" );
}

2018-03-22 16:59
jojosf
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-3-22
收藏
得分:0 
厉害
2018-03-22 17:10
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
#include <stdio.h>

typedef struct id
{
    int id;
    char name[20];
} ID, *PID;

typedef struct dic
{
    int id;
    int start;
    int end;
} DIC, *PDIC;


char *fun_id(int id, ID *stID, int m)
{
    int i;
    for (i=0; i<m; ++i)
        if (stID[i].id == id)
            return stID[i].name;
    return stID[0].name;
}

char *fun_dic(int num, DIC *stDIC, int n, ID *stID, int m)
{
    int i;
    for (i=0; i<n; ++i)
        if (num>=stDIC[i].start && num<=stDIC[i].end)
            return fun_id(stDIC[i].id, stID, m);
    return fun_id(0, stID, m);
}

main()
{
    ID stID[3]={
        0,"无此人",
        1,"张三",
        2,"李四"
    };
    DIC stDIC[7]={
        1, 1295, 1344,
        1, 1381, 1420,
        1, 1570, 1574,
        2, 1345, 1380,
        2, 1575, 1590,
        2, 6001, 6030,
        2, 6114, 6135
    };
    int num;
    scanf("%d", &num);
    printf("%s\n", fun_dic(num,stDIC,7,stID,3));
}
2018-03-22 19:57
HOUSAND
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2016-8-14
收藏
得分:0 
回复 6楼 吹水佬
这里有个错误,就是如果输入1344.1的话,还是显示张三,与题目冲突了,所以1344这个值得改,num<=stDIC[i].end这个值也得改,其他stDIC[7]的值也得改
2018-03-23 10:44
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
以下是引用HOUSAND在2018-3-23 10:44:04的发言:

这里有个错误,就是如果输入1344.1的话,还是显示张三,与题目冲突了,所以1344这个值得改,num<=stDIC.end这个值也得改,其他stDIC[7]的值也得改

输入的是int类型,结果不会有小数的吧
2018-03-23 13:45
c20180318
Rank: 2
等 级:论坛游民
帖 子:5
专家分:32
注 册:2018-3-18
收藏
得分:20 
#include <stdio.h>
void main(void)
{
    int aa[]={1295,1344,1381,1420,1570,1574,1345,1380,1575,1590,6001,6030,6114,6135};
    int i,ii,a,b;
    int x,y;
   
    while (1)
    {
        b=0;
    printf("请输入整数数据\n");
    scanf ("%d",&a);
    for (ii=0;ii<6;ii+=2)
    {
        x=aa[ii];
        y=aa[ii+1];
        for (i=x;i<=y;i++)
    {
        if (i==a)
        { b=printf("张三\n");
           break;
        }
    }
   
    }
        for (ii=6;ii<14;ii+=2)
    {
        x=aa[ii];
        y=aa[ii+1];
        
            for (i=x;i<=y;i++)
    {
        if (i==a)
        { b=printf("李四\n");
          break;
    }
    }
    }

    if (b<=0)
    printf("无此人\n");
    }
}
2018-03-24 09:01
wangjingchun
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-2-24
收藏
得分:0 
厉害了   还在看书中。。。
2018-03-25 16:59
快速回复:请问如何编程
数据加载中...
 
   



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

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