106-1習題5
1糖果紙
問題描述: 糖果店購買糖果後,吃完的糖果紙,集滿三張可以再換一顆糖果,現在甲購買了 n 顆糖果,並且兌換糖果,請問甲實際上,總共可以得到幾顆糖果。 輸入說明: 請出入購買的糖果數 n, n < 100 。 輸出說明: 請算出甲實際上總共可以得到幾顆糖。
c
#include <stdio.h>
int main(int argc, char *argv[])
{
int in, n, add=0, remainder;
int total;
in=atoi(argv[1]);
total = n = in;
add = n / 3;
remainder = n % 3;
while (add >0) {//是不是可以再換糖果->while
total += add;
n = add + remainder;
add = n /3;
remainder = n % 3;
}
printf("input=%d ans=%d\n", in, total);
return 0;
}
java
public class q1main {
public static void main(String[] args) {
int in, n, add=0, remainder;
int total;
in=Integer.parseInt(args[0]);
total = n = in;
add = n / 3;
remainder = n % 3;
while (add >0) {//是不是可以再換糖果->while
total += add;
n = add + remainder;
add = n /3;
remainder = n % 3;
}
System.out.printf("input = %2d ans =%2d\n", in, total);
}
}
go
package main
import "fmt"
import "os"
import "strconv"
func main() {
inp , _ := strconv.Atoi(os.Args[1])
total := inp
n := inp
add := n /3
remainder := n % 3
for add >0 {//是不是可以再換糖果->while
total += add
n = add + remainder
add = n / 3
remainder = n % 3
}
fmt.Printf("input=%d ans=%d\n", inp, total)
}
2三位數字摸彩
問題描述: 現場有一個抽獎箱,抽獎箱內有五個球,每個球有不同的阿拉伯數字,由現場觀眾抽出三個球,組合成一個最大的三位數的數字,請問有多少個數字,請由最大到小列出所有可能的數字 輸入說明: 例如: 輸入五個數字: 3 4 5 6 7 輸出為: 765 764 763 754 753 743 654 653 643 543
c
#include <stdio.h>
#include <stdlib.h>
void insertion_sort(int arr[], int len)
{
int i,j,temp;
for (i = 1 ; i < len ; i++ ){
temp = arr[i];
for (j = i; j > 0 && arr[j-1] < temp ; j--){
arr[j] = arr[j-1];
}
arr[j] = temp;
}
}
int main(int argc, char *argv[])
{
int in[5];//array
int i, j, k;
int digit3 = 0;
in[0]=atoi(argv[1]);
in[1]=atoi(argv[2]);
in[2]=atoi(argv[3]);
in[3]=atoi(argv[4]);
in[4]=atoi(argv[5]);
for (i=0; i< 5; i++)
printf("input=%d ", in[i]);
printf("\n");
insertion_sort(in, 5);
for (i=0; i< 5; i++)
printf("input=%d ", in[i]);
printf("\n");
for (i=0; i<5; i++){//百位數
for (j=i+1; j <5; j++){//十位數
for (k=j+1; k <5; k++){//個位數
digit3 = in[i]*100 + in[j]*10 +in[k];
printf("%d\n", digit3);
}
}
}
return 0;
}
java
import java.util.Arrays;
import java.util.Collections;
public class q2main {
public static void insertion_sort( int[] arr ){
for( int i=0; i<arr.length-1; i++ ) {
for( int j=i+1; j>0; j-- ) {
if( arr[j-1] >= arr[j] )
break;
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
public static void main(String[] args) {
int[] in = new int[5];//array
in[0]=Integer.parseInt(args[0]);
in[1]=Integer.parseInt(args[1]);
in[2]=Integer.parseInt(args[2]);
in[3]=Integer.parseInt(args[3]);
in[4]=Integer.parseInt(args[4]);
for (int i=0; i< 5; i++)
System.out.printf("input=%d ", in[i]);
System.out.printf("\n");
insertion_sort(in);
for (int i=0; i< 5; i++)
System.out.printf("sorted=%d ", in[i]);
System.out.printf("\n");
for (int i=0; i<5; i++){//百位數
for (int j=i+1; j <5; j++){//十位數
for (int k=j+1; k <5; k++){//個位數
int digit3 = in[i]*100 + in[j]*10 +in[k];
System.out.printf("%d\n", digit3);
}
}
}
}
}
go
package main
import "fmt"
import "os"
import "strconv"
func InsertSort(array []int) {
n := len(array)
if n < 2 {
return
}
for i := 1; i < n; i++ {
for j := i - 1; j >= 0; j-- {
if array[j] < array[j+1] {
array[j], array[j+1] = array[j+1],array[j]
}else{
break
}
}
}
}
func main() {
//var in [5]int //array
in := make([]int, 5)
for i := 0; i < 5; i++ {
inp , _ := strconv.Atoi(os.Args[i+1])
in[i] = inp
}
fmt.Println(in)
InsertSort(in)
fmt.Println(in)
for i:=0; i<5; i++{//百位數
for j:=i+1; j <5; j++{//十位數
for k:=j+1; k <5; k++{//個位數
digit3 := in[i]*100 + in[j]*10 +in[k];
fmt.Printf("%d\n", digit3);
}
}
}
}
3 尋找3個英文字母的樣式
問題描述 : 英文字母為 a-z 及 A-Z, 給一列英文字母之字串,大小寫有區分,在此英文字串中三個相鄰英文字母為 1 個樣式,例如 XYZ, xYZ, xyZ, ABC, aBc, ETc, DAT, dat, Pro 等皆為樣式 一列英文字串中分析樣式,找出現次數最多的樣式及次數,若出現次數最多的樣式有兩組以上,則依樣式英文字母 ASCII code 值的排序由小到大輸出,中間以空白分隔。 輸入說明 : 輸入 一列英文字母之字串 (a-z 及 A-Z) ,大小寫有區分。 字串最多500個字。 輸出說明 : 先輸出 出現次數最多樣式的 「次數」,再輸出「英文字母 樣式 」 ,以空白分隔。 XYzcXYzaXYz 3 XYz
c
#include <stdio.h>
int main(int argc, char *argv[])
{
//如果要用C寫很不容易
return 0;
}
java
import java.util.HashMap;
import java.util.Map;
public class q3 {
public static void main(String[] args) {
String strIn = args[0];
HashMap<String, Integer> myMap = new HashMap<String, Integer>();
for (int i = 0; i< strIn.length() -2; i++) {
String sub2 = strIn.substring(i, i+3);
if (myMap.containsKey(sub2)) {
myMap.put(sub2, myMap.get(sub2) + 1);
}
else {
myMap.put(sub2, 1);
}
}
int max = 0;
String ans ="";
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
if (value > max) {
max = value;
ans = key;
}
}
System.out.printf("%d %s\n", max, ans);
}
}
go
package main
import "os"
import "fmt"
func main() {
strIn := os.Args[1]
myMap := make(map[string]int)
for i := 0; i < len(strIn)-2; i++ {
sub2 := string(strIn[i:i+3])
if val, ok := myMap[sub2]; ok {
myMap[sub2] = val + 1
}else{
myMap[sub2] = 1
}
}
max := 0
var ans string
for key, value := range myMap{
if (value > max) {
max = value;
ans = key;
}
}
fmt.Printf("%d %s\n", max, ans);
}