使用者工具

網站工具


c:2024spring-hw2

國立屏東大學 資訊工程系 程式設計(二)

Turnin作業2

  • Turnin Code: c.hw2
  • Due Date: 3/25 00:00 Hard Deadline

繳交方式說明

本次Turnin作業包含多個程式題,請為每一題建立一個資料夾,並將該題所要上傳的檔案放置其中後,再使用turnin指令上傳作業。請同學先為本次作業建立一個資料夾hw2,然後在hw2裡分別為每一題建立一個子資料夾,用以進行每一題的作答以及上傳。每一題的子資料夾名稱已寫於題目前方,請務必依照題目的規定建立子資料夾,例如第1題為p1、第2題為p2,餘依此類推。當我們完成某一個題目的作答後,就可以使用turnin指令將該題的答案上傳。以第1題為例,當我們在p1子資料夾裡完成作答後,就可以回到hw1資料夾,使用以下指令將其上傳:

[3:23 user@ws hw2] turnin▴c.hw2▴p1↵

當然,你也可以等到所有題目都完成後,回到hw2資料夾,使用以下指令將所有題目都加以上傳:

[3:23 user@ws hw2] turnin▴c.hw2▴.↵

註:本文使用▴及↵代表空白字元與Enter換行字元,並且將使用者輸入的部份使用灰階方式顯示。


p1 10碼行動電話號碼輸入

請設計一個 C 語言程式 PhoneNumber.c,讓使用者輸入一個 10 碼的行動電話號 碼,並將它改以 XXXX-XXXXXX 的格式輸出。若使用者所輸入的號碼有誤(不足10碼、含有非數字字元、不由09開頭), 則請輸出「Error!」。

此題的執行結果如下:

[3:23 user@ws p1] ./a.out↵
Please▴input▴your▴mobile▴phone▴number:▴0935123456↵
0935-123456↵
[3:23 user@ws p1] ./a.out↵
Please▴input▴your▴mobile▴phone▴number:▴9090333555↵
Error!↵
[3:23 user@ws p1] ./a.out↵
Please▴input▴your▴mobile▴phone▴number:▴09xx6667xx↵
Error!↵
[3:23 user@ws p1] ./a.out↵
Please▴input▴your▴mobile▴phone▴number:▴099123456↵
Error!↵
[3:23 user@ws p1] ./a.out↵
Please▴input▴your▴mobile▴phone▴number:▴0911-222555↵
Error!↵
[3:23 user@ws p1] ./a.out↵
Please▴input▴your▴mobile▴phone▴number:▴P22334455↵
Error!↵
[3:23 user@ws p1] ./a.out↵
Please▴input▴your▴mobile▴phone▴number:▴0928▴223355↵
Error!↵
[3:23 user@ws p1]

注意!請記得將要上傳的檔案放置於p1資料夾後再上傳。

p2 美式日期輸出

請參考以下的Main.c及Date.h檔案

#include <stdio.h>
#include "Date.h"

int main()
{
    int yyyy, mm, dd;
    char date[19];

    printf("Please input a date (yyyy/mm/dd): ");
    scanf("%d/%d/%d",&yyyy,&mm,&dd);
    printf("The date is %s.\n", AmericanDate(date, yyyy, mm, dd));
}

#include <stdio.h>
#include <string.h>

char *AmericanDate(char *date, int y, int m, int d);

你必須完成名為Date.c的C語言程式,其中包含AmericanDate()函式的Implementation。AmericanDate函式接收一個用以存放結果字串的記憶體位址,以及分別代表年、月、日的參個整數作為參數,並將其轉換為美式日期格式後寫入到所傳入的記憶體位址處,並且也將該記憶體位址做為函式傳回值傳回給呼叫者。

本題的相關程式將使用以下的Makefile進行編譯:

all: Main.c Date.o
        cc Main.c Date.o

Date.o: Date.c Date.h
        cc -c Date.c

clean:
        rm -f *.o *~ *.*~ a.out

本題的執行結果可參考如下:

[9:19 user@ws p2] ./a.out↵
Please▴input▴a▴date▴(yyyy/mm/dd):▴2024/3/15↵
The▴date▴is▴March▴15th,▴2024.↵
[9:19 user@ws p2] ./a.out↵
Please▴input▴a▴date▴(yyyy/mm/dd):▴2000/9/1↵
The▴date▴is▴September▴1st,▴2000.↵
[9:19 user@ws p2] ./a.out↵
Please input a date (yyyy/mm/dd): 2025/6/21↵
The▴date▴is▴June▴21st,▴2025.↵
[9:19 user@ws p2] ./a.out↵
Please▴input▴a▴date▴(yyyy/mm/dd):▴195/10/22↵
The▴date▴is▴October▴22nd,▴195.↵
[9:19 user@ws p2]

  • 注意1:本題所輸入的測試日期皆為正確數值,你不必進行輸入數值的錯誤檢查。
  • 注意2: 本題僅需繳交Date.c檔案,請記得將要上傳的檔案放置於p2資料夾後再上傳。

編輯此段

p3 去除輸入字串前後方的空白字元

請參考以下的Main.c及ReadAndTrim.h檔案

#include <stdio.h>
#include <string.h>
#include "ReadAndTrim.h"

int main()
{
        char str[100];

        printf("Please input a string: ");
        scanf("%[^\n]",str);
        readAndTrim(str,strlen(str));
        printf("output: %s\n",str); 
}

int readAndTrim(char str[],int n);

你必須完成名為ReadAndTrim.c的C語言程式,其中包含readAndTrim(char str[], int n)函式的的Implementation;其中 str 陣列是一 個字串,n 為該字串之長度。此函式的作用是將 str 字串前面與後面的空白字元都加以去除。

本題的相關程式將使用以下的Makefile進行編譯:

all: Main.c ReadAndTrim.o
        cc Main.c ReadAndTrim.o

ReadAndTrim.o: ReadAndTrim.c ReadAndTrim.h
        cc -c ReadAndTrim.c

clean:
        rm -f *.o *~ *.*~ a.out

本題的執行結果可參考如下:

[9:19 user@ws p3] ./a.out↵
Please▴input▴a▴string:▴▴▴▴▴This▴is▴a▴test▴▴▴↵
output:▴This▴is▴a▴test↵
[9:19 user@ws p3] ./a.out↵
Please▴input▴a▴string:▴▴▴▴A▴B▴CD▴↵
output:▴A▴B▴CD↵
[9:19 user@ws p3] ./a.out↵
Please▴input▴a▴string:▴
output:▴↵
[9:19 user@ws p3]

  • 注意: 本題僅需繳交ReadAndTrim.c檔案,請記得將要上傳的檔案放置於p3資料夾後再上傳。

p4 文字檔案內容代換

請設計一個C語言程式Replace.c,使用 I/O 轉向(I/O redirect)的方式,將一個文字檔案讀入後,請以字串搜尋替代的方式將其中的「NPTU」改成「National Pingtung University」後輸出。本題的執行結果可參考如下:

[9:19 user@ws p4] cat▴in.1↵
NPTU↵
[9:19 user@ws p4] ./a.out▴<▴in.1↵
National▴Pingtung▴University↵
[9:19 user@ws p4] cat▴in.2↵
1▴NPTUa↵
2▴NPTUb↵
3▴cNPTUc↵
4▴NPTUNPTU↵
5▴NPTU▴5↵
6▴nptu↵
[9:19 user@ws p4] ./a.out▴<▴in.2↵
1▴NPTUa↵
2▴NPTUb↵
3▴cNPTUc↵
4▴NPTUNPTU↵
5▴National▴Pingtung▴University▴5↵
6▴nptu↵
[9:19 user@ws p4] cat▴in.3↵
NPTU▴was▴founded▴on▴August▴1,▴2014,▴upon▴the▴official▴merge▴of▴National▴Pingtung▴University▴of▴Education▴and▴National▴Pingtung▴Institute▴of▴Commerce.▴NPTU▴is▴a▴comprehensive▴university▴advocating▴academic▴freedom▴that▴emphasizes▴holistic▴learning▴and▴concern.▴Due▴to▴such▴recent▴changes▴in▴the▴educational▴environment▴as▴the▴focus▴on▴developing▴a▴more▴global▴outlook▴both▴on▴campus▴and▴in▴society,▴the▴decreasing▴birth▴rate,▴and▴a▴shortage▴of▴talent,▴NPTU▴aims▴to▴prepare▴students▴by▴providing▴them▴with▴practical▴and▴professional▴skills,▴as▴well▴as▴the▴reasoning▴and▴holistic▴qualities▴to▴function▴competently▴in▴a▴global▴environment.↵
[9:19 user@ws p4] ./a.out▴<▴in.3↵
National▴Pingtung▴University▴was▴founded▴on▴August▴1,▴2014,▴upon▴the▴official▴merge▴of▴National▴Pingtung▴University▴of▴Education▴and▴National▴Pingtung▴Institute▴of▴Commerce.▴National▴Pingtung▴University▴is▴a▴comprehensive▴university▴advocating▴academic▴freedom▴that▴emphasizes▴holistic▴learning▴and▴concern.▴Due▴to▴such▴recent▴changes▴in▴the▴educational▴environment▴as▴the▴focus▴on▴developing▴a▴more▴global▴outlook▴both▴on▴campus▴and▴in▴society,▴the▴decreasing▴birth▴rate,▴and▴a▴shortage▴of▴talent,▴National▴Pingtung▴University▴aims▴to▴prepare▴students▴by▴providing▴them▴with▴practical▴and▴professional▴skills,▴as▴well▴as▴the▴reasoning▴and▴holistic▴qualities▴to▴function▴competently▴in▴a▴global▴environment.↵
[9:19 user@ws p4]

  • 注意1: 本題僅需繳交Replace.c檔案,請記得將要上傳的檔案放置於p4資料夾後再上傳。
  • 注意2: 本題所展示的in.1、in.2與in.3可至/home/stu/public/c2024s/hw2/p4/取得。

p5 密碼安全性檢查

請設計一個C語言程式CheckPassword.c,先讓使用者輸入一個不超過10個字元長度(不含空字元)的密碼後,依據下列規則檢查該密碼是否足夠安全:

  1. 密碼必須由英文大寫小字母、數字與空白字元組成
  2. 密碼不得少於等於5個字元
  3. 密碼至少包含一個大寫英文字元與一個小寫英文字元
  4. 密碼至少包含一個數字

本題的執行結果可參考如下:

[9:19 user@ws p5] ./a.out↵
Please▴input▴a▴password: Happy 888↵
Password▴check▴pass↵
[9:19 user@ws p5] ./a.out↵
Please▴input▴a▴password: happy 888↵
Password▴check▴failed↵
[9:19 user@ws p5] ./a.out↵
Please▴input▴a▴password: hello World0209↵
Password▴check▴failed↵
[9:19 user@ws p5] ./a.out↵
Please▴input▴a▴password: LOVE 0214↵
Password▴check▴failed↵
[9:19 user@ws p5] ./a.out↵
Please▴input▴a▴password: Love 0214↵
Password▴check▴pass↵
[9:19 user@ws p5]

  • 注意: 本題僅需繳交CheckPassword.c檔案,請記得將要上傳的檔案放置於p5資料夾後再上傳。
c/2024spring-hw2.txt · 上一次變更: 2024/03/18 03:54 由 junwu

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki