昨天要统计下我们班那些人的毕设报告没有交。提交名单是提交在一个excel里,其实可以用excel自带的sort来查一下就行了。不过为了装逼一把,我就打算写个程序来做这件事情。最正常的应该是用cpp来写了,因为我最熟悉这个。不过打算挑战下自己,我就写了四个语言版本的。c++/java/python/go
花时间最多的就是go的版本,感觉go和C差别还是有点大的。其它三个给我的感觉都是C家族语言。代码就是下面的:
package main
import "os"
import "fmt"
import "bufio"
import "sort"
func main(){
arr :=make([]string,0)
filename:="num.txt"
fp,_:=os.Open(filename)
r:=bufio.NewReader(fp)
content,e:=r.ReadString('\n')
for e==nil {
arr=append(arr,string(content))
content,e=r.ReadString('\n')
}
sort.Strings(arr)
var i=0
for ;i<len(arr);i++ {
fmt.Print(arr[i])
}
fmt.Print("The size is: ",len(arr))
}
C++ version
#include <fstream>
#include <iostream>
#include <cstddef>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main(int argc,char **argv){
vector<string> ivec;
string num;
fstream f("num.txt");
while(!f.eof()){
f>>num;
ivec.push_back(num);
}
std::sort(ivec.begin(),ivec.end());
for(auto it : ivec)
cout<<it<<endl;
return 0;
}
Python version
#coding=utf-8
fp=open("num.txt",'r');
l=list(fp)
l.sort()
for con in l:
print(con,end="")
Java version
import java.io.*;
import java.util.*;
public class findID{
private String filename="num.txt";
private LinkedList<String> ll=new LinkedList<String>();
private int i=0;
private void readData()throws IOException{
String s=null;
BufferedReader br=new BufferedReader(new FileReader(filename));
while((s=br.readLine())!=null){
ll.add(s);
i++;
}
Collections.sort(ll);
}
private void printData()throws IOException{
while(!ll.isEmpty()){
String s=ll.pop();
System.out.println(s);
}
System.out.println("thers's " + i + " players");
}
public static void main(String[] args)throws IOException{
findID f=new findID();
f.readData();
f.printData();
}
}
这些东西也没什么,就是一个读取文件,排序,打印的逻辑。不过Python真是简洁呀,,6行就把事情做了。