C语言文本内容比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//author:snowman_duzongfei
#include
#include
#include
#include
#include
using namespace std;
void tostring(char *path, int num) // 数字转化为字符串
{
int tmp, i = 0, j = 0;
while(num)
{
tmp = num%10;
num /= 10;
path[i++] = tmp + '0';
}
path[i] = 0;
num = i/2; i --; //字符串逆转,i是字符个数
while(num--)
{
tmp = path[j]; path[j] = path[i]; path[i] = tmp;
j++, i --;
}
//strcat(path, str);
}
void del_str(char *str) //去除空格 转为大写
{
char str1[100];
int i =0, j = 0;
for(i = 0; str[i]; i ++)
{
str1[j] = str[i];
if(str[i]<='z' && str[i]>='a') str1[j] -= 32;
if(str[i] ==' ') j --;
j++;
}
str1[j] = 0; str[0] = 0;
strcpy(str, str1);
}
int main()
{
FILE* ftp;
string ans[50], str_tmp;
int num1,num2, p_num, count, i, right, rate[100] = {0}; //num1、num2为学号范围,rate[]记录每道题目的正确个数
float grade[60]; //记录每个同学的分数
char path1[50], path2[50], tmp[50], ps1[100], ps2[100];
char str1[50], str2[50];
char str[20] = "debug\\",line[100];;
while(1)
{
str1[0] = 0;
cout <<"请输入答题卡名称(包括扩展名):"<
strcpy(str1,tmp);
/////////////////////////////////
ftp = fopen(str1, "r"); //打开文件流 当前目录下的答案文本
if(ftp == NULL) { continue; } //若文件不存在,继续
p_num = 0; //题号
while(fgets(line,100,ftp) != NULL)
{
del_str(line);
ans[p_num] = line;
p_num ++;
}
break;
}
for(i = 0; i < p_num; i ++) cout << ans[i] << endl;
cout <<"请输入生成的批改文件名称(包括扩展名):"<
strcpy(str2,tmp);
cout <<"输入学号起始范围"<
count= num1;
i = 0; //第几个学生
while(count <= num2)
{
right = 0; path1[0] = 0, path2[0] = 0, ps1[0] = 0, ps2[0]=0;
tostring(path1, count); //学号转化为字符串,因为学生文件夹名为学号
strcpy(path2,path1); //path2,path1为学号字符
count ++;
strcat(path1, "\\"); strcat(path2, "\\");
strcat(path1, str1); strcat(path2, str2); //路径为:如:学号\ITanswer.txt, 学号\ITanswer批改.txt
//cout << path1 << endl;cout << path2 << endl;
strcpy(ps1, ""); strcat(ps1, path1); //供测试使用使路径变为:debug\学号\ITanswer.txt
strcpy(ps2, ""); strcat(ps2, path2); //测试时将引号改为str
//freopen(ps1,"r",stdin);
freopen(ps2,"w",stdout); //写入文件 学号\ITanswer批改.txt
ftp = fopen(ps1, "r"); //打开文件流 学号\ITanswer.txt
if(ftp == NULL) {grade[i] = 0; i ++;continue; } //若文件不存在,分数为0,跳过
//freopen(path1,"r",stdin);
//freopen(path2,"w",stdout);
tmp[0] = 0;
int ii = 0; //题号
while(fgets(line,100,ftp) != NULL)
{
del_str(line);
str_tmp = line;
if(str_tmp == ans[i
i]) // 判断
{
right ++; rate[ii]++; cout <<"第"<
else
cout <<"第"<
}
grade[i] = ((float)right/(float)p_num)*100;
i ++;
cout <<"\n\n\n你的得分为:"<
fclose(stdout); //关闭文件
}
freopen("Report.txt","w",stdout);
for(int j=0; j < i; j ++)
cout << grade[j] << endl;
fclose(stdout);//关闭文件
freopen("rate.txt","w",stdout);
for(j=0; j < p_num; j ++) //30题目数量
cout << float(rate[j])/i << endl;
fclose(stdout);//关闭文件
return 1;
}