C语言作业,求高手解答,或者帮忙找寻答案
输入:
一条字符串(由A、T、G、C构成)来表示DNA的一条链
输出:
1.DNA中与之对应的另外一条链
2.转录生成的mRNA链
3.由mRNA控制合成的蛋白质的氨基酸序列
效果图:
我的编码,做到switch语句,发现黑框不执行,卡住了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s[100];
printf("请输入DNA单链序列:\n");
int i = 0,a = 0;
for(i = 0; ;i++)
{
scanf("%c",&s[i]);
printf("-");
printf("%c",s[i]);
int len = strlen(s);
if(i == len)break;
}
printf("\n");
for(a = 0;a <= i;a++)
{
switch (s[a])
{
case 'A':
printf("-T");
break;
case 'G':
printf("-C");
break;
case 'C':
printf("-G");
break;
case 'T':
printf("-A");
break;
default:
printf("输入错误!\n");
}
}
return 0;
}
答案:你是?小心别让水水或助教看见。。。(我2班的)#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* DNA_strand(char* DNA5);
char* mRNA_strand(char* DNA);
char* amino_strand(char* mRNA);
void main()
{
char DNA5[100];
char* DNA3, * mRNA, * amino;
printf("构成DNA的含氮碱基:\nA(腺嘌呤)\nG(鸟嘌呤)\nC(胞嘧啶)\nT(胸腺嘧啶)\n\n\n");
printf("请输入一条DNA链:(请输入大写字母)\n");
scanf("%s", DNA5);
printf("\n");
DNA3 = DNA_strand(DNA5);
printf("另一条DNA链为:\n%s\n\n", DNA3);
mRNA = mRNA_strand(DNA5);
printf("对应的mRNA链为:\n%s\n\n", mRNA);
amino = amino_strand(mRNA);
printf("由mRNA控制合成的蛋白质的氨基酸序列为:\n%s\n\n", amino);
}
char* DNA_strand(char* DNA5)
{
char* DNA3 = (char*)malloc(sizeof(char) * strlen(DNA5));
char* head = DNA3;
while (*DNA5)
{
switch (*DNA5)
{
case 'A':
*DNA3 = 'T';
break;
case 'T':
*DNA3 = 'A';
break;
case 'G':
*DNA3 = 'C';
break;
case 'C':
*DNA3 = 'G';
break;
default:
printf("输入的DNA序列有误!\n%c不是构成DNA的含氮碱基!\n", *DNA5);
exit(0);
}
++DNA5;
++DNA3;
}
*DNA3 = '\0';
return head;
}
char* mRNA_strand(char* DNA)
{
char* RNA = (char*)malloc(sizeof(char) * strlen(DNA));
char* head = RNA;
while (*DNA)
{
switch (*DNA)
{
case 'A':
*RNA = 'U';
break;
case 'T':
*RNA = 'A';
break;
case 'G':
*RNA = 'C';
break;
case 'C':
*RNA = 'G';
break;
default:
printf("输入的DNA序列有误!\n%c不是构成DNA的含氮碱基!\n", *DNA);
exit(0);
}
++DNA;
++RNA;
}
*RNA = '\0';
return head;
}
char* amino_strand(char* mRNA)
{
char* amino = (char*)malloc(sizeof(char) * strlen(mRNA) / 3 + 1);
char* head = amino;
char* codes = NULL;
int end = 0;/*用于判断是否有终止密码子*/
while (*mRNA)
{
/* AUG(起始密码子)*/
if (mRNA[0] == 'A' && mRNA[1] == 'U' && mRNA[2] == 'G')
{
codes = mRNA;
break;
}
else
++mRNA;
}
if (codes == NULL)
{
printf("没有起始密码子!\n");
exit(0);
}
for (; *codes; codes += 3, ++amino)
{
/* (Phe/F)苯丙氨酸 UUU UUC */
if ((codes[0] == 'U' && codes[1] == 'U' && codes[2] == 'U')
|| (codes[0] == 'U' && codes[1] == 'U' && codes[2] == 'C'))
*amino = 'F';
/* (Leu/L)亮氨酸 UUA UUG CU~ */
else if ((codes[0] == 'U' && codes[1] == 'U' && codes[2] == 'A')
|| (codes[0] == 'U' && codes[1] == 'U' && codes[2] == 'G')
|| (codes[0] == 'C' && codes[1] == 'U'))
*amino = 'L';
/* (Ser/S)丝氨酸 UC~ AGU AGC */
else if ((codes[0] == 'U' && codes[1] == 'C')
|| (codes[0] == 'A' && codes[1] == 'G' && codes[2] =='U')
|| (codes[0] == 'A' && codes[1] == 'G' && codes[2] =='C'))
*amino = 'S';
/* (Tyr/Y)酪氨酸 UAU UAC */
else if ((codes
上一个:C语言编程求100—1000内的素数个数及和?
下一个:有谁能给我详细的介绍C语言吗?