法一:(OJ通过)
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int n; while((scanf("%d",&n))!=EOF){ char data[10][101]; char ans[5]="ACGT"; int i=0,j=0,len=0; for(i=0;i<n;i++){ scanf("%s",data[i]); } len=strlen(data[0]); for(j=0;j<len;j++){ int max=0,count=0,tmp[4]={0}; for(i=0;i<n;i++){ if(data[i][j]=='A') tmp[0]++; if(data[i][j]=='C') tmp[1]++; if(data[i][j]=='G') tmp[2]++; if(data[i][j]=='T') tmp[3]++; } for(int k=0;k<4;k++){ if(max<tmp[k]){ max=tmp[k]; count=k; } } printf("%c",ans[count]); } } system("pause"); return 0;}法二(OJ是编译错误,但VS执行没问题)
#include <stdio.h>#include <stdlib.h>int main(){ int n; while((scanf("%d",&n))!=EOF){ char data[10][100]; int i,j,tmp[100][4]={0}; getchar(); for(i=0;i<n;i++){ j=0; do{ scanf("%c",&data[i][j++]); if(data[i][j-1]=='A') tmp[j-1][0]++; if(data[i][j-1]=='C') tmp[j-1][1]++; if(data[i][j-1]=='G') tmp[j-1][2]++; if(data[i][j-1]=='T') tmp[j-1][3]++; }while(data[i][j-1]!='\n'); } for(i=0;i<j-1;i++){ int t=0,ans=0; for(int k=0;k<4;k++){ if(t<tmp[i][k]){ t=tmp[i][k]; ans=k; } } switch(ans){ case 0: printf("A"); break; case 1: printf("C"); break; case 2: printf("G"); break; case 3: printf("T"); break; } } } system("pause"); return 0;}