| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 318 人关注过本帖
标题:一个简单的程序 但是有些疑问,请大家帮忙看看
收藏  订阅  推荐  打印 
llp108
Rank: 2
等级:注册会员
帖子:53
积分:684
注册:2007-11-15
一个简单的程序 但是有些疑问,请大家帮忙看看

1.这个do..while循环为什么不管用?
2.带颜色的部分该成*(month++)为什么不行?
#include "stdio.h"
main()
{int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p,i,b;
char m,*month[]={"January","February","March","April","May","june","july","August",
                "September","October","November","December"};
p=a;
do{ printf("请输入月份:");
     scanf("%d",&b);
     if(b>12||b<1)
      {printf("输入错误!是否继续(y/n)?");
       scanf("%c",&m);}
     else
       for(i=0;i<12;i++)
           if(*p++==b)
              {printf("%d月的英文是%s",b,*(month+i));break;}
    }while(m=='y'||m=='Y');
}

[[italic] 本帖最后由 llp108 于 2007-12-29 22:27 编辑 [/italic]]
搜索更多相关主题的帖子: 疑问  month  scanf  
2007-12-29 22:12
llp108
Rank: 2
等级:注册会员
帖子:53
积分:684
注册:2007-11-15

第二个问题明白了,大家看第一个吧
2007-12-29 22:18
jingru
Rank: 2
等级:注册会员
帖子:49
积分:646
注册:2006-11-16

因为输入数字的时候你按了回车, 后面scanf的时候会读到那个回车,do while判断也就成false了,
解决方法是,清一下缓冲区


       printf("请输入月份:");
            scanf("%d", &b);
    fflush(stdin);
            if (b > 12 || b < 1)
            {
                  printf("输入错误!是否继续(y/n)?");
                  scanf("%c", &m);
    fflush(stdin);
            
            }
2007-12-29 22:42
llp108
Rank: 2
等级:注册会员
帖子:53
积分:684
注册:2007-11-15

谢谢了
2007-12-29 23:00
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.046504 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved