| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1605 人关注过本帖
标题:[求助]这段程序编译后运行时,如输入点 . 则会被printf函数刷屏,为什么?
取消只看楼主 加入收藏
zhulaoda
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-9-30
收藏
 问题点数:0 回复次数:2 
[求助]这段程序编译后运行时,如输入点 . 则会被printf函数刷屏,为什么?

/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int y,m,d,d2,u,jin=0,s=0; /*定义年月日,和变量日期*/
int m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
start:;
m3=59,m4=90,m5=120,m6=151,m7=181,m8=212,m9=243,m10=273,m11=304,m12=334;
printf("输入生产年份(2005-2011年):\n");
scanf("%d",&y);
if (y<2005||y>2011)
{ while (s<1)
{printf("您输入年份有误,",s++);goto start;}
{printf("你是第一天玩电脑还是脑子有毛病啊,年份都不会输入?\a请再",s=0);goto start;}
}
else if(y==2005)
jin=6;
else if(y==2006)
jin=0;
else if(y==2007)
jin=1;
else if(y==2008)
{jin=2; m3=60,m4=91,m5=121,m6=152,m7=182,m8=213,m9=244,m10=274,m11=305,m12=335;}
else if(y==2009)
jin=4;
else if(y==2010)
jin=5;
else if(y==2011)
jin=6;
start2:;
printf("输入%d年的生产月份:\n\n",y);
scanf("%d",&m);
if (m<0||m>12) /*琐定一年12个月*/
{ while (s<1)
{printf("您输入月份有误,请重新",s++);goto start2;}
printf("你是第一天玩电脑还是脑子有毛病啊,月份都不会输入?\a请再",s=0);goto start2;
}
else
switch (m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: d=31; break;
case 4:
case 6:
case 9:
case 11: d=30; break;
case 2:
if((y%4!=0)||(y%100==0)&&(y%400!=0))
d=28;
else d=29;
m3=60+jin,m4=91+jin,m5=121+jin,m6=152+jin,m7=182+jin;
m8=213+jin,m9=244+jin,m10=274+jin,m11=305+jin,m12=335+jin;
break; /* 是闰年2月要加一天*/
default :printf("错误,请重新输入\n\n");
}
printf("%d年的%d月有%d天\n\n",y,m,d); /*自动识别2006年某月的天数*/
goto start3;

start3:;
printf("输入%d年%d月的生产日期:\n\n",y,m);
scanf("%d",&d2);
if (0>d2||d<d2) /*与当月天数比较,纠正用户输入错误*/
{ while (s<1)
{printf("您输入日期有误,请重新",s++);goto start3;}
{printf("你是第一天玩电脑还是脑子有毛病啊,生产日期都不会输入?\a请再",s=0);goto start3;}
}
else
switch (m) /*最菜的计算列表,请高手指点有没有更好的办法*/
{
case 1: u=(d2+jin)/7+(((d2+jin)%7)>0);break;
case 2: u=(d2+31+jin)/7+(((d2+31+jin)%7)>0);break;
case 3: u=(d2+m3+jin)/7+(((d2+m3+jin)%7)>0);break;
case 4: u=(d2+m4+jin)/7+(((d2+m4+jin)%7)>0);break;
case 5: u=(d2+m5+jin)/7+(((d2+m5+jin)%7)>0);break;
case 6: u=(d2+m6+jin)/7+(((d2+m6+jin)%7)>0);break;
case 7: u=(d2+m7+jin)/7+(((d2+m7+jin)%7)>0);break;
case 8: u=(d2+m8+jin)/7+(((d2+m8+jin)%7)>0);break;
case 9: u=(d2+m9+jin)/7+(((d2+m9+jin)%7)>0);break;
case 10: u=(d2+m10+jin)/7+(((d2+m10+jin)%7)>0);break;
case 11: u=(d2+m11+jin)/7+(((d2+m11+jin)%7)>0);break;
case 12: u=(d2+m12+jin)/7+(((d2+m12+jin)%7)>0);break;
}
start4:;
printf("%d年%d月%d日是%d年的第 %d 周,感谢使用本软件!\n\n",y,m,d2,y,u);
goto start;
}

这段程序编译后运行时,如输入点 . 则会被printf函数刷屏,为什么?
如何纠正错误呢?

[此贴子已经被作者于2007-10-2 0:32:51编辑过]

搜索更多相关主题的帖子: printf 函数 编译 运行 
2007-10-01 23:42
zhulaoda
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-9-30
收藏
得分:0 

goto 语句本身就是个地雷,没办法,学汇编转过来的,已经深受其害,惯用了,555555...
怎么办啊?没的解了?难道scanf("%d",&y);函数无法控制点 . 的输入?所以一顿狂printf ?
我要疯了~

[此贴子已经被作者于2007-10-2 0:23:46编辑过]

2007-10-02 00:20
zhulaoda
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-9-30
收藏
得分:0 

自学的,刚学语句及用法,数组明天再学!谢谢大家关心!
我们工厂产品出货填写的是生产周,生产部一楼和三楼由于计算方法不统一,所以我才想到做这个程序。

[此贴子已经被作者于2007-10-2 22:46:31编辑过]

2007-10-02 22:40
快速回复:[求助]这段程序编译后运行时,如输入点 . 则会被printf函数刷屏,为什 ...
数据加载中...
 
   



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

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