#include <stdio.h>
#include <stdlib.h>
int number_of_days[13] = {0,31,28,31,30,31,30,31,30,31,30,31};
int leap_year(int gg)
{
if(y%400==0) return 1;
if(y%4==0 && y%100!=0) return 1;
return 0;
}
int okay(int d, int m, int y)
{
if(d<1 || d>number_of_days[m]) return 0;
if(m<1 || m>12) return 0;
return 1;
}
int main()
{
int n, i;
int d, m, y;
int nd, nm, ny;
int pd, pm, py;
for(i=0; i<n, i++)
{
scanf("%d %d %d", d, m,y);
printf("Date: %d.%d.%d ", d, m, y);
if(leap_year(y)) number_of_days[2] = 29;
else number_of_days[2] = 28;
if(!okay(dd, mm, y))
{
printf("not okay");
continue;
}
nd = d + 1;
nm = m;
ny = y;
if(nd > number_of_days[nm])
{
nd = 1;
nm++;
}
if(nm > 12)
{
nm = 1;
ny++;
}
pd = d - 1;
pm = m;
pg = y;
if(pd < 1)
{
pm--;
if(pm < 1)
{
pg--;
}
pd = number_of_days[pm];
}
printf("Previous %d.%d.%d. Next %d.%d.%d. year\n", pd, pm, py, nd, nm, ny);
}
return 0;
}
算法对我来说很好,但我无法运行此代码。我在Windows上使用CodeBlocks。其中一个错误是:
返回前的预期表达。
有人可以帮助我吗?
答案 0 :(得分:1)
该计划有很多错误。
可能的解决方法:
#include <stdio.h>
#include <stdlib.h>
int number_of_days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; /* add 31 for August */
int leap_year(int gg)
{
int y=gg; /* add this because y was undefined */
if(y%400==0) return 1;
if(y%4==0 && y%100!=0) return 1;
return 0;
}
int okay(int d, int m, int y)
{
(void)y; /* to avoid warning that y is unused */
if(d<1 || d>number_of_days[m]) return 0;
if(m<1 || m>12) return 0;
return 1;
}
int main()
{
int n, i;
int d, m, y;
int nd, nm, ny;
int pd, pm, py;
int pg; /* add this because it was undefined */
n = 1; /* add this to initialize n */
for(i=0; i<n; i++) /* , -> ; possibly typo */
{
scanf("%d %d %d", &d, &m, &y); /* add & because you have to pass pointers to read the integers to */
printf("Date: %d.%d.%d ", d, m, y);
if(leap_year(y)) number_of_days[2] = 29;
else number_of_days[2] = 28;
if(!okay(d, m, y)) /* dd -> d, mm -> m possibly typo */
{
printf("not okay");
continue;
}
nd = d + 1;
nm = m;
ny = y;
if(nd > number_of_days[nm])
{
nd = 1;
nm++;
}
if(nm > 12)
{
nm = 1;
ny++;
}
pd = d - 1;
pm = m;
pg = y;
if(pd < 1)
{
pm--;
if(pm < 1)
{
pg--;
pm = 12; /* add this because month 0 seems wrong */
}
pd = number_of_days[pm];
}
py = pg; /* add this because py was uninitialized */
printf("Previous %d.%d.%d. Next %d.%d.%d. year\n", pd, pm, py, nd, nm, ny);
}
return 0;
}