注册 登录
编程论坛 C语言论坛

利用C语言编一个小程序,用于计算每条序列的G+C的百分含量。新手上路,求大佬指点指点

Xu2574097055 发布于 2021-05-30 22:13, 2265 次点击
如下面这一段序列:
    396    498
ATACTGTTCTTCTACCCACCATATTGAAACGCTAACAAATGATCGTAAATAACACACACGTGCTTACCCTACCACTTTATACCACCACCACATGCCATACTCACCCTCACTTGTATACTGATTTTACGTACGCACACGGATGCTACAGTATATACCATCTCAAACTTACCCTACTCTCAGATTCCACTTCACTCCATGGCCCATCTCTCACTGAATCAGTACCAAATGCACTCACATCATTATGCACGGCACTTGCCTCAGCGGTCTATACCCTGTGCCATTTACCCATAACGCCCATCA
6 回复
#2
rjsp2021-05-31 08:33
看不懂,这“    396    498”是什么意思嘛
#3
Xu25740970552021-05-31 14:40
回复 2楼 rjsp
那个应该是这个序列在DNA中的位置,可以不用管,主要是测量这个序列中的G+C的百分含量
#4
rjsp2021-05-31 15:45
是这个意思吗?
程序代码:
#include <stdio.h>

double foo_cg( const char* atucg )
{
    size_t cg=0, total=0;
    for( ; *atucg; ++atucg )
    {
        switch( *atucg )
        {
        case 'C': case 'c':
        case 'G': case 'g':
            ++cg;
        case 'A': case 'a':
        case 'T': case 't':
        case 'U': case 'u':
            ++total;
        }
    }
    return total==0? 0.0 : cg*100.0/total;
}

int main( void )
{
    double result = foo_cg( "ATACTGTTCTTCTACCCACCATATTGAAACGCTAACAAATGATCGTAAATAACACACACGTGCTTACCCTACCACTTTATACCACCACCACATGCCATACTCACCCTCACTTGTATACTGATTTTACGTACGCACACGGATGCTACAGTATATACCATCTCAAACTTACCCTACTCTCAGATTCCACTTCACTCCATGGCCCATCTCTCACTGAATCAGTACCAAATGCACTCACATCATTATGCACGGCACTTGCCTCAGCGGTCTATACCCTGTGCCATTTACCCATAACGCCCATCA" );
    printf( "%.2f\n", result );
}


输出
44.67%
#5
Xu25740970552021-06-01 00:11
回复 4楼 rjsp
对的对的,我刚刚试了试也成功了,多谢大佬,感谢感谢
#6
刘腾龙2021-06-03 09:49
牛呀牛呀
#7
狮子头2021-06-04 20:44
腻害腻害,来自一个小菜菜的羡慕
1