| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 418 人关注过本帖
标题:运行出错!高手速来!
只看楼主 加入收藏
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
结帖率:88.24%
收藏
已结贴  问题点数:10 回复次数:6 
运行出错!高手速来!
程序代码:
#include<stdio.h>

int main()
{printf("  万年历by\n");
void abc( int year,int month);
int year,month;
for(;;)
{printf("请输入要查询的年份和月份\n");
printf("年份:");
scanf("%d",&year);
printf("月份:");
scanf("%d");
for(;;)
if(year>0&&(1<=month&&month<=12))break;
else{printf("请输入正确的年份和月份");
printf("年份:");
scanf("%d\n",&year);
printf("月份:");
scanf("%d\n");}
abc(year,month);
return 0;
}
}


void abc(int year,int month)
{int preyear;int premonth;int predays;int days; int leap;int i;
preyear=year-1;
premonth=month-1;
leap=((year%4&&year%100!=0)||(year%400==0))?1:0;
predays=preyear*365+preyear/4+preyear/400-preyear/100;
switch(premonth)
{case 1:predays+=31;break;

 case 2:predays+=59;break;

 case 3:predays+=90;break;

 case 4:predays+=120;break;

 case 5:predays+=151;break;

 case 6:predays+=181;break;

 case 7:predays+=212;break;

 case 8:predays+=243;break;

 case 9:predays+=273;break;

 case 10:predays+=304;break;

 case 11:predays+=334;break;

 
}
if(leap&&month>=3)predays++;
switch(month)
{case 1:days=31;printf("1月 ");break;

 case 2:days=29;printf("2月 ");break;

 case 3:days=31;printf("3月 ");break;

 case 4:days=30;printf("4月 ");break;

 case 5:days=31;printf("5月 ");break;

 case 6:days=30;printf("6月 ");break;

 case 7:days=31;printf("7月 ");break;

 case 8:days=31;printf("8月 ");break;

 case 9:days=30;printf("9月 ");break;

 case 10:days=31;printf("10月 ");break;

 case 11:days=30;printf("11月 ");break;

 case 12:days=31;printf("12月 ");break;
}
if(leap&&month==2)days=28;
printf("%d",year);
if(leap)printf("闰年\n");
printf("日 一 二 三 四 五 六\n");
predays%=7;
for(i=1;i<=predays;i++)
printf(" ");
for(i=1;i<=days;i++)
{printf("%2d",i);
if((i+predays)%7==6)printf("\n");
}
printf("\n");
}

    可以运行但是问题是下面的图。每次运行都这样!纠结啊!求高手解释啊!
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 唏嘘草 于 2011-6-6 15:11 编辑 ]
搜索更多相关主题的帖子: color 
2011-06-06 15:07
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:4 
楼主也太粗心了,建议楼主重新写一个吧。简单点的,for和while就可以了
2011-06-06 15:18
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 2楼 hjywyj
粗心什么啊?这位哥 这是什么情况啊,我刚写完的啊!什么原因
2011-06-06 15:19
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
靠,这不叫粗心!
printf("月份:");
scanf("%d"); //scanf("%d",&month);
2011-06-06 15:25
read_you
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2011-5-27
收藏
得分:4 
程序代码:
/*
选择功能:
1.查询某一年日历;
2.查询某一月日历;
3.查询某一天日历;
*/
#include<stdio.h>
int main()
{   
    void print_star();
    void print_star1();
    int range(int x,int y);
    long b[500][12][42];
    int k,j,q,m,n,i,s,t,judge=1;
    char *zodiac[12]={"鸡年","狗年","猪年","鼠年","牛年","虎年","兔年","龙年","蛇年","马年","羊年","猴年"};
    struct cricle
    {
        int a;
        struct cricle *next;
    };
    struct cricle a[7],*p,*head;
    head=&a[2];
    p=head;
    for(i=1;i<7;i++)
    {
        a[i-1].next=&a[i];
        a[i].a=i;
    }
    a[6].next=&a[0];
    a[0].a=0;
    for(k=0;k<500;k++)
    {
        for(j=0;j<12;j++)
        {
            m=p->a;
            n=range((k+1901),(j+1));
            for(i=m,q=1;q<=n;i++,q++)
            {
                b[k][j][i]=q;
                p=p->next;
            }
            for(;i<42;i++)
            {
                b[k][j][i]=0;
            }
            for(i=m-1;i>=0;i--)
            {
                b[k][j][i]=0;
            }
        }
    }
    while(judge)
    {
        printf("选择功能:\n1.查询某一年日历;\n2.查询某一月日历;\n3.查询某一天日历;\n选择:");
        scanf("%d",&s);
        if(s==1)
        {
            printf("\n请输入1901-2400年中要查询的年数(如2011):\n");
            scanf("%d",&k);
            if(k>2400||k<=1900)
            {continue;}
            print_star1();
            printf("          *    %d年   %s  *\n",k,zodiac[k%12-1]);
            print_star1();
            printf("\n\n");
            k-=1901;
            for(j=0;j<12;j++)
            {   
                print_star();
                printf("             *  %d年%d月  *\n",k+1901,(j+1));
                print_star();
                printf("    日    一    二    三    四    五    六\n");
                for(i=0;i<42;i++)
                {
                   if(!(i%7))
                   printf("\n");
                   if(b[k][j][i]==0)
                   printf("      ");
                   else
                   printf("%6d",b[k][j][i]);
                }
                printf("\n\n\n");
              
            }
        }
        if(s==2)
        {
            printf("\n请输入1901-2400年中要查询的年月数(如2011.1):\n");
            scanf("%d.%d",&k,&j);
            if(k>2400||k<=1900)
            {continue;}
            printf("\n\n");
            print_star();
            printf("           *  %d年 %s %d月  *\n",k,zodiac[k%12-1],j);
            print_star();
            printf("    日    一    二    三    四    五    六\n");
            k-=1901;
            j--;
            for(i=0;i<42;i++)
            {
                if(!(i%7))
                printf("\n");
                if(b[k][j][i]==0)
                printf("      ");
                else
                printf("%6d",b[k][j][i]);
            }
             printf("\n\n\n");
        }
        if(s==3)
        {  
            printf("\n请输入1901-2400年中要查询的年月及天数(如2011.1.1):\n");
            scanf("%d.%d.%d",&k,&j,&t);   
            if(k>2400||k<=1900)
            {continue;}
            k-=1901;
            j--;
            for(i=0;i<42;i++)
            {
                if(b[k][j][i]==t)
                    break;
            }
            k+=1901;
            ++j;
            if(!(i%7))
            {    printf("\n\n\n\n");
                print_star1();
                printf("         %d年 %s %d.%d日 星期天\n",k,zodiac[k%12-1],j,t);
                print_star1();
                printf("\n\n\n\n");
            }
            else
            {
                printf("\n\n\n\n");
                print_star1();
                printf("         %d年 %s %d.%d日 星期%d\n",k,zodiac[k%12-1],j,t,i%7);
                print_star1();
                printf("\n\n\n\n");
            }

        }
        printf("继续与否:\n\n继续请输入非0数,结束请输入0:\n");
        scanf("%d",&judge);
        if(!judge)
        {
            printf("\n\n");
            print_star1();
               printf("                 谢谢使用\n");
            print_star1();
            printf("\n\n\n\n");
        }
    }
    return 0;   
}    

int range(int x,int y)
{
    int n;
    if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
        n=31;
    else if(y==4||y==6||y==9||y==11)
        n=30;
    else
        if(((x%4==0)&&(x%100!=0))||(x%400==0))
          n=29;
        else
          n=28;
    return n;
}
void print_star()
{
    printf("********************************************\n");
}
void print_star1()
{
    printf("        *************************\n");
}
2011-06-06 15:26
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 4楼 hjywyj
是的这个代码一长我就不容易发现错无了,当局者迷,旁观者清啊
2011-06-06 16:09
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 4楼 hjywyj
这两天写这个东西,收获挺大的,感想吧,就是说要做好细节方面的,不然到最后出错自己都不易找到!
2011-06-06 16:39
快速回复:运行出错!高手速来!
数据加载中...
 
   



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

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