/** 三天打鱼两天晒网.cpp : 定义控制台应用程序的入口点。
程序描述:从键盘中录入信息并保存在in.txt文件中,判断在该日期之后的某一天该人是打鱼还是晒网,并将结果返回保存在out.txt文件中
编辑者:软工1502班 1508010221 苟同飞
修改日期:2017-3-14
**/
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include"string"
#define SIZE 200
int i;//定义全局变量控制输入的次数
char s[30];//定义字符数组来储存输出结果
struct TIME//使用结构体来储存数据
{
int year;
int month;
int day;
}time[SIZE];
void input()//从键盘输入数据并进行判断数据格式是否正确
{
for (int j = 0; j < i; j++)
{
printf("请输入截止日期:\n");
int ret;
while (1)
{
ret = scanf("%d %d %d",&time[j].year,&time[j].month,&time[j].day);
if (time[j].month >= 1 && time[j].month <= 12)
{
if (time[j].month == 1 || time[j].month == 3 || time[j].month == 5 || time[j].month == 7 || time[j].month == 8 || time[j].month == 10 || time[j].month == 12)
{
if (ret == 3 && time[j].year >= 2000 && time[j].day >= 0 && time[j].day <= 31 && getchar() == '\n')
{
break;
}
}
else if (time[j].month == 4 || time[j].month == 6 || time[j].month == 9 || time[j].month == 11)
{
if (ret == 3 && time[j].year >= 2000 && time[j].day >= 0 && time[j].day <= 30 && getchar() == '\n')
{
break;
}
}
else if ((time[j].year % 4 == 0 && time[j].year % 100 != 0) || (time[j].year % 400 == 0) && time[j].month == 2)
{
if (ret == 3 && time[j].year >= 2000 && time[j].day >= 0 && time[j].day <= 29 && getchar() == '\n')
{
break;
}
}
else if (time[j].month == 2)
if (ret == 3 && time[j].year >= 2000 && time[j].day >= 0 && time[j].day <= 28 && getchar() == '\n')
{
break;
}
}
printf("输入时间格式不正确\n");
while (getchar() != '\n');
}
printf("输入成功\n");
}
}
void save()//此函数用来储存数据
{
FILE *fp;
fp = fopen("in.txt", "w");
if (!fp)
{
printf("\n打开文件in.txt失败!");
}
for (int j = 0; j < i; j++)
{
fprintf(fp, "年:%d 月:%d 日:%d\n", time[j].year, time[j].month, time[j].day);
printf("\n");
}
fclose(fp);
}
void writefile()//此函数用来向文件中写入结果
{
FILE *fp;
fp = fopen("out.txt", "w");
if (!fp)
{
printf("\n打开文件out.txt失败!");
}
for (int j = 0; j < i; j++)
{
fprintf(fp, "年:%d 月:%d 日:%d 结果:%s\n", time[j].year, time[j].month, time[j].day, s);
printf("\n");
}
fclose(fp);
}
void sum()//判断是不是闰年并,并判断打鱼还是晒网
{
for (int j = 0; j < i; j++)
{
int x;
x = time[j].month;//防止日期在底下运算中被调换
int sum = 0;
if ((time[j].year % 4 == 0 && time[j].year % 100 != 0) || (time[j].year % 400 == 0))//判断是不是闰年
{
printf("是闰年\n");
sum = 366;
switch (time[j].month)
{
case 1: time[j].month = 0; break;
case 2: time[j].month = 31; break;
case 3: time[j].month = 60; break;
case 4: time[j].month = 91; break;
case 5: time[j].month = 121; break;
case 6: time[j].month = 152; break;
case 7: time[j].month = 182; break;
case 8: time[j].month = 213; break;
case 9: time[j].month = 244; break;
case 10: time[j].month = 275; break;
case 11: time[j].month = 305; break;
case 12: time[j].month = 335; break;
}
}
else
{
int x;
x = time[j].month;
printf("不是闰年\n");
sum = 365;
switch (time[j].month)
{
case 1: time[j].month = 0; break;
case 2: time[j].month = 31; break;
case 3: time[j].month = 59; break;
case 4: time[j].month = 90; break;
case 5: time[j].month = 120; break;
case 6: time[j].month = 151; break;
case 7: time[j].month = 181; break;
case 8: time[j].month = 212; break;
case 9: time[j].month = 243; break;
case 10: time[j].month = 273; break;
case 11: time[j].month = 304; break;
case 12: time[j].month = 334; break;
}
}
sum = (time[j].year - 2000)*sum + time[j].month + time[j].day;
time[j].month = x;
if (sum % 5 == 1 || sum % 5 == 2 || sum % 5 == 3)//判断是打鱼还是晒网
{
printf("这天在打鱼\n");
strcpy(s, "这天在打鱼");
}
else
{
printf("这天在晒网\n");
strcpy(s, "这天在晒网\n");
}
}
}
int main()
{
printf("请确定你要输入需要判断的日期个数:\n");
scanf("%d", &i);
input();
sum();
save();
writefile();
return 0;
}
程序描述:从键盘中录入信息并保存在in.txt文件中,判断在该日期之后的某一天该人是打鱼还是晒网,并将结果返回保存在out.txt文件中
编辑者:软工1502班 1508010221 苟同飞
修改日期:2017-3-14
**/
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include"string"
#define SIZE 200
int i;//定义全局变量控制输入的次数
char s[30];//定义字符数组来储存输出结果
struct TIME//使用结构体来储存数据
{
int year;
int month;
int day;
}time[SIZE];
void input()//从键盘输入数据并进行判断数据格式是否正确
{
for (int j = 0; j < i; j++)
{
printf("请输入截止日期:\n");
int ret;
while (1)
{
ret = scanf("%d %d %d",&time[j].year,&time[j].month,&time[j].day);
if (time[j].month >= 1 && time[j].month <= 12)
{
if (time[j].month == 1 || time[j].month == 3 || time[j].month == 5 || time[j].month == 7 || time[j].month == 8 || time[j].month == 10 || time[j].month == 12)
{
if (ret == 3 && time[j].year >= 2000 && time[j].day >= 0 && time[j].day <= 31 && getchar() == '\n')
{
break;
}
}
else if (time[j].month == 4 || time[j].month == 6 || time[j].month == 9 || time[j].month == 11)
{
if (ret == 3 && time[j].year >= 2000 && time[j].day >= 0 && time[j].day <= 30 && getchar() == '\n')
{
break;
}
}
else if ((time[j].year % 4 == 0 && time[j].year % 100 != 0) || (time[j].year % 400 == 0) && time[j].month == 2)
{
if (ret == 3 && time[j].year >= 2000 && time[j].day >= 0 && time[j].day <= 29 && getchar() == '\n')
{
break;
}
}
else if (time[j].month == 2)
if (ret == 3 && time[j].year >= 2000 && time[j].day >= 0 && time[j].day <= 28 && getchar() == '\n')
{
break;
}
}
printf("输入时间格式不正确\n");
while (getchar() != '\n');
}
printf("输入成功\n");
}
}
void save()//此函数用来储存数据
{
FILE *fp;
fp = fopen("in.txt", "w");
if (!fp)
{
printf("\n打开文件in.txt失败!");
}
for (int j = 0; j < i; j++)
{
fprintf(fp, "年:%d 月:%d 日:%d\n", time[j].year, time[j].month, time[j].day);
printf("\n");
}
fclose(fp);
}
void writefile()//此函数用来向文件中写入结果
{
FILE *fp;
fp = fopen("out.txt", "w");
if (!fp)
{
printf("\n打开文件out.txt失败!");
}
for (int j = 0; j < i; j++)
{
fprintf(fp, "年:%d 月:%d 日:%d 结果:%s\n", time[j].year, time[j].month, time[j].day, s);
printf("\n");
}
fclose(fp);
}
void sum()//判断是不是闰年并,并判断打鱼还是晒网
{
for (int j = 0; j < i; j++)
{
int x;
x = time[j].month;//防止日期在底下运算中被调换
int sum = 0;
if ((time[j].year % 4 == 0 && time[j].year % 100 != 0) || (time[j].year % 400 == 0))//判断是不是闰年
{
printf("是闰年\n");
sum = 366;
switch (time[j].month)
{
case 1: time[j].month = 0; break;
case 2: time[j].month = 31; break;
case 3: time[j].month = 60; break;
case 4: time[j].month = 91; break;
case 5: time[j].month = 121; break;
case 6: time[j].month = 152; break;
case 7: time[j].month = 182; break;
case 8: time[j].month = 213; break;
case 9: time[j].month = 244; break;
case 10: time[j].month = 275; break;
case 11: time[j].month = 305; break;
case 12: time[j].month = 335; break;
}
}
else
{
int x;
x = time[j].month;
printf("不是闰年\n");
sum = 365;
switch (time[j].month)
{
case 1: time[j].month = 0; break;
case 2: time[j].month = 31; break;
case 3: time[j].month = 59; break;
case 4: time[j].month = 90; break;
case 5: time[j].month = 120; break;
case 6: time[j].month = 151; break;
case 7: time[j].month = 181; break;
case 8: time[j].month = 212; break;
case 9: time[j].month = 243; break;
case 10: time[j].month = 273; break;
case 11: time[j].month = 304; break;
case 12: time[j].month = 334; break;
}
}
sum = (time[j].year - 2000)*sum + time[j].month + time[j].day;
time[j].month = x;
if (sum % 5 == 1 || sum % 5 == 2 || sum % 5 == 3)//判断是打鱼还是晒网
{
printf("这天在打鱼\n");
strcpy(s, "这天在打鱼");
}
else
{
printf("这天在晒网\n");
strcpy(s, "这天在晒网\n");
}
}
}
int main()
{
printf("请确定你要输入需要判断的日期个数:\n");
scanf("%d", &i);
input();
sum();
save();
writefile();
return 0;
}