C语言中函数参数/调用函数的问题
由于参数的类型,我在程序中实现不同的函数时遇到困难。我正在编写一个程序,从输入文件中读取三个字母序列,将这些序列存储在单独的数组中,然后比较数组并打印重叠的百分比。我在程序中使用以下功能:C语言中函数参数/调用函数的问题,c,arrays,function,pointers,parameters,C,Arrays,Function,Pointers,Parameters,由于参数的类型,我在程序中实现不同的函数时遇到困难。我正在编写一个程序,从输入文件中读取三个字母序列,将这些序列存储在单独的数组中,然后比较数组并打印重叠的百分比。我在程序中使用以下功能: 从输入读取DNA序列的函数read_DNA(char sequence[]), 将其存储在数组序列[],并以int的形式返回读取的字母数 函数compare_DNA(char-seq1[],char-seq2[],char-seq3[],int-n)存储在数组seq3[]中的两个DNA序列的比较序列seq1[
read_DNA(char sequence[])
,
将其存储在数组序列[]
,并以int
的形式返回读取的字母数compare_DNA(char-seq1[],char-seq2[],char-seq3[],int-n)
存储在数组seq3[]中的两个DNA序列的比较序列seq1[]
和seq2[]
。假设这些DNA序列的长度为n
。函数返回两个DNA序列之间重叠的百分比,作为双精度
print_DNA(char-seq1[],char-seq2[],char-seq3[],int-n)
打印以输出存储在seq1[]
和seq2[]
中的DNA序列及其
根据上述规则,比较序列存储在seq3[]
中。长度
所有这些序列中的一个被假定为n
。该函数不返回值read\u DNA()
仅返回读取的字母数,如何访问每个序列中存储的实际字母?我不确定如何调用函数compare\u-DNA()
中的read\u-DNA()
,并比较每个数组的实际字母
如有任何帮助/建议,将不胜感激 我想这比你想象的要简单 在
read_DNA
内部,例如,如果i
是一个表示字母索引的整数,您将使用sequence[i]
作为参数名sequence
在compare_-DNA
和print_-DNA
内部,您将使用seq1[i]
,seq2[i]
等
如果你这样打电话给读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 */
}
inti;
for(i=0;iread\u-DNA(char-sequence[])
是一个引用调用。因此,这不会是一个问题C不支持引用调用。它传递一个数组变量,它在C中的工作方式类似于指针。我明白你的意思了……下面是我对read\u-DNA的说明:int-read\u-DNA(char-sequence[]){int i,count=0;/*从输入中读取DNA序列,将其存储在一个数组中,并返回读取为int*/input=fopen(“DNA_input.dat”,“r”);for(i=0;我仍然对如何在compare_DNAI中比较每个序列感到困惑。我们添加了一个如何进行比较的示例。谢谢,这澄清了很多。
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;
}