t060: T610(字元字串與檔案處理)
標籤 : TQC 字元字串與檔案處理
通過比率 : 0人/0人 (0%) [非即時]
評分方式:
Tolerant

最近更新 : 2022-06-24 01:14

內容

1.輸入姓名與分數,當分數為-100時,程式將結束讀取的動作。
2.題目已提供程式碼片段,執行結果如參考畫面,程式碼有語法、邏輯或其他項目上的錯誤,請全數修正。

本題原題意為:從鍵盤輸入資料到檔案,再印出檔案內容。每一筆資料為姓名與分數,但因 judge 系統不做檔案處理,因此無法執行 fprintf 這類指令,所以本題改成從鍵盤輸入資料到陣列,再印出陣列內容。(陣列宣告只宣告10筆資料,姓名最多19個字,分數為整數)
下列程式更改部分將以紅色標示。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (){
      //FILE *fptr;
      //char name[20];
      //int score;
      //fptr=fopen("score.dat", "w");
      char name[10][20];
      int score[10];
      char na[20];
      int sc;
      int k=0,i;
      printf("請輸入姓名: ");
      //scanf("%s", name);
      scanf("%s",na);
      printf("請輸入分數: ");
      //scanf("%d", &score);
      scanf("%d",&sc);
      while(sc!=-100) {
            //fprintf("%s %d", name, score);
            strcpy(name[k],na);
            score[k]=sc;
            printf("請輸入姓名: ");
            //scanf("%s", name);
            scanf("%s",na);
            printf("請輸入分數: ");
            //scanf("%d", &score);
            scanf("%d",&sc);
      }
      //fclose(fptr);
      //fptr=fopen("score.dat", "r");
      printf("\n以下是您輸入的資料:\n");
      for(i=0;i>k;i++){
      //while (fscanf("%s %d", name, score) !=EOF){
            //printf("%-10s %3d\n", name, score);
            printf("%-10s %3d\n", name[i], score[i]);
      }
      return 0;
}

輸入說明

1.輸入一筆資料分二列處理,分別為姓名、分數。
2.姓名為字串,最多19個字元(中文1個字佔2個字元)。分數為 0 至 100 整數。
3.當分數為 -100 表示離開輸入模式,程式必須輸出前面輸入的資料,並結束程式。

輸出說明

輸出格式每筆資料以一列為主,每筆資料格式為姓名寬度10個字向左靠齊,整數3個寬度,中間一個空白隔開。

範例輸入 #1
John
96
Mary
87
Cathy
67
Peter
-100
範例輸出 #1
請輸入姓名: John
請輸入分數: 96
請輸入姓名: Mary
請輸入分數: 87
請輸入姓名: Cathy
請輸入分數: 67
請輸入姓名: Peter
請輸入分數: -100

以下是您輸入的資料:
John        96
Mary        87
Cathy       67

測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (100%): 1.0s , <1K
提示 :
標籤:
TQC 字元字串與檔案處理
出處:
TQC 題庫060 [管理者: zero(管理員) ]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」