【Go语言求助】为什么我的go代码过不去?
查看原帖
【Go语言求助】为什么我的go代码过不去?
475798
wanlxj0429楼主2021/6/18 19:09

明明是相同的算法思路,C++能过得去而golang却过不去? 以下是go代码


package main
import(
	"fmt"
)
func main(){
	var(
		a,b,c,d int
		p [3]int
		result [3]string
		j,k int
		is1,is2 bool
	)
	fmt.Scanf("%d %d %d %d",&a,&b,&c,&d)
	fmt.Scanf("%d %d %d",&p[0],&p[1],&p[2])
	for i := 0;i < 3;i += 1{
		j = 0
		k = 0
		is1 = true
		is2 = true
		for j < p[i]{
			if is1{
				j += a
				is1 =! is1
			}else {
				j += b
				is1 =! is1
			}
		}
		for k < p[i]{
			if is2{
				k += c
				is2 =! is2
			}else{
				k += d
				is2 =! is2
			}
		}
		if !is1 && !is2{
			result[i] = "both"
		}else if (is1 && !is2) || (!is1 && is2){
			result[i] = "one"
		}else if is1 && is2 {
			result[i] = "none"
		}
	}
	fmt.Printf("%s\n%s\n%s",result[0],result[1],result[2])
}

接着是c++的代码:


#include <iostream>
using namespace std;

int main(){
    int a,b,c,d,p[3],j,k;
    bool is1,is2;
    string result[3];
    cin >> a >> b >> c >> d >> p[0] >> p[1] >> p[2];
    for(int i = 0;i < 3;i += 1){
        is1 = true;
        is2 = true;
        j = 0;
        k = 0;
        while(p[i] > j){
            if(is1){
                j += a;
                is1 =! is1;
            }else{
                j += b;
                is1 =! is1;
            }
        }
        while(p[i] > k){
            if(is2){
                k += c;
                is2 =! is2;
            }else{
                k += d;
                is2 =! is2;
            }
        }
        if(!is1 && !is2){
            result[i] = "both";
        }else if(is1 && !is2){
            result[i] = "one";
        }else if(!is1 && is2){
            result[i] = "one";
        }else{
            result[i] = "none";
        }
        cout << result[i] << endl;
    }
    return 0;
}

2021/6/18 19:09
加载中...