C++中这道题错在什么地方?

#include<iostream>usingnamespacestd;structdays{intyear;intmonth[12];intdas;};intmain(... #include <iostream>
using namespace std;
struct days
{
int year;
int month[12];
int das;
};
int main(int argc, char *argv[])
{
int n,i,sum,yun,month[12];
days d;
d.month[12]={31,29,31,30,31,30,31,31,30,31,30,31};
cout<<"请输入年月日"<<endl;
cin>>d.year>>n>>d.das;
if(((d.year%4==0)&&(d.year%100!=0))||((d.year%100==0)&&(d.year%400==0)))
{
d.month[1]=29;
}
else
{
d.month[1]=28;
}
for(i=0;i<12;i++)
{
sum=sum+d.month[i]+yun;
}
cout<<sum<<endl;
return 0;
}

未命名3.cpp:13: error: expected primary-expression before '{' token
未命名3.cpp:13: error: expected `;' before '{' token

请高手分析下错在哪里?应该怎么改?
展开
 我来答
lzm_716
2012-08-03
知道答主
回答量:19
采纳率:0%
帮助的人:16.6万
展开全部
1.编译错误:
数组的赋值不应该这么写,这种写法只能在变量声明的同时进行初始化赋值所用,可以通过for 循环一个一个赋值将12个月的天数依次赋值进去,也可通过内存拷贝方式进行赋值,如下所示:
int month[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
days d;
memcpy( d.month, month, sizeof(d.month) );
2.逻辑错误:
首先 sum 声明后未初始化,最好在 for 循环开始前,先将 执行 sum = 0;对其初始化。
另外,你这题的目的是什么,从你的逻辑来看,最终结果是计算出来输入的年月日后,当年的总天数是多少,但我推断你这题的目的,应该是计算这一年,从1月1日到所输入的年月日总共经历的几天。
附上修改后的代码:

#include <iostream>
using namespace std;
struct days
{
int year;
int month[12];
int das;
};
int main(int argc, char *argv[])
{
int n,i,sum;
int month[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
days d;
memcpy( d.month, month, sizeof(d.month) );
cout<<"请输入年月日"<<endl;
cin>>d.year>>n>>d.das;
if(((d.year%4==0)&&(d.year%100!=0))||((d.year%100==0)&&(d.year%400==0)))
{
d.month[1]=29;
}
else
{
d.month[1]=28;
}
if ( n < 1 || n > 12 )
{
cout<<"输入的月份非法"<<endl;
return 0;
}
if ( d.das < 1 || d.das > d.month[n-1] )
{
cout<<"输入的日期非法"<<endl;
return 0;
}
sum = 0;
for( i=0; i < n-1; i++ )
{
sum=sum+d.month[i];
}
sum = sum + d.das;
cout<<sum<<endl;
return 0;
}
一只会飞的猪吗
2012-08-03 · 超过67用户采纳过TA的回答
知道小有建树答主
回答量:127
采纳率:100%
帮助的人:174万
展开全部
#include <iostream>
using namespace std;
static int month[12]={31,29,31,30,31,30,31,31,30,31,30,31};//应在这里初始化赋值
struct days
{
int year;
int month[12];
int das;
};
int main(int argc, char *argv[])
{
int n,i,sum,yun,month[12];//结构体中定义了month[]这里再定义不合适
days d;
cout<<"请输入年月日"<<endl;
cin>>d.year>>n>>d.das;
if(((d.year%4==0)&&(d.year%100!=0))||((d.year%100==0)&&(d.year%400==0)))
{
d.month[1]=29;
}
else
{
d.month[1]=28;
}
for(i=0;i<12;i++)
{
sum=sum+d.month[i]+yun;
}
cout<<sum<<endl;
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chch噢耶
2012-08-03 · 超过26用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:63.6万
展开全部
d.month[0] = 31;
d.month[1] = 29;
d.month[2] = 31;
d.month[3] = 30;
d.month[4] = 31;
d.month[5] = 30;
d.month[6] = 31;
d.month[7] = 31;
d.month[8] = 30;
d.month[9] = 31;
d.month[10] = 30;
d.month[11] = 31;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e96ae71ed
2012-08-03 · TA获得超过728个赞
知道小有建树答主
回答量:1548
采纳率:0%
帮助的人:724万
展开全部
数组赋值错误,必须一个个赋值,当然你可以在初始化的时候赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiao你514
2012-08-03
知道答主
回答量:21
采纳率:0%
帮助的人:8.5万
展开全部
数组赋值错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式