| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖, 1 人收藏
标题:高手进来帮我改下程序,使其实现DNA的转录和翻译
只看楼主 加入收藏
qq407040
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-19
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:1 
高手进来帮我改下程序,使其实现DNA的转录和翻译
#include  <stdio.h>
#include  <stdlib.h>
#include  <string.h>
int main(void)
{
    char userDna[100];//用户输入的DNA序列
    char oppsitDna[100];//对应的DNA序列
    char mRna[100];//生成的mRNA序列
    int i;
    int length;//字符串的实际长度
    int end;//小于等于字符串长度的3的最大倍数
    enum Dtype{U = 0, C = 1, A = 2, G = 3, T = 4};
    char TypeNames[5]={'U','C','A','G','T'}; //mark
    int codeTable[4][4][4] = {

        {{13,13,10,10},{15,15,15,15},{18,18,20,20},{4,4,20,17}}, //Uline
        {{10,10,10,10},{14,14,14,14},{8,8,5,5},{1,1,1,1}}, //Cline
        {{9,9,9,12},{16,16,16,16},{2,2,11,11},{15,15,1,1}}, //Aline
        {{19,19,19,19},{0,0,0,0},{3,3,6,6},{7,7,7,7}}  //Gline
         };
    char nameTable[21][9] = {"丙氨酸", "精氨酸", "天冬酰胺", "天冬氨酸", "半胱氨酸",
                             "谷氨酰胺", "谷氨酸", "甘氨酸", "组氨酸","异亮氨酸",
                             "亮氨酸", "赖氨酸", "甲硫氨酸", "苯丙氨酸", "脯氨酸",
                             "丝氨酸", "苏氨酸", "色氨酸", "酪氨酸", "缬氨酸", "终止" };
    printf("请输入DNA单链序列:\n");
    scanf("%s",userDna);
    length = strlen(userDna);


    printf("输入的DNA序列为: -");
    for(i = 0; i  < length; i++)
    {          printf("%c", userDna[i]);
               printf("-");
    }
    printf("\n\n");
    for(i = 0;i  < length; i++)
    {          switch(userDna[i])
               {
                   case 'A':oppsitDna[i] = T;
                           mRna[i] = U;
                           break;
                   case 'T':oppsitDna[i] = A;
                           mRna[i] = A;
                           break;
                   case 'C':oppsitDna[i] = G;
                           mRna[i] = G;
                           break;
                   case 'G':oppsitDna[i] = C;
                           mRna[i] = C;
                           break;
                   default:break;
                 }
     }

     printf("对应的DNA单链为: -");
     for(i = 0; i  < length; i++)
     {
         printf("%c", oppsitDna[TypeNames[i]]); //mark
         printf("-");
      }
      printf("\n\n");
      printf("转录生成mRNA为: -");
      for(i = 0; i  < length; i++)
      {
          printf("%c", mRna[TypeNames[i]]);        //mark
          printf("-");
       }
       printf("\n\n");



       printf("翻译合成的蛋白质的氨基酸序列为: \n\n-");
       end = length / 3 * 3;
       for(i = 0;i != end;i += 3)
       {
           printf("%s", nameTable[codeTable[mRna[i]][mRna[i + 1]][mRna[i + 2]]]);
       }
        return 0;
}
搜索更多相关主题的帖子: 翻译 include 字符串 用户 
2011-11-22 00:19
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
收藏
得分:20 
你写的这个很不适用啊,谁的dna序列才100bp啊,你应当通过读取文件来输入序列,然后识别起始密码子和终止密码子,把CDS提取出来,然后翻译成蛋白质,至于你说的mRNA就很复杂了,如果是真核生物,你得有polyA,即使是原核生物你也得知道5‘-uts和3’-uts吧,否则就不是mRNA了,只能是很简单的一部分了。
这个程序写起来应当不难的。你找找一些免费软件的代码,里面应当有。
2011-11-22 09:15
快速回复:高手进来帮我改下程序,使其实现DNA的转录和翻译
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016010 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved