网站开发主机的选择,网站集群建设解决方案,建筑工程公司企业简介,苏州seo公司题目描述 已知一群学生的考试试卷#xff0c;要求对试卷内容进行对比#xff0c;查找是否有抄袭。
每张试卷包含#xff1a;学号#xff08;整数类型#xff09;、题目1答案#xff08;字符串类型#xff09;、题目2答案#xff08;字符串类型#xff09;、题目3答案…题目描述 已知一群学生的考试试卷要求对试卷内容进行对比查找是否有抄袭。
每张试卷包含学号整数类型、题目1答案字符串类型、题目2答案字符串类型、题目3答案字符串类型
要求使用结构体来存储试卷的信息。定义一个函数返回值为一个整数参数是两个结构体指针函数操作是比较两张试卷的每道题目的答案如果相同题号的答案相似度超过90%那么就认为有抄袭函数返回抄袭题号否则返回0。相似度是指在同一题目中两个答案的逐个位置上的字符两两比较相同的数量大于等于任一个答案的长度的90%就认为抄袭。 输入 第一行输入t表示有t张试卷
第二行输入第1张试卷的学生学号
第三行输入第1张试卷的题目1答案最大长度不超过100
第四行输入第1张试卷的题目2答案最大长度不超过100
第五行输入第1张试卷的题目3答案最大长度不超过100
每张试卷对应4行输入
依次输入t张试卷的数据
输出 在一行中把发现抄袭的两个学号和题目号输出只输出第一次发现抄袭的题号数据之间用单个空格隔开
如果发现是题目1抄袭题目号为1以此类推
输出顺序按照输入的学号顺序进行输出
代码实现
#include iostream
using namespace std;struct SExamPaper
{int id;char answer1[20];char answer2[20];char answer3[20];
};bool judge(char *s1,char *s2)
{int num 0;int len 0;while(*s1 *s2){if(*s1 *s2) num ;s1 , s2 ,len ;}if(num len * 0.9) return true;return false;
}int testCheat(SExamPaper *a, SExamPaper *b)
{if(judge(a - answer1,b - answer1)) return 1;if(judge(a - answer2,b - answer2)) return 2;if(judge(a - answer3,b - answer3)) return 3;return 0;
}int main( )
{ int t;cin t;SExamPaper stu[t];for(int i 0;i t;i ){cin stu[i].id stu[i].answer1 stu[i].answer2 stu[i].answer3;}for(int i 0;i t - 1;i ){for(int j i 1;j t;j ){int num testCheat(stu i, stu j);if(num) cout (*(stu i)).id (*(stu j)).id num endl;}}return 0;
}