| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:求解 关于类型转换的问题
只看楼主 加入收藏
紫冰点
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-9-1
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:9 
求解 关于类型转换的问题
#include<stdio.h>


    struct date{
   
     int year;
     int month;
     int day;   
   
    };

   

 
 int  DAY(struct date Day){


     int sum=0;

    if((Day.year%4==0)&&(Day.year%100!=0)||(Day.year%400==0)){
        if(Day.month==1)
            sum=Day.day;
        else
            if(Day.month<=2)
               sum=31*Day.month/2+Day.day;        
            else
               if(Day.month%2!=0)
                 sum=31*Day.month/2+(Day.month/2-1)*30+28+Day.day;
               else
                 sum=31*Day.month/2+30*(Day.month/2-2)+28+Day.day;
            
        printf("今年是一个闰年!\n");
   
    }
    else{
           if(Day.month==1)
            sum=Day.day;
        else

        if(Day.month<=2)
          sum=31*Day.month/2+Day.day;        
        else
            if(Day.month%2!=0)
               sum=31*Day.month/2+(Day.month/2-1)*30+29+Day.day;
            else
                sum=31*Day.month/2+30*(Day.month/2-2)+29+Day.day;
   
    printf("今年是平年!\n");
    }
   printf("the day is %d\n",sum);

    }



void main(){
  
    struct date a;

    printf("enter a\n");
    scanf("%d %d %d",&a.year,&a.month,&a.day);
   
    int  DAY(a);

   

}这是今天编写的一个使用结构体确定某一年的某一天是今年的多少天的问题,但是最后在有这样一句报错,请教各位帮助解答 真诚谢过!本人刚自学C语言 所以有点白 请包涵
图片附件: 游客没有浏览图片的权限,请 登录注册
!!!
搜索更多相关主题的帖子: include 400 
2012-09-03 20:14
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
int  DAY(a);

这里的int没用
2012-09-03 20:24
xuhowe823
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2010-10-12
收藏
得分:10 
没细读你的代码,但是如楼上所说,你的函数DAY()没有返回值为什么要申明为int型呢?改为void试试。
2012-09-03 20:57
xuhowe823
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2010-10-12
收藏
得分:0 
回复 2楼 zklhp
。。。原来是版主,版主竟然如此"事必躬亲"。。。版主说什么就什么啦
2012-09-03 20:58
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
以下是引用xuhowe823在2012-9-3 20:58:39的发言:

。。。原来是版主,版主竟然如此"事必躬亲"。。。版主说什么就什么啦

首先要相信自己 怎么能我说什么就是什么 你得自己理解 自己判断

其次 记得结题
2012-09-03 21:04
紫冰点
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-9-1
收藏
得分:0 
回复 2楼 zklhp
嗯 谢谢版主  我按照楼主说的作了修改 但是结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册
又多出来一个error!!!而且我又换一种想法就是把使用return返回sum,返回值为整型变量,局部修改如下,谢谢诸位帮助解答一下 谢谢了!!!

  
    printf("今年是平年!\n");
    }
   
    return sum;
   
    }



void main(){
  
    struct date a;

    printf("enter a\n");
    scanf("%d %d %d",&a.year,&a.month,&a.day);
   
   int c=DAY(a);

   printf("the day is %d\n",sum);
}

[ 本帖最后由 紫冰点 于 2012-9-3 22:19 编辑 ]
2012-09-03 21:44
紫冰点
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-9-1
收藏
得分:0 
回复 6楼 紫冰点
谢谢版主  小弟纠正上面的一个问题
刚才我又调整了一下,
 就是在使用return返回值之后把sum设为全局变量 然后编译就能通过了  
谢谢各位帮忙 !!!
2012-09-03 21:49
heifeng2012
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:53
专家分:113
注 册:2012-3-22
收藏
得分:0 
void main(){
  
    struct date a;

    printf("enter a\n");
    scanf("%d %d %d",&a.year,&a.month,&a.day);
   
   int c=DAY(a);           //你返回的值给c以后有什么用

   printf("the day is %d\n",sum);   //你这个sum怎么来的,好像是个局部变量吧
}
2012-09-03 22:03
紫冰点
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-9-1
收藏
得分:0 
回复 8楼 heifeng2012
  是的 第一次把sum设为了局部变量 如果printf在主函数内便会编译报错 所以我修改为全局变量 然后新增添了C为int类型起到传递函数值的作用 结果又重新编译发现不需要,所以可以删除int c=
2012-09-03 22:24
DELLTOWER
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2012-9-2
收藏
得分:0 
程序运行起来不对啊!如下图
图片附件: 游客没有浏览图片的权限,请 登录注册

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

函数 int DAY(struct date Day)该成了void DAY(struct date Day),代码也该了,不知符合题意否?
程序代码:
void DAY(struct date Day)
    {
    int sum=0;
    switch(Day.month-1)
    {
   
    case 11:        sum+=30;
    case 10:        sum+=31;
    case 9:        sum+=30;
    case 8:        sum+=31;
    case 7:        sum+=31;
    case 6:        sum+=30;
    case 5:        sum+=31;
    case 4:        sum+=30;
    case 3:        sum+=31;
    case 2:        sum+=28;
    case 1:        sum+=31;
    case 0:        sum+=Day.day;
    }
    if(Day.year%4==0)        //判断是否是闰年
    {
        if(Day.year%100!=0)   
        {
            sum++;
            printf("今年是闰年!\n今天是%d天\n",sum);       
        }
        else
        {
            if(Day.year%400==0)
            {
                sum++;
                printf("今年是闰年!\n今天是%d天\n",sum);           
            }
       
        }
   
    }
  
    }
2012-09-11 23:26
快速回复:求解 关于类型转换的问题
数据加载中...
 
   



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

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