目前分類:程式設計(*.C) (6)

瀏覽方式: 標題列表 簡短摘要

試題02: 試設計程式, 提供下列各副程式的功能.

*請參考:【原創:"王氏口訣"】心算 "某日是星期幾" !

*假設日期 ws_date 的格式為 yyyymmdd 的(long)長整數, 例如: 16000301 表示1600/03/01

*假設現行的公曆曆法格里曆(Gregorian calendar)自1582年10月15日起算, 考慮實用性,

  及方便性, 以 1600/03/01做為第0天(base on 1600/03/01). 

1.計算 "日期(ws_date)"距離 "1600/03/01" 有幾天(*ret_days)?   該日期為星期幾(*ret_week)?

/* 輸入 "日期", 求得 "天數" 及 "星期幾" */

void date2days(unsigned long ws_date,unsigned long *ret_days, int *ret_week);

2. 輸入 "距離1600/03/01" 的天數ws_days, 求出 "該日期########" .

unsigned long days2date(unsigned long ws_days);

3.輸入 "兩個日期", 求相差的 "天數".

unsigned long count_days(unsigned long ws_date_from, unsigned long ws_date_to);

4. 檢查 "該日期是否合理有效" (有效return 0;無效return -1).

int date_valid(unsigned long ws_date);

      提示:先將 "日期" 轉 "天數", 再轉成另一個 "日期", 比對 "兩個日期" 是否相等.

 

 

..........................................................................................................

試題02中的功能已足夠應付 "商業上的用途", 而

試題03比較像是 "冷僻" 的數學題.

試題03: 試設計程式, 能提供上列第1及第2項功能,

             但是為 "設計電路" 上的要求,

             程式中不能使用表格或陣列來存12個月的對照值,

             也不能使用 "if" 或 "比大小" 或 "goto" 或 "迴圈" 的statement;

             只能利用 "+-*/" 或 "%" 等五種運算 "一行一行執行下來".

       例如下列四行是符合本條件的:

             ws_mm = ws_mmdd / 100;

tools241 發表在 痞客邦 留言(7) 人氣()

/* btree.c --- debug by Mike Wang --- */
/*

tools241 發表在 痞客邦 留言(0) 人氣()

/* 試題:   C(49,6)  ==> 試 "以最少比較次數" 印出 "大樂透(49個號碼取6個號碼)" 的所有可能開出的號碼(不含特別號) */

/* 以下共23行, 請修改下列有問號處?...... */

tools241 發表在 痞客邦 留言(4) 人氣()

/*
 程式檔名 : dc.c         (仿unix命令dc, 後置式計算機)

tools241 發表在 痞客邦 留言(0) 人氣()

expr.c (仿unix命令expr)

/*

tools241 發表在 痞客邦 留言(0) 人氣()

grep.c    (仿unix命令grep) 約1697行, 48K

tools241 發表在 痞客邦 留言(0) 人氣()