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個寬度,中間一個空白隔開。
John 96 Mary 87 Cathy 67 Peter -100
請輸入姓名: John 請輸入分數: 96 請輸入姓名: Mary 請輸入分數: 87 請輸入姓名: Cathy 請輸入分數: 67 請輸入姓名: Peter 請輸入分數: -100 以下是您輸入的資料: John 96 Mary 87 Cathy 67
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」 |