#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<memory.h>
#include<string.h>
void sort(int *a)
{
int i ,j,b;
for (i = 0; i < 9; i++)
{
for (j = i+1; j < 10; j++)
{
if (a[i] > a[j])
{
b=a[i];
a[i] = a[j];
a[j] = b;
}
}
}
}
typedef struct
{
int grade;
int tn[10];
int flag;
}stu;
int main()
{
int x;
printf("**************************\n");
printf("***1.出题*********2.判题***\n");
printf("***3.随机生成一份答案*******\n");
printf("***4.某学号同学认真写一份***\n");
printf("**************************\n\n");
srand(time(NULL));
stu arr[96];
memset(arr, 0, sizeof(arr));
FILE* pt;
FILE* pa;
FILE* ti;
FILE* gr;
int i = 0;
int j = 0;
int k = 0;
int l = 0;
int m = 0;
int n = 0;
int tmp;
char ch;
char buf1[5000] = { 0 };
char buf2[1024] = { 0 };
int ret[10] = { 0 };
char ret1[10] = { 0 };
char ret2[10];
gr = fopen("D:\\gr.txt", "a+");
while (EOF != (ch = fgetc(gr)))
{
buf2[i] = ch;
i++;
}
for (i = 0; i<1024; i++)
{
if (buf2[i] == ':')
{
if (buf2[i - 3] > 47 && buf2[i - 3] < 58)
{
n = (int)((buf2[i - 3] - 48) * 10 + (buf2[i - 2] - 48));
}
else
n = (int)(buf2[i - 2] - 48);
if (buf2[i + 3] > 47 && buf2[i+ 3] < 58)
{
m = 10;
}
else
m = (int)(buf2[i + 2] - 48);
arr[n - 1].grade = m;
arr[n - 1].flag = 1;
}
}
m = 0;
n = 0;
fclose(gr);
gr = NULL;
memset(buf2, 0, sizeof(buf1));
while (1)
{
printf("choose:");
scanf("%d", &x);
switch (x)
{
case 1:
{
pt = fopen("D:\\pt.txt", "wt+");
setbuf(pt, NULL);
for (i = 0; i < 96; i++)
{
for (j = 0; j < 10; j++)
{
do
{
l = 0;
tmp = rand() % 100 + 1;
for (k = j - 1; k >= 0; k--)
{
if (tmp == arr[i].tn[k])
{
l = 1;
}
}
} while (l);
arr[i].tn[j] = tmp;
}
sort(arr[i].tn);
}
for (i = 0; i < 96; i++)
{
fprintf(pt, "%d : ", i + 1);
for (j = 0; j < 10; j++)
{
fprintf(pt, "%d", arr[i].tn[j]);
if (j != 9)
{
fprintf(pt, ", ");
}
else
fprintf(pt, "\n");
}
}
printf("1down\n");
fclose(pt);
pt = NULL;
break;
}
case 2:
{
memset(buf1, 0, sizeof(buf1));
memset(buf2, 0, sizeof(buf2));
memset(ret, 0, sizeof(ret));
memset(ret1, 0, sizeof(ret1));
memset(ret2, 0, sizeof(ret2));
gr = fopen("D:\\gr.txt", "wt+");
pa = fopen("D:\\pa.txt", "r");
ti = fopen("D:\\tiku.txt", "r");
setbuf(gr, NULL);
i = 0;
j = 0;
k = 0;
l = 0;
while (EOF != (ch = fgetc(pa)))
{
buf1[i] = ch;
i++;
}
i = 0;
while (EOF != (ch = fgetc(ti)))
{
buf2[i] = ch;
i++;
}
i = 0;
j = 0;
if (buf1[i + 1] > 47 && buf1[i + 1] < 58)
{
n = (int)((buf1[i] - 48) * 10 + (buf1[i + 1] - 48));
}
else
n = (int)((buf1[i] - 48));
for (i = 0; j < 10; i++)
{
while (buf1[i] != ':')
{
i++;
}
if (buf1[i - 3] > 47 && buf1[i - 3] < 58)
{
if (buf1[i - 4] > 47 && buf1[i - 4] < 58)
ret[j] = 100;
else
ret[j] = (int)((buf1[i - 3] - 48) * 10 + (buf1[i - 2] - 48));
}
else
ret[j] = (int)(buf1[i - 2] - 48);
ret1[j] = buf1[i + 2];
j++;
}
i = 0;
j = 0;
l = 0;
m = 0;
for (i = 0; l<10; i++)
{
if (buf2[i] == ':')
j++;
if (j == ret[l])
{
ret2[l] = buf2[i + 2];
l++;
}
}
for (i = 0; i < 10; i++)
{
if (ret1[i] == ret2[i])
m++;
}
arr[n - 1].grade = m;
arr[n - 1].flag = 1;
for (i = 0; i < 96; i++)
{
if (arr[i].flag != 0)
{
fprintf(gr, "%d : %d", i + 1, arr[i].grade);
fprintf(gr, "\n");
}
}
printf("2down\n");
fclose(pa);
pa = NULL;
fclose(gr);
gr = NULL;
fclose(ti);
ti = NULL;
break;
}
case 3:
{
ti = fopen("D:\\tiku.txt", "wt+");
setbuf(ti, NULL);
for (i = 0; i < 100; i++)
{
fprintf(ti, "%d : ", i + 1);
tmp = rand() % 4;
if (tmp == 0)
fprintf(ti, "%c",'A');
if (tmp == 1)
fprintf(ti, "%c", 'B');
if (tmp == 2)
fprintf(ti, "%c", 'C');
if (tmp == 3)
fprintf(ti, "%c", 'D');
fprintf(ti, "\n");
}
fclose(ti);
ti = NULL;
printf("3down\n");
break;
}
case 4:
{
memset(buf1, 0, sizeof(buf1));
memset(buf2, 0, sizeof(buf2));
memset(ret, 0, sizeof(ret));
i = 0;
j = 0;
pt = fopen("D:\\pt.txt", "r");
pa = fopen("D:\\pa.txt", "wt+");
setbuf(pa, NULL);
while (EOF != (ch = fgetc(pt)))
{
buf1[i] = ch;
i++;
}
printf("请输入学号:");
scanf("%d", &tmp);
j = 0;
for (i = 0; i < 5000; i++)
{
if (buf1[i] == ':')
j++;
if (j == tmp)
{
l = 0;
for (k = 0; l < 10; k++)
{
if (buf1[i + k] > 47 && buf1[i + k] < 58)
{
if (buf1[i + k + 1] > 47 && buf1[i + k + 1] < 58)
{
if (buf1[i + k + 2] > 47 && buf1[i + k + 2] < 58)
{
ret[l] = 100;
l++;
k += 2;
}
else
{
ret[l] = (int)((buf1[i + k] - 48) * 10 + (buf1[i + k + 1] - 48));
l++;
k ++;
}
}
else
{
ret[l] = (int)(buf1[i + k] - 48);
l++;
}
}
}
break;
}
}
fprintf(pa, "%d \n", tmp);
for (i = 0; i < 10; i++)
{
fprintf(pa, "%d : ", ret[i]);
tmp = rand() % 4;
if (tmp == 0)
fprintf(pa, "%c", 'A');
if (tmp == 1)
fprintf(pa, "%c", 'B');
if (tmp == 2)
fprintf(pa, "%c", 'C');
if (tmp == 3)
fprintf(pa, "%c", 'D');
fprintf(pa, "\n");
}
fclose(pa);
pa = NULL;
fclose(pt);
pt = NULL;
printf("4down\n");
break;
}
}
}
return 0;
}
自动判卷程序
最新推荐文章于 2024-05-01 11:43:05 发布