代码如下, 用来统计一周有效学习时间为多少
#include<stdio.h>
#include<string.h>
#include<Windows.h>
#define CHARNUM 30
struct mytime {
int hour=0;
int minute=0;
};
//将字符串输入转为结构体输出
mytime transform(char time_name[]) {
mytime atime;
if (strlen(time_name) > 5) { printf("时间格式错误\n"); return atime; }
else {
int tem = 0;
int ahour[CHARNUM] = { 0 };
int aminute[CHARNUM] = { 0 };
//获得':'所在的位置, 用tem存储位置
for (int i = 0; i < CHARNUM; i++) {
if (time_name[i] != ':') { tem++; }
else if (time_name[i] == ':') { break; }
}
//使用atoi函数将字符串转成int类型
if((tem!=1)&&(tem!=2)) { printf("时间格式错误\n"); return atime; }
if ((0 <= atoi(&time_name[0]) <= 24) && (0 <= atoi(&time_name[tem + 1]) <= 60)) {
atime.hour = atoi(&time_name[0]);
atime.minute = atoi(&time_name[tem + 1]);
}
else{ printf("时间格式错误\n"); return atime; }
return atime;
}
}
//对时间求和
mytime overtime(mytime timearr[],int time_num) {
mytime sum;
int minute1 = 0;
for (int i = 0; i < time_num; i++) {
sum.hour = timearr[i].hour + sum.hour;
minute1 = timearr[i].minute + minute1;
}
sum.hour = sum.hour+(minute1 / 60);
sum.minute = minute1 % 60;
return sum;
}
mytime getAverage(mytime sum, int days) {
mytime average;
int aveMinute = 0;
int sumMinute = (sum.hour * 60) + sum.minute;
//由于除法的限制, 只能取近似值
aveMinute = sumMinute / days;
average.hour = aveMinute/60;
average.minute = aveMinute%60;
printf("平均每天学习%d时%d分\n",average.hour,average.minute);
return average;
}
int main() {
char str1[CHARNUM];
int num = 0;
printf("请输入要输入的时间的个数: ");
scanf_s("%d", &num);
mytime timearr[CHARNUM];
gets_s(str1);
printf("------------------------请输入时间, 要求xx:xx的格式, 例如10:30 or 9:01------------------------\n");
for (int i = 0; i < num; i++) {
printf("请输入第%d个时间: ", i+1);
gets_s(str1);
timearr[i] = transform(str1);
if (timearr[i].hour == 0 && timearr[i].minute == 0) {
i--;
printf("请重新输入\n");
}
memset(str1, -2, sizeof(str1));
}
mytime final = overtime(timearr, num);
printf("\n");
printf("%d个时间的和为%d时%d分\n",num,final.hour,final.minute);
getAverage(final, num);
getchar();
}
运行结果如下,

博客给出代码用于统计一周有效学习时间,并展示了运行结果,聚焦信息技术领域中代码实现统计功能。
1845

被折叠的 条评论
为什么被折叠?



