2011年4月26日 星期二

期中考題

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

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

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

Q1.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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