史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   C語言陣列問題 (http://forum.slime.com.tw/thread175351.html)

leowang 2006-05-25 11:26 AM

C語言陣列問題
 
這問題我寫不出來 有那位大大幫解答
http://home.pchome.com.tw/web/itaxd/problem.bmp
最後要印出成績表和最高分者
如上圖所示

mini 2006-05-25 03:06 PM

語法:

#include <stdio.h>
#include <stdlib.h>

typedef struct DATA{
 long S_NO;      //學號
 /*作業成績*/
 int math;
 int C_Lang;
 int En;
 int Total
}Student_Data;

int main(int argc, char *argv[])
{
  Student_Data s[5]; //一維陣列

 //...輸入及計算

  system("PAUSE");       
  return 0;
}

至於用 二維陣列 設計
語法:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  long s[5][4]; //二維陣列
 /*
  s[0][0] 表示: 學號800701 的數學成績
  s[0][1] 表示: 學號800701 的C語言成績
  s[0][2] 表示: 學號800701 的英文成績
  s[0][3] 表示: 學號800701 的總分
 */

 //...輸入及計算

  system("PAUSE");       
  return 0;
}


leowang 2006-05-25 04:49 PM

這是我寫的 我先用一維陣列 加入第二個學生(參數)就錯誤ㄌ
PHP 語法:

#include <stdio.h>
#include <stdlib.h>
int main(void) {
   
int isum 0,sum1 0;     
   
int scores1[3]; 
   
int scores2[3];
   
scores1[0] = 60;    
   
scores1[1] = 50;
   
scores1[2] = 81;;
   
scores2[0] = 49;    
   
scores2[1] = 70;
   
scores2[2] = 63
      
for ( 03i++) {
      
sum += scores1[i];
      
sum1 += scores2[i];
   }
   
printf("學  號│數學│C │英文│總分\n" );
   
printf("800701│60  │50│81  │ %d\n"sum);
   
printf("800702│49  │70│63  │ %d\n"sum1);
   
getchar(); 
   return 
0;


這要怎解決呢

getter 2006-05-26 02:11 AM

引用:

作者: leowang
這是我寫的 我先用一維陣列 加入第二個學生(參數)就錯誤ㄌ
[php]
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, sum = 0,sum1 = 0;
int ...

你的程式少了一個 ; 號,在這一行 scores2[2] = 63 的地方當然會錯。

程式還能改寫成以下

語法:

#include <stdio.h>
#include <stdlib.h>
int main(void)
    {
    int i, j, max[2] = {0}, sum[5] = {0};     
    int scores[][3] = {{60,50,81},{49,70,63},{70,33,55},{63,64,54},{83,87,76}}; 
 
    for ( i = 0; i < 5; i++)
              for ( j = 0; j < 3; j++)
              { sum[i] += scores[i][j]; }
       
        max[0] = sum[0];
          for ( i = 0; i < 5; i++)
            {
                  for ( j = 0; j < 5; j++)
                    {
                      if ( max[0] < sum[i] )
                        {
                          max[0] = sum[i];
                          max[1] = i;
                        }       
                    }     
              }
                 
    printf(" 學  號│數學│ C  │英文│總分\n" );
    for ( i = 0; i < 5; i++)
      {
            printf("%7d│", 800701+i); 
            for ( j = 0; j < 3; j++)
                { printf("%3d │", scores[i][j]); }
                printf("%3d\n",sum[i]); 
      }
    printf("\n最高者 : %d",800701+max[1]); 
 
    getchar(); 
    return 0;
    }

想想看跟你得程式跟我改寫的有何差異 ...,

陣列給初值不用那麼麻煩,一個一個給,可以向變數一樣在宣告時就指定。
ex:
int FF[5] = {0}; 表示該 FF 陣列初值為 0
int AB[3] = {60,50,81}; 表示該 AB 陣列初值依序為 60, 50 ,81
int CD[2][3] = {{60,50,81},{49,70,63}}; 表示該 CD 陣列初值依序為 60, 50, 81, 49, 70, 63


mini 大的是一種叫做結構的語方式,我推測你應該是還沒學到這種

結構的好處可以把好幾種不同性質的資料包成一包。


所有時間均為台北時間。現在的時間是 04:20 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1