| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1555 人关注过本帖
标题:一个关于c源码选择语句的问题?
只看楼主 加入收藏
w2015
Rank: 2
等 级:论坛游民
帖 子:23
专家分:26
注 册:2016-1-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
一个关于c源码选择语句的问题?
#include<stdio.h>
int main(){
    int i,j,h;
    char n;
    int max(int,int);
    int min(int,int);
    int (*p)(int,int);
    printf("请输入两个数比较:");
    scanf("%d %d",&i,&j);
    printf("请选择,选A输出大值,选B输出小值:");
    scanf("%c",&n);
    switch(n){
        case 'A':{
            p=max;
            h=(*p)(i,j);
            printf("max=%d\n",h);
            break;
        }
        case 'B':{
            p=min;
            h=(*p)(i,j);
            printf("min=%d\n",h);
            break;
        }
        default:printf("选择无效。\n");
    }
    return 0;   
}
int max(int a1,int a2){
    if(a1>a2)return a1;
    else
    return a2;
}
int min(int b1,int b2){
    if(b1>b2)return b2;
    else
    return b1;
}

为什么这段源码输不出结果。

[此贴子已经被作者于2016-2-15 16:28编辑过]

搜索更多相关主题的帖子: include 
2016-02-15 16:21
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:7 
你得告诉别人你输入了什么
2016-02-15 16:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:0 
大体看了一下代码,case'1' 似乎应该是 case 1,下同
2016-02-15 16:28
w2015
Rank: 2
等 级:论坛游民
帖 子:23
专家分:26
注 册:2016-1-28
收藏
得分:0 
回复 3楼 rjsp
大大,嗯嗯,就是这个问题,谢谢,请你在帮我看看帖子,我改了下帖子,问题在同一个地方,现在就错了。
2016-02-15 16:30
w2015
Rank: 2
等 级:论坛游民
帖 子:23
专家分:26
注 册:2016-1-28
收藏
得分:0 
回复 2楼 rjsp
就是输入了两个数字。
2016-02-15 16:30
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:7 
scanf("%s", &n);
2016-02-15 16:43
w2015
Rank: 2
等 级:论坛游民
帖 子:23
专家分:26
注 册:2016-1-28
收藏
得分:0 
回复 6楼 grmmylbs
嗯嗯,对了。可这是什么原因呢?%c不是字符?%s是字符串,可我选择时输入的是字符啊。‘A’or 'B'?
2016-02-15 16:47
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
我想应该是scanf("%d %d",&i,&j);语句执行后,将回车\n保存在缓冲区了,执行到scanf("%c", &n);时直接把\n给了n
2016-02-15 17:00
傻瓜都一样
Rank: 2
等 级:论坛游民
帖 子:8
专家分:12
注 册:2016-1-7
收藏
得分:7 
程序代码:
#include <stdio.h>
int max(int x, int y)
{
    int m = 0;
    if (x>y)
    {
        m = x;
    }
    else
    {
        m = y;
    }
    return m;
}

int min(int x, int y)
{
    int m = 0;
    if (x<y)
    {
        m = x;
    }
    else
    {
        m = y;
    }
    return m;
}

void main()
{
    int a, b, c, n;
    printf("请输入两个数比较:");
    scanf("%d %d", &a, &b);
    printf("请选择,选1输出大值,选2输出小值:");
    scanf("%d", &n);
    switch (n)
    {
    case 1:
    {
        c = max(a, b);
        printf("max=%d\n", c);
        break;
    }
    case 2:
    {
        c = min(a, b);
        printf("min=%d\n", c);
        break;
    }
    default:
    {
        printf("选择无效\n");
    }
    }
}
2016-02-15 17:08
w2015
Rank: 2
等 级:论坛游民
帖 子:23
专家分:26
注 册:2016-1-28
收藏
得分:0 
回复 8楼 grmmylbs
嗯嗯,或许是,我去百度下。谢谢讲解。
2016-02-15 18:12
快速回复:一个关于c源码选择语句的问题?
数据加载中...
 
   



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

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