2011年4月26日 星期二

期中考題

一. 利用C語言寫一程式,並利用1個變數完成一數列級數控制,程式內請使用自訂函式來完成。

數列級數的規則為:奇數相加減,計算到設定變數的數量

例:變數為9,計算的值為1-3+5-7+9-11+13-15+17=9
1~17之間有9個數字做運算,中間的符號為-+-+..-+互相交 替,求出運算結果即可

Q1.c
#include<stdio.h>
void plus(int end){ //end為數字的數量
  int i,y=1,total=0; //y為數字之初始值 total為累加值
  for(i=0;i<end;i++){ //控制數字之數量
    if(i>0){ //大於一個數字才開始做加減
      if(i%2!=0){ //判斷+- 偶數為減 奇數為加
        total-=y; //將total值加或減
        printf("-%d",y);
      }
      else{
        total+=y;
        printf("+%d",y);
      }
    }
    else {
      total+=y;
      printf("%d",y);
    }
    y=y+2; //每次回圈y+2 遞增
  }
  printf("=%d",total);
}
main(){
  plus(15);//呼叫自訂函式
  return 0;  
}

#include<stdio.h>
void plus(int num){
  int i,s=-1,sum=0;
  for(i=1;i<num*2;i+=2) {
    s *= -1;
    sum += i*s;
    printf("%+d",i*s);
  }
  printf("=%d\n",sum);
}
int main(){
  plus(5);
  return 0;
}
二. 把上題改成PHP並放上CMS裡,使用GET指令,讓網址上可輸入1個變數
index.php
<?php
function hello(){
 $end=$_GET["end"];
 $y=1;
 $total=0;
 $output="";
 for($i=0;$i<$end;$i++) {
  if($i>0){
   if($i%2!=0) {
    $total-=$y;
    $output.="-".$y;
   } else{
    $total+=$y;
    $output.="+".$y;
   }
  } else {
   $total+=$y;
   $output.=$y;
  }
  $y=$y+2;
 }
 $output.= "=".$total;
 return $output;
}
?>

一. 請利用C語言寫出下列圖形,利用1變數控制其圖形大小,並使用自訂函式做程式。
註:圖中0與1可自行更換。
Q2.c
#include<stdio.h>
void print(int end){
  int e,i,j,s,k;
  for(i=1;i<=end;i++){ //end 控制做幾次
    for(s=1;s<i;s++){ //s列印1前面的空格 但第一次時不列印 所以s<i
      printf(" ");
    }
    for(e=i;e<=end;e++){ //e 控制列印1的數量(漸減)
      printf("1");
    }
    printf("\n"); //換行
    for(j=i;j<end;j++){ //j 列印0前面的空格
      printf(" ");
    }
    //for(k=end-i;k<end;k++){ 
    for(k=1;k<=i;k++){ //k 控制列印0的數量(漸增)
      printf("0");
    }
    printf("\n");
  }  
}
main(){
  print(3);//呼叫自訂函式
  return 0;
}


二. 把上題改成PHP並放上CMS裡,使用GET指令,讓網址上可輸入1個變數
index.php
<?php
function pri(){
  $end=$_GET["end"];// 使用get 直接從網址列中輸入變數值
  $output="";
  for($i=1;$i<=$end;$i++){
    for($s=1;$s<$i;$s++){
      $output.=" ";// 空格問題 無法對齊 請使用全行
    }
    for($e=$i;$e<=$end;$e++){
      $output.="1";
    }
    $output.="<br />";
    for($j=$i;$j<$end;$j++){
      $output.=" ";
    }
    for($k=$end-$i;$k<$end;$k++){
      $output.="0";
    }
    $output.="<br />";
  }
  return "<pre>".$output."</pre>"; //pre 元素可定義預格式化的文本。被包圍在 pre 元素中的文本通常會保留空格和換行符。而文本也會呈現为等寬字體。
}
?>



請使用Java語言撰寫一海嘯程式,
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制兩個變數,
第1個變數控制波浪大小,
第2個變數為輸出多少個波浪。
輸出3波結果如:

W
WW
WWW

01_tsunami.java
package tsunami; //package是一種管理容器 管理所定義的名稱避免發生衝突
public class Main { //定義一個類別
 static void tsunami(int num){ //建立一個名為海嘯的方法
  int i,j;
  for(i=1;i<=num;i++) { //每波海嘯距離
   for(j=0;j<i;j++) //增加海嘯的高度
    System.out.print("L"); //print為不換行列印
   System.out.println(""); //println為換行列印
  }
 }
 public static void main(String[] args) { //建立一個主要的方法
  int w;
  for(w=0;w<3;w++)
   tsunami(4); //呼叫海嘯方法
 }
}

請使用Java語言撰寫一訊號波程式,
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制三個變數,
第1個變數控制訊號波的大小,
第2個變數控制訊號波的高度,
第3個變數為輸出多少個訊號波。
波形解釋如圖:

輸出2波結果如:
S
S
S
SSSS
SSSS
SSSS
   S
   S
   S
SSSS
SSSS
SSSS
S
S
S
SSSS
SSSS
SSSS
   S
   S
   S
SSSS
SSSS
SSSS
02_square.java
package square; //package是一種管理容器 管理所定義的名稱避免發生衝突
public class Main { //定義一個類別
 static void square(int m, int n){ //建立一個名為square的方法
  int i,j;
  for(i=1;i<=m;i++) //每波訊號波距離
   System.out.println("S");
  for(i=1;i<=m;i++) {
   for(j=0;j<n;j++)
    System.out.print("S"); //print為不換行列印
   System.out.println(""); //println為換行列印
  }
  for(i=1;i<=m;i++) {
   for(j=1;j<n;j++)
    System.out.print(" ");
   System.out.println("S");
  }
  for(i=1;i<=m;i++) {
   for(j=0;j<n;j++)
    System.out.print("S");
   System.out.println("");
  }
 }
 public static void main(String[] args) { //建立一個主要的方法
  int w;
  for(w=0;w<2;w++)
   square(3,4); //呼叫square方法
 }
}

請使用Java語言撰寫一鋸齒程式,
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制兩個變數,
第1個變數控制鋸齒大小,
第2個變數為輸出多少個鋸齒。
04_sawtooth.java
package sawtooth; //package是一種管理容器 管理所定義的名稱避免發生衝突
public class Main { //定義一個類別
 static void sawtooth(int n){ //建立一個名為鋸齒的方法
  int i,j;
  for(i=1;i<=n;i++) {
   for(j=1;j<i;j++)
    System.out.print(" ");
   System.out.println("P");
  }
 }
 public static void main(String[] args) { //建立一個主要的方法
  int w;
  for(w=0;w<3;w++)
   sawtooth(4); //呼叫鋸齒方法
 }
}

2011年4月11日 星期一

Hello World Wave 範例

helloworld.java
package hello_world; //package是一種管理容器 管理所定義的名稱避免發生衝突
public class Main { //定義一個類別
    static int i,j,k; //宣告結構變數
    static void upwave(int b){ //前波浪
        for(i=0;i<=b;i++){
            System.out.print("Hello World"); //print為不換行列印
            for(j=0;j<=i;j++){
                System.out.print("!");
            }
            System.out.println(i); //println為換行列印
        }
    }
    static void downwave(int b){ //後波浪
        for(i=0;i<=b;i++){
            System.out.print("Hello World");
            for(j=0;j<=b-i;j++){
                System.out.print("!");
            }
            System.out.println(i);
        }
    }
    static void printC(int a,int b){ //宣告一個方法
        for(k=1;k<=a;k++){
            upwave(b);
            downwave(b);
        }
    }
    public static void main(String[] args) { //宣告一個名稱為main的方法
        printC(3,5); //呼叫printC函式
    }
}
完整專案下載: Eclipse Helloworld WaveNetbeans Helloworld Wave