引发了未处理的异常: 读取访问权限冲突。
date 是 0x11108FB。。这是VS2019上调试显示的错误类型。
#include<stdio.h>
#define print printf
int isLeap(int year);
int isLegal(int date[]);
int daysInMonth(int day, int month);
void dateInput(int date[]);
int isLeap(int year)
{
if ((year - 2000) % 4 == 0)
return 1;
else
return 0;
}
int isLegal(int date[3])
{
int i = 0;
if (date[i + 1] >= 1 && date[i + 1] <= 12)
if (date[i + 2] <= daysInMonth(date[i + 1], date[i + 2]) && date[i + 2] >= 1)
return 1;
else
return 0;
else
return 0;
}
int daysInMonth(int year, int month)
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
return 31;
else if (month == 4 || month == 6 || month == 9 || month == 11)
return 30;
else if (month == 2)
if (isLeap(year) == 1)
return 29;
else if (isLeap(year) == 0)
return 28;
}
void dateInput(int date[3])
{
int a, b;
a = isLegal(date);
if (a == 0)
{
print("您输入的日期不合法,请重新输入:\n");
for (b = 0;b < 3;b++)
scanf_s("%d", &date[b]);
}
}
int main(void)
{
int date[3] = { 0 }, nextdate[3] = { 0 }, a, b, c, d, e, f, year, month, day, sum, sum1, sum2;
print("请输入今天的日期,如‘2001 3 27’:\n");
for (f = 0;f < 3;f++)
scanf_s("%d", &date[f]);
dateInput(date[0], date[1], date[2]);
year = date[0];
month = date[1];
a = daysInMonth(year, month);
b = isLeap(year);
if (b == 0)
print("今年不是闰年\n");
else if (b == 1)
print("今年是闰年\n");
print("这个月有%d天\n", a);
print("请输入下一次您生日的日期:(格式同上)\n");
scanf_s("%d%d%d", &nextdate[0], &nextdate[1], &nextdate[2]);
dateInput(nextdate[0], nextdate[1], nextdate[2]);
if (nextdate[0] == date[0])
{
if (nextdate[1] < date[1] || nextdate[1] == date[1] && nextdate[2] < date[2])
{
print("您输入的日期不合法,请重新输入:\n");
scanf_s("%d%d%d", &nextdate[0], &nextdate[1], &nextdate[2]);
}
c = a - date[2];
for (sum = c, d = date[1] + 1; d <= nextdate[1] - 1; d++)
sum += daysInMonth(year, d);
sum += nextdate[2];
}
else if (nextdate[0] > date[0])
{
c = a - date[2];
for (sum1 = c, d = date[1] + 1; d <= 12; d++)
sum1 += daysInMonth(year, d);
for (sum2 = 0, e = 1;e <= nextdate[1] - 1;e++)
sum2 += daysInMonth(year + 1, e);
sum = sum1 + sum2 + nextdate[2];
}
else
{
print("您输入的日期不合法,请重新输入:\n");
scanf_s("%d%d%d", &nextdate[0], &nextdate[1], &nextdate[2]);
}
print("从今天到下一次生日还有%d天\n", sum);
}
isLegal(int data[3])改成isLegal(int data[])
dateInput(date[0], date[1], date[2]);
但这个函数定义是:
void dateInput(int date[3])
你咋能编译通过的呢?