1.婷婷某日將她從出門 去 7-11 選購麵包 排隊結帳 付款 走路回家的過程 一一記錄下來。是完成下列的問題:
(a)試繪製出適合的流程圖
(b)這個過程屬於哪一種結構?
ans
出門
|
7-11
|
選購麵包
|
排隊結帳
|
付款
|
走路回家
循序性結構(名詞真難計我腦中一直跑出順序性結構
2.小雯將她某日公園玩耍的情形記錄下來,一開始先玩翹翹板,接著溜滑梯10次 散步 盪鞦韆5次 看時間不早了,就趕緊回家吃飯。試完成下列的問題:
(a)是繪製出適合的流程圖。
(b)這個過程屬於哪一種結構?
Ans
翹翹板
|
溜滑梯---|
| |
| 迴圈10次
盪鞦韆---|
| |
| 迴圈10次
回家吃晚餐
屬於重覆性結構
5.2
3.試撰寫一程式,直接設定一個整數值,然後求此數的絕對值
ans:
import java.util.Scanner;
public class iplusf
{
public static void main (String args[])
{
int a,b;
Scanner scn=new Scanner(System.in);
a=scn.nextInt();
a=a>0?a:a*(-1);
System.out.println("|"+a+"|"+"="+a);
}
}
4.撰寫一程式,可由鍵盤讀入一個字元。若此字元是數字(即數字 0~9),則印出"此字元是數字"字串;若此字元是英文大 小寫字母(即a~z A~Z),則印出"此字元是英文字母"(註:Scanner類別並沒有字元輸入的method,因此可利用next()輸入字串,再用charAt(0)取出輸入字串裡的第0個字元)
ans:難 先略過
5.撰寫一程式,直接設定一個整數值,然後判斷它是奇數或偶數。
ans:
import java.util.Scanner;
public class iplusf
{
public static void main (String args[])
{
int a;
Scanner scn=new Scanner(System.in);
a=scn.nextInt();
if(a%2==0)
System.out.println("偶數");
else
System.out.println("奇數");
}
}
6.試將習題5改用條件運算值來撰寫
ans不懂題意與第五題差異??????
import java.util.Scanner;
public class iplusf
{
public static void main (String args[])
{
int a;
Scanner scn=new Scanner(System.in);
a=scn.nextInt();
if(a%2==0)
System.out.println("偶數");
else
System.out.println("奇數");
}
}
7.撰寫一程式利用if敘述判別所輸入的整數是否可以被5與6同時整除。若是,則印出"可被5與6同時整除!"字串,否則印出"不能被5與6同時整除!"字串。
ans
import java.util.Scanner;
public class iplusf
{
public static void main (String args[])
{
int a;
Scanner scn=new Scanner(System.in);
a=scn.nextInt();
if(a%5==0&a%6==0)
System.out.println("可被5與6同時整除!");
else
System.out.println("不可被5與6同時整除!");
}
}
8.試撰寫一程式,印出從1到100之間,所有可被16整除的數值
Ans:
import java.util.Scanner;
public class iplusf
{
public static void main (String args[])
{
int sum=0,i;
for(i=1;i<=100;i++)
{
if(i%16==0)
System.out.println(i);
}
}
}//印出16 32 48 64 80 96
9.試撰寫一程式,求出1到100之間所有整數平方總和。
Ans:
import java.util.Scanner;
public class iplusf
{
public static void main (String args[])
{
int sum=0,t=0;
for(int i=1;i<=100;i++)
{
t=i*i;
sum=sum+i*i;
System.out.println(i+"*"+i+"="+t);
System.out.println("sum="+sum);
}
}
}
10.試利用for迴圈撰寫出一個能產生如下圖結果的程式
1
12
123
1234
12345
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String[] args)
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
{
System.out.print(j);
}
System.out.print("\n");
}
}
}
11.試利用一程式,利用do while迴圈完成九九乘法表。
ans
public class iplusf
{
public static void main (String args[])
{
int i,j;
do{
for(i=2;i<=9;i++)
{ for(j=1;j<=9;j++)
{System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println() ;
}
}while(i<=9);
}
}
//印出
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
12.在下面的程式中,請式著分別指出變數sum i與num這3個變數的有效範圍,並指出其執行結果。public class iplusf
{
public static void main (String args[])
{
int sum=0,t=0;
for(int i=1;i<=100;i++)
{
t=i*i;
sum=sum+i*i;
System.out.println(i+"*"+i+"="+t);
System.out.println("sum="+sum);
}
}
}
10.試利用for迴圈撰寫出一個能產生如下圖結果的程式
1
12
123
1234
12345
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String[] args)
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
{
System.out.print(j);
}
System.out.print("\n");
}
}
}
11.試利用一程式,利用do while迴圈完成九九乘法表。
ans
public class iplusf
{
public static void main (String args[])
{
int i,j;
do{
for(i=2;i<=9;i++)
{ for(j=1;j<=9;j++)
{System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println() ;
}
}while(i<=9);
}
}
//印出
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
ans:
public class iplusf
{
public static void main(String args [])
{
int sum=1; //public static void main(String args [])的{}內為有效範圍
for(int i=1;i<=5;i++) //i有效範圍在for{}內為有效範圍
{
sum*=i;
System.out.println("i="+i+" , sum="+sum);
}
{
int num=5; //num{}內為有效範圍
System.out.println("num="+num);
}
System.out.println("sum="+sum);
}
}
13.迴圈主體若沒有敘述,即稱為空迴圈。雖然空迴圈看起來好像沒有做事,實際上是有耗費CPU的資源。以for迴圈為例,其空迴圈的格式如下
for(設定初值;判斷條件;設定增減輛);
在大括號內不加入任何的敘述,或是直接在迴圈for敘述後面加上分號,這種迴圈稱為空迴圈。空迴圈最主要的功能是用來延遲程式的執行,而某些初學者,卻常常不小心在迴圈敘述後面加上分號,無意間造成空迴圈,進而發生程式邏輯的錯誤。如下面的for迴圈,是用來加總1~10,卻不慎在for敘述後面加上分號,而造成錯誤的結果:
for(i=1;i<=10;i++); <------這個分號即成空迴圈
sum+=i;
下面的程式,是利用for空迴圈執行99999999次,進入迴圈前 後皆把迴圈控制變數i的值印出。部分的程式如下,請將它補上該有的程式,以完成本題的需要。
public class iplusf
{
public static void main(String args[])
{
int i=0; //迴圈控制變數
System.out.println("進入迴圈, i="+i);
// 請在此輸入程式碼,以完成本題的要求
for(i=0;i<99999999;i++);//我輸入 應該是這個意思吧
System.out.println("離開迴圈, i="+i);
}
}
//印出進入迴圈, i=0
離開迴圈, i=99999999
如果for();沒有這個分號就會印出 從1到9999999
14.假設有一條繩子長3500公尺,每天剪去一半的長度,請問需要花費幾天的時間繩子會短於3公尺(請用break敘述來撰寫)?
ans
public class iplusf
{
public static void main (String args[])
{
double i=3500,j=2,b,v=1;
for(v=1;v<1000;v++)
{
System.out.println(v+" times"+"we still have"+i+" M");
i=i/j;//這個想好久,有存入計算再存入的功能
if(i<3)
break;
}
System.out.println("we will take "+v+" days");
}
}
//印出
1.0 timeswe still have3500.0 M
2.0 timeswe still have1750.0 M
3.0 timeswe still have875.0 M
4.0 timeswe still have437.5 M
5.0 timeswe still have218.75 M
6.0 timeswe still have109.375 M
7.0 timeswe still have54.6875 M
8.0 timeswe still have27.34375 M
9.0 timeswe still have13.671875 M
10.0 timeswe still have6.8359375 M
11.0 timeswe still have3.41796875 M
we will take 11.0 days
15.試詳讀下面的程式碼,寫出完整程式及執行的結果:
for(int i=1;i<=10;i++)
{
if(i*i<50)
continue;
System.out.println("i="+i+" ,i*i="+i*i);
}
for(int i=1;i<=10;i++)
{
if(i*i<50)
continue;
System.out.println("i="+i+" ,i*i="+i*i);
}
ans
public class iplusf
{
public static void main (String args[])
{
for(int i=1;i<=10;i++)
{
if(i*i<50)
continue;
System.out.println("i="+i+" ,i*i="+i*i);
}
}
}
//印出
i=8 ,i*i=64
i=9 ,i*i=81 1到7<50 continue跳過從下一個迴圈開始
i=10 ,i*i=100
16.試撰寫一程式,利用break敘述來撰寫4個位數之密碼輸入的過程。使用者有三次輸入的機會,並須滿足下列的條件:
(a)如果密碼輸入不對,則會再視次的出現"請輸入密碼"字串。
(b)如果三次輸入都不對,則會印出"密碼輸入超過三次!!"字串,結束程式的執行。
(c)如果輸入正確,則印出"密碼輸入正確,歡迎使用本系統"字串。
本習題的部分程式碼如下,請將它補上該有的程式碼,以完成本題的需求:
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
Scanner scn=new Scanner(System.in);
int input ; //用來儲存使用者輸入的密碼變數
int cnt=0; //用來計數密碼輸入的次數的變數
int passwd=6128; //預設正確的密碼為6128
while(true)
{
System.out.print("請輸入密碼");
input=scn.nextInt();
// 請在此輸入程式碼,以完成本題的要求
}
}
}
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
Scanner scn=new Scanner(System.in);
int input ; //用來儲存使用者輸入的密碼變數
int cnt=0; //用來計數密碼輸入的次數的變數
int passwd=6128; //預設正確的密碼為6128
while(true) //直到正確才停止執行迴圈
{
System.out.print("請輸入密碼");
input=scn.nextInt();
// 請在此輸入程式碼,以完成本題的要求
if(input==passwd)
System.out.println("正確");
else
System.out.println("密碼錯誤");
cnt=cnt+1;
if(cnt>2)
{
System.out.println("密碼輸入超過三次!!");
break;
}
}
}
}
17.試閱讀下面的程式碼片段,寫出完整程式及執行結果 :
// hw5_17,continue 敘述練習
for(i=1; i<6; i++)
{
for(j=1 ; j<6; j++)
{
if(i<=j)
continue;
System.out.println("i="+i+" ,j="+j);
}
}
ans
public class iplusf
{
public static void main(String args[])
{
int i,j;
for(i=1; i<6; i++)
{
for(j=1 ; j<6; j++)
{
if(i<=j)
continue;
System.out.println("i="+i+" ,j="+j);
}
}
}
}
//印出
i=2 ,j=1
i=3 ,j=1
i=3 ,j=2
i=4 ,j=1
i=4 ,j=2
i=4 ,j=3
i=5 ,j=1
i=5 ,j=2
i=5 ,j=3
i=5 ,j=4
18.試撰寫一程式,利用continue敘述,找出小於45的最大質數。
ans
public class iplusf
{
public static void main(String args[])
{
int i,j,b=0;
for(i=2; i<=46; i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
System.out.println("質數= "+i);
}
}
//尚未解題成功暫時答案
19.是由程式中直接設定一個1~7之間的整數 day,代表星期一到星期日。若 day的值是1~5,則印出"今天要上班",若 day的值是6~7,則印出"今天要休息",若 day的值不是1~7,則印出"輸入錯誤"。
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
System.out.print("輸入一個1到7之間的數字");
int i,b=0;
Scanner scn=new Scanner(System.in);
i=scn.nextInt();
switch(i)
{
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.print("今天要上班");
break;
case 6:
case 7:
System.out.print("今天休息");
break;
default:
System.out.print("輸入錯誤");
}
}
}
20.試由程式中直接設定一個 1~12數值,如果超出此範圍,則印出"月份不存在",否則利用 switch 印出相對應的季節:
3~5: 春天
6~8: 夏天
9~11:秋天
1,2,12:冬天
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
System.out.print("輸入一個1到12之間的數字");
int i,b=0;
Scanner scn=new Scanner(System.in);
i=scn.nextInt();
switch(i)
{
case 3:
case 4:
case 5:
System.out.print("春天");
break;
case 6:
case 7:
case 8:
System.out.print("夏天");
break;
case 9:
case 10:
case 11:
System.out.print("秋天");
break;
case 1:
case 2:
case 12:
System.out.print("冬天");
break;
default:
System.out.print("月份不存在");
}
}
}
21. 試由程式中直接設定一個 1~12之間的整數 month,代表一年的12個月份。 若 month的值 1,2,month 的值是7,8,則印出"暑假",若 month 的值 9~12,則印出"上學期",若month的值是3~6,則印出 "下學期" ,若 month的值不是 1~12,則印出"不存在"。
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
System.out.print("輸入一個1到12之間的數字");
int i,b=0;
Scanner scn=new Scanner(System.in);
i=scn.nextInt();
switch(i)
{
case 1:
case 2:
System.out.print("暑假");
break;
case 3:
case 4:
case 5:
case 6:
System.out.print("下學期");
break;
case 7:
case 8:
System.out.print("暑假");
break;
case 9:
case 10:
case 11:
case 12:
System.out.print("上學期");
break;
default:
System.out.print("不存在");
}
}
}
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
Scanner scn=new Scanner(System.in);
int input ; //用來儲存使用者輸入的密碼變數
int cnt=0; //用來計數密碼輸入的次數的變數
int passwd=6128; //預設正確的密碼為6128
while(true) //直到正確才停止執行迴圈
{
System.out.print("請輸入密碼");
input=scn.nextInt();
// 請在此輸入程式碼,以完成本題的要求
if(input==passwd)
System.out.println("正確");
else
System.out.println("密碼錯誤");
cnt=cnt+1;
if(cnt>2)
{
System.out.println("密碼輸入超過三次!!");
break;
}
}
}
}
17.試閱讀下面的程式碼片段,寫出完整程式及執行結果 :
// hw5_17,continue 敘述練習
for(i=1; i<6; i++)
{
for(j=1 ; j<6; j++)
{
if(i<=j)
continue;
System.out.println("i="+i+" ,j="+j);
}
}
ans
public class iplusf
{
public static void main(String args[])
{
int i,j;
for(i=1; i<6; i++)
{
for(j=1 ; j<6; j++)
{
if(i<=j)
continue;
System.out.println("i="+i+" ,j="+j);
}
}
}
}
//印出
i=2 ,j=1
i=3 ,j=1
i=3 ,j=2
i=4 ,j=1
i=4 ,j=2
i=4 ,j=3
i=5 ,j=1
i=5 ,j=2
i=5 ,j=3
i=5 ,j=4
18.試撰寫一程式,利用continue敘述,找出小於45的最大質數。
ans
public class iplusf
{
public static void main(String args[])
{
int i,j,b=0;
for(i=2; i<=46; i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
System.out.println("質數= "+i);
}
}
//尚未解題成功暫時答案
19.是由程式中直接設定一個1~7之間的整數 day,代表星期一到星期日。若 day的值是1~5,則印出"今天要上班",若 day的值是6~7,則印出"今天要休息",若 day的值不是1~7,則印出"輸入錯誤"。
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
System.out.print("輸入一個1到7之間的數字");
int i,b=0;
Scanner scn=new Scanner(System.in);
i=scn.nextInt();
switch(i)
{
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.print("今天要上班");
break;
case 6:
case 7:
System.out.print("今天休息");
break;
default:
System.out.print("輸入錯誤");
}
}
}
20.試由程式中直接設定一個 1~12數值,如果超出此範圍,則印出"月份不存在",否則利用 switch 印出相對應的季節:
3~5: 春天
6~8: 夏天
9~11:秋天
1,2,12:冬天
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
System.out.print("輸入一個1到12之間的數字");
int i,b=0;
Scanner scn=new Scanner(System.in);
i=scn.nextInt();
switch(i)
{
case 3:
case 4:
case 5:
System.out.print("春天");
break;
case 6:
case 7:
case 8:
System.out.print("夏天");
break;
case 9:
case 10:
case 11:
System.out.print("秋天");
break;
case 1:
case 2:
case 12:
System.out.print("冬天");
break;
default:
System.out.print("月份不存在");
}
}
}
21. 試由程式中直接設定一個 1~12之間的整數 month,代表一年的12個月份。 若 month的值 1,2,month 的值是7,8,則印出"暑假",若 month 的值 9~12,則印出"上學期",若month的值是3~6,則印出 "下學期" ,若 month的值不是 1~12,則印出"不存在"。
ans
import java.util.Scanner;
public class iplusf
{
public static void main(String args[])
{
System.out.print("輸入一個1到12之間的數字");
int i,b=0;
Scanner scn=new Scanner(System.in);
i=scn.nextInt();
switch(i)
{
case 1:
case 2:
System.out.print("暑假");
break;
case 3:
case 4:
case 5:
case 6:
System.out.print("下學期");
break;
case 7:
case 8:
System.out.print("暑假");
break;
case 9:
case 10:
case 11:
case 12:
System.out.print("上學期");
break;
default:
System.out.print("不存在");
}
}
}
沒有留言:
張貼留言