一.实验题目,设计思路,实现方法
1 实验题目
7-7 计算火车运行时间(15 分)
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
4-5 求简单交错序列前N项和(15 分)
本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
4-2-8 计算天数(15 分)
本题要求编写程序计算某年某月某日是该年中的第几天。
2.设计思路
7-7 计算火车运行时间
我一开始是两个数直接相减,得到的那个数用求余方法得到答案。
4-5 求简单交错序列前N项和
模仿C语言书上的方法进行求和。
4-2-8 计算天数
从学到的switch算法求得。
3.实现方法
7-7 计算火车运行时间
运用if语句和%求余限制答案而求得的,即用if语句对所得结果的小时数进行限制,防止边界问题。
4-5 求简单交错序列前N项和
这题关键在于i的定义和循环体的执行,及flag的转换。
4-2-8 计算天数
运用switch 算法,并且用if语句分清闰年的区别,在二月那的天数分清是28还是29天。
二.源程序(可只截取最关键的部分)
7-7 计算火车运行时间
#include <stdio.h>
int main (void)
{
int x,y,a,b;
scanf ("%d%d",&x,&y);
a=y/100-x/100;
b=y%100-x%100;
if(b<0)
{
b+=60;
a-=1;
}
printf ("%02d:%02d",a,b);
return 0;
}
4-5 求简单交错序列前N项和
#include <stdio.h>
int main (void)
{
int i,N,flag,denominator;
double sum,item;
scanf ("%d",&N);
sum=0;
flag=1;
denominator=1;
for (i=1;i<=N*3;i+=3)
{
item=flag*1.0/denominator;
sum=sum+item;
flag=-flag;
denominator=denominator+3;
}
printf ("sum = %.3lf\n",sum);
return 0;
}
4-2-8 计算天数
#include <stdio.h>
int main(void) {
int year, month, day;
int days;
int i;
scanf("%d/%d/%d", &year, &month, &day);
days = day;
for(i = 1; i < month; ++i) {
switch(i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2:
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
days += 29;
else
days += 28;
}
}
printf("%d\n", days);
return 0;
}
三.遇到的问题及解决方法,心得体会
火车的那题本来一直卡在边界值那,不懂得用if去限制,循环体有时因代码写错得到错误的答案;这些只能通过调试慢慢编程;
写代码要心细,认真,也要关注程序的边边角角的问题,并且通过平常的练习多多积累,才能提升自己的能力。