gets(),用于输入字符数组
其用法与scanf不同,不需要取地址,直接输入即可
#include<stdio.h>
int main(){
char arr[10] = {0};
gets(arr);//即可对arr进行赋值
}
但若与scanf一起使用时,若scanf()没有加\n,便会报错,如
#include<stdio.h>
int main(){
char arr_1[500] = { 0 };
double m = 0;
scanf("%lf", &m);
gets(arr_1);
//此时运行会出现问题
}
需要在将scanf("%lf",&m)写成scanf("%lf\n",&m)
而利用gets(),我们便可以进行一些字符数组之间的比较
如计算基因相关性:
为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
如给定:
0.85 ATCGCCGTAAGTAACGGTTTTAAATAGGCC ATCGCCGGAAGTAACGGTCTTAAATAGGCC
计算是否相关
#include<stdio.h>
int main() {
char arr_1[500] = { 0 };
char arr_2[500] = { 0 };
double m = 0;//比例
scanf_s("%lf\n", &m);
gets(arr_1);
gets(arr_2);
int len = strlen(arr_1);//数组长度
//i,j用于嵌套循环
int i = 0;
int j = 0;
int count = 0;//计相同的字符的个数
for (i = 0; i < len; i++)
{
if (arr_1[i] == arr_2[j])
{
count++;
}
j++;
}
double x = (double)count / (double)len;//比例
if ( x> m)
printf("yes");
else
printf("no");
}