標籤:ext amp 實現 開始 心得體會 編程 語句 自己的 運行時
一.實驗題目,設計思路,實現方法
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去限制,迴圈體有時因代碼寫錯得到錯誤的答案;這些只能通過調試慢慢編程;
寫代碼要心細,認真,也要關注程式的邊邊角角的問題,並且通過平常的練習多多積累,才能提升自己的能力。
C語言實驗報告