#include <stdio.h> //头文件 #include <string.h> #define _CRT_SECURE_NO_WARNINGS #define YES 1 #define NO 0 //全局变量部分 char V[20]; //病毒DNA字符串 char D[20]; //人的DNA字符串 //主要功能函数的具体实现及说明 //模式匹配函数(BF) int BF(char *D, char *V) { //用BF算法进行模式匹配 int i=0,j=0; while (i<strlen(D) && j<strlen(V)) { if (D[i]==V[j]) { i++; j++; }else{ i = i-j+1; j = 0; } } if (j>=strlen(V)) { return YES; }else { return NO; } } //循环展开函数(BFjudge) int BFjudge(char *D, char *V) { int flag = 0; int i,j,m; char temp[20]; m = strlen(V); for(i=m,j=0;j<m;j++) V[i++]=V[j]; V[2*m] = '\0'; //将字符串长度为m的病毒DNA扩展为长度为2m的字符串 for(i=0; ;i++) { for(j=0;j<m;j++) temp[j] = V[i+j]; temp[m] = '\0'; //循环展开环状病毒DNA flag = BF(D,temp); //调用BF模块进行模式匹配 if (flag) break; else if (i>=m) return NO; //所有展开字符串均匹配失败 else continue; } return YES; } // 程序使用一维数组存储,在输入完一组数据后存储在缓存区内, // 然后将判断结果存入数组s中,最后根据数组s统一输出判断结果。 int PRINThand() { int i=0,k=0; int s[20]; while(1) { printf("\n请输入病毒DNA以0结束:"); scanf("%c", &V[i]); printf("\n请输入人的DNA以0结束:\n"); scanf("%c", &D[i]); if(V[i]=='0' && D[i]=='0') break; if(BFjudge(D, V)==1) { s[k]=1; }else{ s[k]=0; } k++; i++; } printf("病毒感染检测输出结果:\n"); for(k=0;s[k]<2;k++) { if(s[k]==1){ printf("YES\n"); }else{ printf("NO\n"); } } return 0; } //主函数 int main() { int key = 0, Num; while(1) { printf("欢迎使用病毒感染检测系统\n"); PRINThand(); printf("是否继续(1表示是,0表示否):"); scanf("%d", &key); if (key == 0) { break; } } }
时间: 2024-04-27 14:23:50 浏览: 115
这是一段用于病毒感染检测的C语言程序代码,其主要功能是输入病毒DNA和人的DNA,然后判断人的DNA中是否存在病毒DNA的序列。其实现主要包括以下几个函数:
1. BF函数:使用BF算法进行模式匹配,用于判断病毒DNA是否存在于人的DNA中。
2. BFjudge函数:使用循环展开技术将病毒DNA环状展开,然后调用BF函数进行模式匹配。
3. PRINThand函数:用于输入数据并输出判断结果,将判断结果存入数组s中,最后根据数组s统一输出判断结果。
4. 主函数:主要用于程序的控制流程,包括欢迎界面、调用PRINThand函数、是否继续等。
其中,全局变量部分定义了病毒DNA字符串和人的DNA字符串两个变量。代码中还包含了一些头文件和宏定义。
相关问题
#include<math.h> #include<process.h> #include <iostream> #define _CRT_SECURE_NO_WARNINGS //#include<stdio.h>这几个头文件分别是什么作用
1. #include<math.h>:这个头文件包含了数学运算的函数和常量,如三角函数、对数函数、指数函数以及常用的数学常量等。
2. #include<process.h>:这个头文件包含了一些与进程(process)相关的函数,如exit()函数用于终止进程、getpid()函数用于获取进程ID等。
3. #include<iostream>:这个头文件包含了输入输出流的相关函数和类,如cout和cin等。
4. #define _CRT_SECURE_NO_WARNINGS:这个宏定义可以用来禁用一些不安全的C/C++函数,如scanf、gets等。在VC++中,如果不使用该宏定义,编译器会给出警告。
5. //#include<stdio.h>:这行代码是一个注释,表示这个头文件被注释掉了,没有被包含进来。stdio.h是一个标准输入输出头文件,包含了一些输入输出函数的定义,如printf、scanf等。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h>
这段代码是C语言中常用的头文件和预处理指令,主要作用如下:
1. `_CRT_SECURE_NO_WARNINGS`:这是一个编译器预处理指令,用于禁止编译器产生某些警告信息。在C语言中,使用一些不安全的函数(如`strcpy`、`scanf`等)可能会导致安全问题,编译器会产生警告信息。使用该指令可以取消这些警告,但也可能会带来一定的安全隐患,因此需要慎重使用。
2. `stdio.h`:这是C语言中标准输入输出头文件,包含了一些常用的输入输出函数(如`printf`、`scanf`、`fopen`、`fclose`等)的声明和定义。
3. `stdlib.h`:这是C语言中标准库头文件,包含了一些常用的函数(如`malloc`、`free`、`atoi`、`exit`等)的声明和定义。
4. `string.h`:这是C语言中字符串操作头文件,包含了一些常用的字符串操作函数(如`strcpy`、`strcat`、`strlen`、`strcmp`等)的声明和定义。
综上,这段代码主要是为了使用标准输入输出函数、标准库函数和字符串操作函数,并取消编译器产生某些警告信息。
阅读全文