[已解決]程設作業...

Home Home
引用 | 編輯 和煦微風
2005-12-23 00:51
樓主
推文 x0
題目:設計一電腦閱卷的程式。

說明:
1. 首先,先輸入標準答案。
2. 再輸入學生的答案資料(含學生姓名與答案),並與標準答案比對,計算成績
3. 輸出學生的姓名與成績

 注意事項:
1. 必須使用function技巧。
2. 考卷以100為滿分,題目數量、配分與學生人數自訂。(例:共10題, ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 和煦微風
2005-12-23 02:28
1樓
  
剛剛好不容易才寫出來....
我把原始碼貼上來給大家參考看看吧~
如果有人有更短更有效率的程式....
也歡迎提供給我做為以後寫作業的參考唷~ 表情
簡單來說就是歡迎大家指教啦~ 表情
複製程式
#include <stdio.h>
#include <stdlib.h>

  int i=0,j,k;/*宣告變數i,j,k為整數型態*/
  char a[5],b[5];/*宣告陣列a,b為字元型態*/
  int grade(char a[5])/*宣告函式grade*/
  {
       j=0;/*設定j的初始值=0*/
       re:/*goto標記*/
       printf("請輸入答案:");
       scanf("%s",b);/*取得學生答案*/ 
       strupr(b);/*讓字母變大寫*/
       k=strlen(b);/*測出b的字串長度*/
       if((k>5)||(k<5))
       {
               printf("輸入錯誤~!!!\n");
               goto re;
               }
              else
              { 
       i=0;
       while(i<5)
       {
                 if(a[ i ]==b[ i ])
                 {
                               j=j+20;
                               }
                               i++;
                               }
                               }
       return j;
                               }
  
int main(void)
{
  j=0;
  int ga,gb;/*宣告變數ga,gb為整數型態*/
  char ans,na[10],nb[10];/*宣告ans,陣列na,nb為字元型態*/
  printf("==================================\n");
  printf("     歡迎來到電腦成績查詢系統\n"); 
  printf("最多5題,每題20分,每次輸入2位學生\n");
  printf("==================================\n");
  printf("請輸入標準答案:");
  scanf("%s",&a);/*取得標準答案*/ 
  strupr(a);/*讓標準答案的字母變成大寫*/
  printf("==================================\n");
  printf("標準答案:");
  printf("%s",a);
  printf("\n==================================\n");
  rerun:/*goto標記*/
  printf("請輸入第一位學生的名字:"); 
  scanf("%s",&na);/*取得第一位學生的名字*/
  ga=grade(a);/*計算第一位學生的成績*/
  printf("請輸入第二位學生的名字:"); 
  scanf("%s",&nb);/*取得第二位學生的名字*/
  gb=grade(a);/*計算第二位學生a的成績*/
  printf("==================================\n");
  printf("             成績結果\n");
  printf("==================================\n");
  printf("%s\n",na);
  printf("成績:%d\n",ga); 
  printf("%s\n",nb);
  printf("成績:%d\n",gb); 
  re2:/*goto標記*/
  printf("請問是否繼續?(y/n)");
  scanf(" %c",&ans); 
  if((ans=='y')||(ans=='Y'))
  {
                            goto rerun;
                            }
  else if((ans=='n')||(ans=='N'))
  {
       printf("感謝您的使用~ByeBye~~!!!\n");
       }
  else
  {
      printf("\n輸入錯誤~!!!\n");
      goto re2;
      } 
  system("PAUSE");       
  return 0;
}


獻花 x2
引用 | 編輯 KKKevin
2006-01-23 00:28
2樓
  
學C語言最好不要用"goto"...你可以用while or function解決吧

獻花 x0
引用 | 編輯 和煦微風
2006-01-24 02:00
3樓
  
下面是引用KKKevin於2006-01-23 00:28發表的 :
學C語言最好不要用"goto"...你可以用while or function解決吧
嗯嗯...
唐老鴨大大跟我說過了~^^
謝謝你囉~^^
我以後會注意的.... 表情

獻花 x0