c - C 中函数参数/调用函数的问题

标签 c arrays function pointers parameters

由于参数的类型,我在程序中实现不同的函数时遇到困难。我正在编写一个程序,该程序从输入文件中读取三个字母序列,将这些序列存储在单独的数组中,然后比较数组并打印重叠百分比。我在程序中使用以下函数:

  1. 函数read_DNA(char sequence[])从输入中读取DNA序列, 将其存储在数组 sequence[] 中,并以 int 形式返回读取的字母数。

  2. 函数compare_DNA(char seq1[], char seq2[], char seq3[], int n),存储在数组seq3[]中存储在seq1[]seq2[]中的两条DNA序列的比较序列。这些 DNA 序列的长度假设为 n。该函数以 double 形式返回两个 DNA 序列之间的重叠百分比。

  3. 函数print_DNA(char seq1[], char seq2[], char seq3[], int n) 打印输出存储在 seq1[]seq2[] 中的 DNA 序列,以及它们的 根据上面解释的规则,比较序列存储在seq3[]中。长度 所有这些序列的总数被假定为n。该函数不返回值。

如果函数 read_DNA() 仅返回读取的字母数,如何访问存储在每个序列中的实际字母?我不确定如何在函数 compare_DNA() 中调用 read_DNA() 并比较每个数组的实际字母。

任何帮助/建议将不胜感激。

最佳答案

我怀疑这比你想象的要简单。

read_DNA 中,例如,如果 i 是表示字母索引的整数,则可以使用 sequence[i] 作为参数名称是sequence

compare_DNAprint_DNA 中,您将使用 seq1[i]seq2[i] 等。

如果您像这样调用read_DNA:

/* needs to be big enough for the sequence to be read in */
char my_sequence[1234]; 

int len;
len = read_DNA (my_sequence);

那么你可以通过my_sequence[i]引用它,例如:

int i;
for (i=0 ; i<len; i++)
{
    char c = my_sequence[i];
    /* do something with c */
}

作为示例,以下是您编写比较函数的方式(未经测试):

double
compare_DNA(char seq1[], char seq2[], char seq3[], int n)
{
    int i;
    int match = 0;
    for (i = 0; i < n; i++)
    {
        if (seq1[i] == seq2[i])
        {
            /* record the matching letter in seq3 */
            seq3[i] = seq1[i];
            match++;
        }
        else
        {
            /* record a '?' in seq3 */
            seq3[i] = '?';
        }
    }
    return (double)match * 100.0 / (double)n;
}

请注意,我不知道如何比较 DNA,如果字母匹配,我会使其包含匹配的字母,如果不匹配,则使其包含匹配的字母;如果不匹配,则包含 ?匹配。

关于c - C 中函数参数/调用函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22126461/

相关文章:

c - 尝试打印堆栈的元素时堆栈实现崩溃

c - Scanf 字符串并设置指针

c - 在 C 中处理信号、管道和分支

javascript - 迭代数组并找到一系列数字之间的总和

PHP函数和符号

c - 将二维指针数组传递给函数 C

c - GCC 中是否有 __int32 的对应项?

ios - 在 Swift 中将字符串拆分为数组?

JavaScript 数组/JSON 库

c++ - 类中的 C++ 函数是否动态分配?