2005-11-11

【Java】摸彩 → Random

後面一樣用布林Boolean下去做判斷,有嘗試用函式Function下去寫,不過失敗了!其random部分老師上課有讓我們抄原始碼sourse sode...阿翔就只把之前那猜拳的程式中間猜拳的部份換為random罷了!!
import java.io.*;
public class ex_random{
public static void main(String[]args) throws IOException{
boolean flag=true;
String str;
BufferedReader buf_YesNo;
buf_YesNo=new BufferedReader(new InputStreamReader(System.in));
System.out.println("摸彩摸彩..祝你中頭彩!");
do{
int i,intTransform;
double doubleAR;
System.out.println();
for(i=1;i<11;i++){
doubleAR = Math.random();
intTransform = (int)(doubleAR*100);
System.out.println("第\t"+i+"\t次為 "+intTransform);
}
System.out.println();

char charYesNo;
System.out.print("輸入Y繼續,N離開 → ");
str=buf_YesNo.readLine();
charYesNo=str.charAt(0);
if(charYesNo=='Y' || charYesNo=='y'){
System.out.println("====程式繼續====");
flag=true;
}else if(charYesNo=='N' || charYesNo=='n'){
System.out.println("====程式結束====");
flag=false;
}else{
System.out.println("====輸入錯誤====");
flag=false;
}
}while(flag);
System.out.println("");
}
}

2005-11-06

【Java】猜生日

知道阿翔我的生日嘛!?不知道的話就抓下面source code來玩玩唄!
PS:已經忘記是第幾次的作業了~~ 裡面用到:do while、if else、輸入字元....
/*猜生日,輸入兩變數用if else下去判斷 */

import java.io.*;
public class ex_birthday{
public static void main(String[]args) throws IOException{
int intMonth,intDay;
do{
String strMonth,strDay;
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.print("請猜猜阿翔的生日 → 幾月 → ");
strMonth=buf.readLine();
      //↑將輸入的文字指定給字串變數str_Month
intMonth=Integer.parseInt(strMonth);
System.out.println("你猜的月份為:"+intMonth);

System.out.print("請猜猜阿翔的生日 → 幾日 →");
strDay=buf.readLine();
      //↑將輸入的文字指定給字串變數str_Day
intDay=Integer.parseInt(strDay);
System.out.println("你猜的日期為:"+intDay);
System.out.println("");
if(intMonth>2){
System.out.println("猜錯月份啦,再月份猜小一點!");

if(intDay>18){
System.out.println("猜錯日期啦,日期再猜小一點!");
}else if(intDay==18){
System.out.println("猜對日期啦,恭喜你猜對日期!");
}else{
System.out.println("猜錯日期啦,在日期猜大一點!");
}

}else if(intMonth==2){
System.out.println("猜對月份啦,恭喜你猜對月份!");
if(intDay>18){
System.out.println("猜錯日期啦,日期再猜小一點!");
}else if(intDay==18){
System.out.println("猜對日期啦,恭喜你猜對日期!");
break;
}else{
System.out.println("猜錯日期啦,在日期猜大一點!");
}

}else{
System.out.println("猜錯月份啦,在猜大一點唄!");

if(intDay>18){
System.out.println("猜錯日期啦,日期再猜小一點!");
}else if(intDay==18){
System.out.println("猜對日期啦,恭喜你猜對日期!");
}else{
System.out.println("猜錯日期啦,在日期猜大一點!");
}
}
System.out.println("-------------------------------------");
}while(intDay!=18 || intMonth!=2);
}
}

2005-11-04

【Java】作弊的電腦 → 猜不贏的拳

11/4(五)課堂練習+作業...作弊的電腦,顧名思義就是...不管你怎麼猜都是電腦贏
不過目前的阿翔所寫的這程式裡還有些BUG,自己有發現的是:
 一、在出拳時,輸入英文字母會整個當掉!
 二、輸入的值是用整數下去判斷,而不是用字元!如用字元,只要鍵值第一字母符合就會跑的過,而後面的值將不再判斷!
import java.io.*;
public class ex_cheat{
public static void main(String[]args) throws IOException{
int num,i;
boolean flag=true;
String str;
BufferedReader buf_Boxing,buf_YesNo;
buf_Boxing=new BufferedReader(new InputStreamReader(System.in));
buf_YesNo=new BufferedReader(new InputStreamReader(System.in));
System.out.print("來猜拳唄");
System.out.print("0=石頭,1=布,2=剪刀");
do{
char charYesNo;
int intBoxing;
System.out.println("請出拳:");
str=buf_Boxing.readLine();// = c語言的scanf
intBoxing = Integer.parseInt(str); //str.charAt(str)←轉整數
switch(intBoxing){
case 0:
System.out.println("電腦出布,你輸了!");
break;
case 1:
System.out.println("電腦出剪刀,你輸了!");
break;
case 2:
System.out.println("電腦出石頭,你輸了!");
break;
default:
System.out.println("電腦耍賴,他不出= =+");
break;
}
System.out.print("輸入Y繼續,N離開 → ");
str=buf_YesNo.readLine();
charYesNo=str.charAt(0);
if(charYesNo=='Y' || charYesNo=='y'){
System.out.println("====程式繼續====");
System.out.println();
flag=true;
}else if(charYesNo=='N' || charYesNo=='n'){
System.out.println("====程式結束====");
System.out.println();
flag=false;
break;
}else{
System.out.println("====輸入錯誤====");
System.out.println();
flag=false;
}
}while(flag);
System.out.println("");
}
}

2005-06-20

【C】Call by Address - No.47

47.編寫一氣泡排序法程式可將 int a [10] = {45, 23, 18, 10, 6, 8, 67, 98, 30, 50 } 由小到大排列出來,其中必須呼叫一交換資料 swap(int x, int y) 的函數, 其功能為變數 x 和 y 的內容交換。(Call by Address)
 #include
#include
void swap(int *,int *);
int a[10]={78,14,25,63,47,28,17,52,61,44};
int main(){
int i,j,t;
printf("原陣列為:");
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
printf("\n");
printf("排列後為:");
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]<a[j]){
swap(&a[i],&a[j]);
}
}
}
for(t=0;t<10;t++){
printf("%d ",a[t]);
}
system("pause");
return 0;
}

void swap( int *x, int *y){
int temp,t;
temp = *x;
*x = *y;
*y = temp;
return 0;
}

2005-06-19

【C】大型程式 - No.54

這寫了一個禮拜才寫出來的程式,目前還有個小Bug..就是『(5) 可列出不及格(fail)學生姓名(由平均分數)』這部分要嘛就及格跟不及格一起印出,要嘛就只能印出及格...真的盡力了。

/*54.編寫一個學生成績登錄之應用程式,每一學生的資料內容如同第 50 題所示,並可將學生資料內容儲存於檔案內。該程式具有下列處理資料的功能:(利用 case)
(1) 顯示所有學生資料內容
(2) 可查詢每一學生的資料
(3) 可增加登錄及修改學生資料
(4) 可計算學生成績 (總分及平均)
(5) 可列出不及格(fail)學生姓名(由平均分數)
(6) 可由大到小排列(permutation)學生成績
編寫時,可由一個功能測試成功,再寫下一個功能,能寫愈多功能表示功力愈強。*/
/*宣告副程式 ↓*/
void display();
void print();
void look_up();
void add_correct();
void sum_average();
void fail();
void btos();
void single();


/*宣告陣列 ↓*/
struct score{
int no; /*由於要跟輸入的值做比較so把宣告改為整數or
參考課本c-10 char *strcmp(...)的Function*/
char name[10];
int English;
int Math;
int Program;
int sum;
int Average;
};
struct score s[7]={
{49311113,"郭佳綺",90,98,99},
{49311115,"李秋豔",89,88,100},
{49311130,"方美瑾",78,84,98},
{49311135,"劉軒妤",92,85,86},
{49311143,"佘宛容",89,89,97},
{49311147,"林三富",50,40,60},
{49311154,"林孟淑",87,86,73}
};


/*程式主體 ↓*/
int main(){
int select;
display();
scanf("%d",&select);
while(select!=8){
switch(select){
case 1:
print();
break;
case 2:
look_up();
break;
case 3:
add_correct();
break;
case 4:
sum_average();
break;
case 5:
fail();
break;
case 6:
btos();
break;
case 7:
single();
break;
default:
printf("請重新輸入!");
break;
}
display();
scanf("%d",&select);
}
printf("謝謝使用,銘記凍仁牌c語言..\n");
system("pause");
return 0;
}


/*選單*/
void display(){
printf("\n");
printf("請選擇下列工作: \n");
printf("\t (1) 顯示所有學生資料內容 \n");
printf("\t (2) 查詢每一學生的資料 \n");
printf("\t (3) 修改學生資料 \n");
printf("\t (4) 計算學生成績(總分及平均)\n");
printf("\t (5) 列出不及格學生姓名 \n");
printf("\t (6) 由大到小排列學生成績 \n");
printf("\t (7) 單科總分及平均\n");
printf("\t (8) 離開 \n");
printf("請選擇您想執行的工作 => ");
}


/*(1) 顯示所有學生資料內容 ↓ - No.50 */
void print(){
int i;
printf(" ============================================================\n");
printf(" 學號\t 姓名\t英文\t數學\t程式\n");
printf(" ============================================================\n");
for(i=0;i<7;i++){
s[i].sum = s[i].English + s[i].Math + s[i].Program
;/*總分=英文+數學+程式*/
s[i].Average = (s[i].English + s[i].Math + s[i].Program)/3;/*(平均=英文+數學+程式)/3*/
printf(" %d %s\t %d\t %d\t %d\n",s[i].no,s[i].name,s[i].English,s[i].Math,s[i].Program);
}
printf(" ============================================================\n");
}


/*(2) 查詢每一學生的資料 ↓- No.52 */
void look_up(){
int i,key;
printf(" ============================================================\n");
for(i=0;i<7;i++){
s[i].sum = s[i].English + s[i].Math + s[i].Program;/*總分*/
s[i].Average = (s[i].English + s[i].Math + s[i].Program)/3;/*平均*/
}
printf("請輸入學號: ");
scanf("%d",&key);
printf(" ============================================================\n");
/*fflush(stdin);*/
for(i=0;i<7;i++){
if(key==s[i].no){
printf("%d %s 英文%d 數學 %d 程式 %d 總分 %d 平均 %d\n",s[i].no,s[i].name,s[i].English,s[i].Math,s[i].Program,s[i].sum,s[i].Average);
break;
}
}
if(key!=s[i].no){
printf("%d 尚未登入資料!\n",key);
}
printf(" ============================================================\n");
}


/*(3) 修改學生資料 ↓*/
void add_correct(){
int math,english,program,key,i;
printf(" ============================================================\n");
printf("請輸入學號: ");
scanf("%d",&key);
printf(" ============================================================\n");
for(i=0;i<7;i++){
if(key==s[i].no){
printf("%s 同學\n",s[i].name);
printf("英文 %d\t修改為\t",s[i].English);
scanf("%d",&english);
s[i].English = english;

printf("數學 %d\t修改為\t",s[i].Math);
scanf("%d",&math);
s[i].Math = math;

printf("程式 %d\t修改為\t",s[i].Program);
scanf("%d",&program);
s[i].Program = program;

s[i].sum = s[i].English + s[i].Math + s[i].Program;/*總分*/
s[i].Average = (s[i].English + s[i].Math + s[i].Program)/3;/*平均*/
printf("%d %s 英文 %d 數學 %d 程式 %d 總分 %d 平均 %d",s[i].no,s[i].name,s[i].English,s[i].Math,s[i].Program,s[i].sum,s[i].Average);
break;
}
}
if(key!=s[i].no){
printf(" %d 尚未登入資料!\n",key);
}
printf(" \n============================================================\n");
}


/*(4) 計算學生成績(總分及平均) ↓- No.50 */
void sum_average(){
int i;
printf(" ============================================================\n");
printf(" 學號\t 姓名\t英文\t數學\t程式\t總分\t平均\n");
printf(" ============================================================\n");
for(i=0;i<7;i++){
s[i].sum = s[i].English + s[i].Math + s[i].Program;/*總分*/
s[i].Average = (s[i].English + s[i].Math + s[i].Program)/3;/*平均*/
printf(" %d %s\t %d\t %d\t %d\t %d\t %d\n",s[i].no,s[i].name,s[i].English,s[i].Math,s[i].Program,s[i].sum,s[i].Average);
}
printf(" ============================================================\n");
}


/*(5)列出不及格的學生(由平均分數) ↓*/
void fail(){
int i,flag=0,key;
printf(" ============================================================\n");
for(i=0;i<7;i++){
s[i].Average = (s[i].English + s[i].Math + s[i].Program)/3;/*平均*/
if(s[i].Average < 60){
printf(" %d %s 學期成績 %d 不及格\n",s[i].no,s[i].name,s[i].Average);
printf("\n");
}
}
if(s[i].Average >= 60){
printf(" 全班學期成績及格!\n");
}/*及格的效果做不出來!!*/
printf(" ============================================================\n");
}


/*(6) 由大到小排列學生成績 ↓- No.51 */
void btos(){
int i,j;
struct score temp;
for(i=0;i<7;i++){
for(j=i+1;j<7;j++){
if(s[i].Average < s[j].Average){
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
printf(" ============================================================\n");
printf(" 學號\t 姓名\t英文\t數學\t程式\t總分\t平均\n");
printf(" ============================================================\n");
for(i=0;i<7;i++){
s[i].sum = s[i].English + s[i].Math + s[i].Program;/*總分*/
s[i].Average = (s[i].English + s[i].Math + s[i].Program)/3;/*平均*/
printf(" %d %s\t %d\t %d\t %d\t %d\t %d\n",s[i].no,s[i].name,s[i].English,s[i].Math,s[i].Program,s[i].sum,s[i].Average);
}
printf(" ============================================================\n");
}


/*(7) 單科總分及平均 ↓*/
void single(){
int i,sum_English=0,sum_Math=0,sum_Program=0;
printf(" ============================================================\n");
for(i=0;i<7;i++){
sum_English += s[i].English;/*英文分數相加*/
sum_Math += s[i].Math;/*數學分數相加*/
sum_Program += s[i].Program;/*程式分數相加*/
}
printf("英文總分 = %d\t數學總分 = %d\t程式總分 = %d\n",sum_English,sum_Math,sum_Program);
printf("英文平均 = %d\t數學平均 = %d\t程式平均 = %d\n",sum_English/3,sum_Math/3,sum_Program/3);
printf(" ============================================================\n");
}