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
请高手分析下错在哪里?应该怎么改? 展开
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
请高手分析下错在哪里?应该怎么改? 展开
5个回答
展开全部
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;
}
数组的赋值不应该这么写,这种写法只能在变量声明的同时进行初始化赋值所用,可以通过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;
}
展开全部
#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;
}
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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组赋值错误,必须一个个赋值,当然你可以在初始化的时候赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询