#include <stdio.h>
#include <math.h>
int main()
{
char str[200], stu;
int i, j, n;
printf("请输入您要输入的字符串的长度n:\n");
scanf("%d",&n);
stu = getchar();
printf("请输入DNA单链序列:\n");
for(i=0; i<n; i++)
{
scanf("%c",&str[i]);
}
printf ("\n");
printf ("输入的DNA单链为:-");
for(i=0; i<n; i++)
{
printf ("%c-",str[i]);
}
printf ("\n");
printf ("\n");
printf ("对应的DNA单链为:-");
for(i=0; i<n; i++)
{
if(str[i] == 'A')
printf("T-");
else if(str[i] == 'T')
printf("A-");
else if(str[i] == 'G')
printf("C-");
else if(str[i] == 'C')
printf("G-");
}
printf ("\n");
printf ("\n");
printf ("转录生成的mRNA为:-");
for(i=0; i<n; i++)
{
if(str[i] == 'A')
printf("U-");
else if(str[i] == 'T')
printf("A-");
else if(str[i] == 'G')
printf("C-");
else if(str[i] == 'C')
printf("G-");
}
printf ("\n");
for(i=0; i<n; i++)
{
if(str[i] == 'A')
str[i] = 'U';
else if(str[i] == 'T')
str[i] = 'A';
else if(str[i] == 'G')
str[i] = 'C';
else if(str[i] == 'C')
str[i] = 'G';
}
printf ("\n");
printf ("翻译合成的蛋白质的氨基酸序列为:\n");
i = 0, j = n;
do
{
if((str[0] == 'A' || str[0] == 'G') && str[1] == 'U' && str[2] == 'G')
{
j = i;
break;
}
else
++i;
}while(j != n);
if(j == n)
{
printf("没有起始密码子!\n");
return 0;
}
for(; j < n; j += 3)
{
if((str[j] == 'U' && str[j + 1] == 'U' && str[j + 2] == 'U') || (str[j] == 'U' && str[j + 1] == 'U' && str[j + 2] == 'C'))
printf("-苯丙氨酸");
else if((str[j] == 'U' && str[j + 1] == 'U' && str[j + 2] == 'A') || (str[j] == 'U' && str[j + 1] == 'U' && str[j + 2] == 'G') || (str[j] == 'C' && str[j + 1] == 'U'))
printf("-亮氨酸");
else if((str[j] == 'U' && str[j + 1] == 'C') || (str[j] == 'A' && str[j + 1] == 'G' && str[j + 2] =='U') || (str[j] == 'A' && str[j + 1] == 'G' && str[j + 2] =='C'))
printf("-丝氨酸");
else if((str[j] == 'U' && str[j + 1] == 'A' && str[j + 2] == 'U') || (str[j] == 'U' && str[j + 1] == 'A' && str[j + 2] == 'C'))
printf("-骆氨酸");
else if((str[j] == 'U' && str[j + 1] == 'G' && str[j + 2] == 'U') || (str[j] == 'U' && str[j + 1] == 'G' && str[j + 2] == 'C'))
printf("-半胱氨酸");
else if(str[j] == 'U' && str[j + 1] == 'G' && str[j + 2] == 'G')
printf("-色氨酸");
else if((str[j] == 'C' && str[j + 1] == 'A' && str[j + 2] == 'A') || (str[j] == 'C' && str[j + 1] == 'A' && str[j + 2] == 'G'))
printf("-谷氨酰胺");
else if((str[j] == 'C' && str[j + 1] == 'A' && str[j + 2] == 'U') || (str[j] == 'C' && str[j + 1] == 'A' && str[j + 2] == 'C'))
printf("-组氨酸");
else if(str[j] == 'C' && str[j + 1] == 'C')
printf("-脯氨酸");
else if(str[j] == 'A' && str[j + 1] == 'U' && str[j + 2] == 'G')
printf("-甲硫氨酸");
else if((str[j] == 'A' && str[j + 1] == 'U' && str[j + 2] == 'U') || (str[j] == 'A' && str[j + 1] == 'U' && str[j + 2] == 'C') || (str[j] == 'A' && str[j + 1] == 'U' && str[j + 2] == 'A'))
printf("-异亮氨酸");
else if((str[j] == 'A' && str[j + 1] == 'G' && str[j + 2] == 'A') || (str[j] == 'A' && str[j + 1] == 'G' && str[j + 2] == 'G') || (str[j] == 'C' && str[j + 1] == 'G'))
printf("-精氨酸");
else if(str[j] == 'A' && str[j + 1] == 'C')
printf("-苏氨酸");
else if((str[j] == 'A' && str[j + 1] == 'A' && str[j + 2] == 'U') || (str[j] == 'A' && str[j + 1] == 'A' && str[j + 2] == 'C'))
printf("-天冬氨酸");
else if((str[j] == 'A' && str[j + 1] == 'A' && str[j + 2] == 'A') || (str[j] == 'A' && str[j + 1] == 'A' && str[j + 2] == 'G'))
printf("-赖氨酸");
else if(str[j] == 'G' && str[j + 1] == 'U')
printf("-缬氨酸");
else if(str[j] == 'G' && str[j + 1] == 'C')
printf("-丙氨酸");
else if((str[j] == 'G' && str[j + 1] == 'A' && str[j + 2] == 'U') || (str[j] == 'G' && str[j + 1] == 'A' && str[j + 2] == 'C'))
printf("-天冬氨酸");
else if((str[j] == 'G' && str[j + 1] == 'A' && str[j + 2] == 'A') || (str[j] == 'G' && str[j + 1] == 'A' && str[j + 2] == 'G'))
printf("-谷氨酸");
else if(str[j] == 'G' && str[j + 1] == 'G')
printf("-甘氨酸");
else if((str[j] == 'U' && str[j + 1] == 'A' && str[j + 2] == 'A') || (str[j] == 'U' && str[j + 1] == 'A' && str[j + 2] == 'G') || (str[j] == 'U' && str[j + 1] == 'G' && str[j + 2] == 'A'))
printf("-终止密码");
}
printf ("\n");
return 0;
}