| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 875 人关注过本帖
标题:【求助】关于switch结构的一些问题,程序运行后达不到预期结果
只看楼主 加入收藏
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
【求助】关于switch结构的一些问题,程序运行后达不到预期结果
求助各位前辈,小弟编写的C程序如下,程序运行没有出错,但是当输入10、11、12时,都是显示January,这是怎么回事?原谅小弟是新手,请指教!谢谢!
原题目:设计一个进行数值月份向英文名称月份转换的C程序。即当用户输入一个数字月份时,输出其对应的英文月份名称。
代码如下:
#include <stdio.h>
void main(void)
{
    char m;
    printf("请输入任意一个月份,系统将自动转换为该月份的英文名称:");
    scanf("%c",&m);
    switch(m)
    {
    case'1':
        printf("January\n");
        break;
    case'2':
        printf("February\n");
        break;
    case'3':
        printf("March\n");
        break;
    case'4':
        printf("April\n");
        break;
    case'5':
        printf("May\n");
        break;
    case'6':
        printf("June\n");
        break;
    case'7':
        printf("July\n");
        break;
    case'8':
        printf("August\n");
        break;
    case'9':
        printf("September\n");
        break;
    case'10':
        printf("October\n");
        break;
    case'11':
        printf("November\n");
        break;
    case'12':
        printf("December\n");
        break;
    default:
        printf("您输入的月份有误!");
        break;
    }
}


[ 本帖最后由 mandown1991 于 2011-3-8 08:43 编辑 ]
搜索更多相关主题的帖子: 英文月份 英文名称 
2011-03-08 08:36
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:5 
#include <stdio.h>
void main(void)
{
    int m;
    printf("请输入任意一个月份,系统将自动转换为该月份的英文名称:");
    scanf("%d",&m);
    switch(m)
    {
    case 1:
        printf("January\n");
        break;
    case 2:
        printf("February\n");
        break;
    case 3:
        printf("March\n");
        break;
    case 4:
        printf("April\n");
        break;
    case 5:
        printf("May\n");
        break;
    case 6:
        printf("June\n");
        break;
    case 7:
        printf("July\n");
        break;
    case 8:
        printf("August\n");
        break;
    case 9:
        printf("September\n");
        break;
    case 10:
        printf("October\n");
        break;
    case 11:
        printf("November\n");
        break;
    case 12:
        printf("December\n");
        break;
    default:
        printf("您输入的月份有误!");
        break;
    }
}
2011-03-08 08:58
千i丶羽o
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2010-12-13
收藏
得分:5 
10\11\12是没个都是两个字符!系统只读取了第一个1.你看scanf输入的时候是字符型输入的!
2011-03-08 10:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
#include <stdio.h>
int main( void )
{
    printf("请输入任意一个月份,系统将自动转换为该月份的英文名称:");

    int m;
    if( scanf("%d",&m)!=1 || m<1 || m>12 )
        return -1;

    static const char* mn[12] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
    printf( "%s\n", mn[m-1] );

    return 0;
}
2011-03-08 10:38
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:5 
switch少了一个括号啊

我是初学者
2011-03-08 11:47
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
收藏
得分:0 
回复 4楼 rjsp
谢谢你的回复,太深奥了,还没学到!
2011-03-08 12:12
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
收藏
得分:0 
回复 2楼 『点点滴滴』
谢谢,终于找到了!
2011-03-08 12:16
sulang123
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-2-4
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

输出的结果是:
图片附件: 游客没有浏览图片的权限,请 登录注册

请问一下这个是怎么运行的呀,我的理解就是这个程序打印出
fat hat cat Oh no!就结束了
2011-03-08 12:26
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
收藏
得分:0 
回复 8楼 sulang123
这个不清楚,你发个新帖问一下高手吧!我这个帖已经结了,恐怕没有人来了!

[ 本帖最后由 mandown1991 于 2011-3-8 21:41 编辑 ]
2011-03-08 21:35
犹豫情人
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:58
专家分:24
注 册:2010-7-1
收藏
得分:0 
应该是scanf那有问题,10,11,12占两个字节,应该把%c改成%s也许行了!或者按四楼的直接用数组!!
2011-03-08 21:55
快速回复:【求助】关于switch结构的一些问题,程序运行后达不到预期结果
数据加载中...
 
   



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

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