回 帖 发 新 帖 刷新版面

主题:关于结构体变量的题,有一个错误,不懂~

#include<stdio.h>
{
struct dates
{
    int year;
    int month;
    int day;
}    
dates y_m_d;
void main()
{
struct dates y_m_d;
    struct dates *p;
    int n;
    printf("请输入年份,月份,日期:\n");
    scanf("%d%d%d",&y_m_d.year,&y_m_d.month,&y_m_d.day);
    p=&y_m_d;
switch((*p)->month)    
{
    case 1:n=(*p)->day;break;
    case 2:n=(*p)->day;break;
    case 3:n=(*p)->day+31;break;
    case 4:n=(*p)->day+59;break;
    case 5:n=(*p)->day+90;break;
    case 6:n=(*p)->day+120;break;
    case 7:n=(*p)->day+151;break;
    case 8:n=(*p)->day+181;break;
    case 9:n=(*p)->day+212;break;
    case 10:n=(*p)->day+243;break;
    case 11:n=(*p)->day+273;break;
    case 12:n=(*p)->day+334;break;
    default:break;
    }
if(((*p)->year)%4==0&&(*p)->year%100!=0||((*p)->year)%400)==0)
             n+=1;
    printf("%d月%d号在%d年中是第%d天\n",(*p)->month,(*p)->day,(*p)->year,n);
}
}
有一个错误是:cpp(2) : error C2447: missing function header (old-style formal list?)

这是什么意思啊?还想问的是,如果把struct前的括号去掉或者是写成
struct dates
{
    int year;
    int month;
    int day;
};
void main()
{struct dates y_m_d;
.........}
会有89个错误!难道这样定义结构体变量不对吗??请教我一下~谢谢~

回复列表 (共5个回复)

沙发

楼主
#include<stdio.h>
{//这个大括号干啥用的?
struct dates
{
    int year;
    int month;
    int day;
}    
dates y_m_d;//如果是纯C,这里应该是struct dates y_m_d;
void main()
{
struct dates y_m_d;
    struct dates *p;
    int n;
    printf("请输入年份,月份,日期:\n");
    scanf("%d%d%d",&y_m_d.year,&y_m_d.month,&y_m_d.day);
    p=&y_m_d;
switch((*p)->month)    //这里是最致命的一个错,你串了用法了,要么是p->month要么是(*p).month,下同
{
    case 1:n=(*p)->day;break;
    case 2:n=(*p)->day;break;
    case 3:n=(*p)->day+31;break;
    case 4:n=(*p)->day+59;break;
    case 5:n=(*p)->day+90;break;
    case 6:n=(*p)->day+120;break;
    case 7:n=(*p)->day+151;break;
    case 8:n=(*p)->day+181;break;
    case 9:n=(*p)->day+212;break;
    case 10:n=(*p)->day+243;break;
    case 11:n=(*p)->day+273;break;
    case 12:n=(*p)->day+334;break;
    default:break;
    }
if(((*p)->year)%4==0&&(*p)->year%100!=0||((*p)->year)%400)==0)
             n+=1;
    printf("%d月%d号在%d年中是第%d天\n",(*p)->month,(*p)->day,(*p)->year,n);
}
}

板凳

LS正解
struct dates
{
    int year;
    int month;
    int day;
};//结构体定义完了后面要加;

3 楼

谢谢~~........可是如果把开头那个大括号去掉,就有几十个错,而现在有那个大括号就是一个错,不知道是什麽意思~

4 楼

开头那个大括号本身的存在就是个错,末尾相应去掉一个,不报后面的错是因为代码本身根本没编译,把结构体和结构体指针都改过来之后再编译吧!

5 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册