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);
}

results matching ""

    No results matching ""