C 語言 講義   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  A  B  C

觀念: 陣列 :

用法:

變數型態 變數名稱[陣列數量] ={初值,…} /* 綠色部份可以省略 */

例:

int a[4]={1,2,3,4} ;

完整的例子1:

#include<stdio.h>
main()
{
  int i;
  int a[4]={1,2,3,4} ;
  for(i=0;i<=3;i=i+1)
// 注意: c語言的陣列是從 0 開始排起,0、1、2、3
  {
    printf("Hello , %d .\n",a[i]);
  }
}

  

完整的例子2:輸入10個學生的國文成績,並將10個人的成績輸出在螢幕上

#include<stdio.h>
main()
{
  int i;
  int a[10];
  for(i=0;i<=9;i=i+1)
  {
    printf("請輸入 第%d個人的國文成績: ",i);
    scanf("%d",&a[i]);
  }
  for(i=0;i<=9;i=i+1)
  {
    printf("%d : %d \n",i,a[i]);
  }
}

練習1 : 輸入10個學生的國文成績, 並計算總分和平均成績

完整的例子3 : 輸入10個學生的國文、英文、數學成績, 並計算各科的總分和平均成績,並計算總分和總平均

#include<stdio.h>

void main()
{
  int i,suma,sumb,sumc;
  int a[11],b[11],c[11];
  suma=0; sumb=0; sumc=0;
  for(i=1;i<=10;i=i+1)
// 我們可以故意空下第0格不用,從第1格開始排起
  {
    printf("input %d person Chinese:",i);
    scanf("%d",&a[i]);
    printf("input %d person English:",i);
    scanf("%d",&b[i]);
    printf("input %d person Mathematic:",i);
    scanf("%d",&c[i]);
  }
  printf("No. Chine Engli Mathe \n");
  printf("-----------------------");
  for(i=1;i<=10;i=i+1)
  {
    suma = suma + a[i];
    sumb = sumb + b[i];
    sumc = sumc + c[i];
    printf(" %2d : %5d %5d %5d \n",i,a[i],b[i],c[i]);
  }
  printf(" sum %5d %5d %5d \n",suma,sumb,sumc);
  printf(" ave %5.1f %5.1f %5.1f \n",(float)suma/10.0,(float)sumb/10.0,(float)sumc/10.0);
}

完整的例子 4:另一種寫法

#include<stdio.h>

void main()
{
  int i,sum[4];
  int a[11],b[11],c[11];
  sum[1]=0; sum[2]=0; sum[3]=0;
  for(i=1;i<=10;i=i+1)
  {
    printf("input %d person Chinese:",i);
    scanf("%d",&a[i]);
    printf("input %d person English:",i);
    scanf("%d",&b[i]);
    printf("input %d person Mathematic:",i);
    scanf("%d",&c[i]);
  }

  printf(" No Chine Engli Mathe Physi Chemi \n");
  for(i=1;i<=10;i=i+1)
  {
    sum[1] = sum[1] + a[i];
    sum[2] = sum[2] + b[i];
    sum[3] = sum[3] + c[i];
    printf(" %2d : %5d %5d %5d \n",i,a[i],b[i],c[i]);
  }
  printf(" sum %5d %5d %5d \n",sum[1],sum[2],sum[3]);
  printf(" ave %5.1f %5.1f %5.1f \n",(float)sum[1]/10.0,(float)sum[2]/10.0,(float)sum[3]/10.0,);
}

練習2 : 輸入 ? 個學生的 ? 科成績, 並計算總分和平均成績 (? 的部份,程式一開始會問使用者)

練習3 : 輸入 4 季的北、中、南、東、西區的銷售量 ? 並計算季銷售量、區銷售量、總和

練習3 answer

練習4 : 簡易的20*20的五子棋

練習5 : 輸入10個學生的國文成績, 先排序列出(由小到大)、計算總分和平均成績

練習 4解答:

#include<stdio.h>

void main()
{
  int i,j,k,x,y;
  char a[22][22];

  for(i=1;i<=20;i=i+1) // 所有的格子都清成空的
  {
    for(j=1;j<=20;j=j+1)
    {
      a[i][j]=' ';
    }
  }

  for(k=1;k<=401;k=k+1) // 重覆下棋 400 次
  {
    printf("please input x,y (0 0 : end of game) ?"); // 要求使用者輸入下棋的座標
    scanf("%d %d",&x,&y);
    if(x==0 && y==0)
    {
      k=500;
    }

    if(k%2==1) // 如果是奇數步,則下X, 偶數步,則下O
    {
      a[x][y]='X';
    }
    else
    {
      a[x][y]='O';
    }

    printf(" | x \n"); //重畫棋盤
    printf(" |0 1 2 \n");
    printf(" |12345678901234567890 \n");
    printf("---+----------------------\n");

    for(j=1;j<=20;j=j+1) //把棋子一個一個的畫上去
    {
      printf(" %2d|",j);
      for(i=1;i<=20;i=i+1)
      {
        printf("%c",a[i][j]);
      }
      printf("\n");
    }

  }
}

練習 5解答:

檢定二的100分題目,考後公佈

C 語言 講義   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  A  B  C