oahgnail1 2022-01-01 18:50 采纳率: 100%
浏览 38
已结题

如何实现增加多选和判断题这两个功能

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define MAX 100
struct que
{
char a[100];
char b[100];
char c[100];
char d[100];
char q[100];
char answer[2];
}
q[100];
void add()
{
FILE *fp=fopen("file08.txt","a+");
que f;
printf("请输入题目\n");
scanf("%s",f.q);
printf("请输入A选项\n");
scanf("%s",f.a);
printf("请输入B选项\n");
scanf("%s",f.b);
printf("请输入C选项\n");
scanf("%s",f.c);
printf("请输入D选项\n");
scanf("%s",f.d);
printf("请输入正确答案\n");
scanf("%s",f.answer);
fprintf(fp,"%s %s %s %s %s %s\n",f.q,f.a,f.b,f.c,f.d,f.answer);
fclose(fp);
}
void exam()
{
que ex[MAX];
int n=0;
FILE *fp=fopen("file08.txt","a+");
char arr[100];
while (!feof(fp))
{
fscanf(fp,"%s %s %s %s %s %s\n",ex[n].q,ex[n].a,ex[n].b,ex[n].c,ex[n].d,ex[n].answer); if(ex[n].q[0]=='\0' || ex[n].q[0]=='\n' ) continue;
else
n++;
}
int sum=0;
char c[10];
printf("当前共有%d道题,请输入你需要的题目数:",n);
int m;
scanf("%d",&m);
getchar();
for(int i=0;i<m;i++)
{
int index = rand()%n;
printf("%s( )\nA %s B %s C %s D %s\n",ex[index].q,ex[index].a,ex[index].b,ex[index].c,ex[index].d);
printf("你的答案是");
scanf("%s",c); getchar();
if(c[0]==ex[index].answer[0])
sum+=20;
}
printf("你的得分是:%d分\n",sum);
}
int main()
{
char userName[30];
char passWord[30];
char userName1[30];
char passWord1[30];
srand((unsigned)time(NULL));
system("color FD");
printf("\n\n\n\n\n\n");
printf("================================================================\n");
printf("===========================考试系统=============================\n");
printf("================================================================\n");
system("cls");
printf("================================================================\n");
printf("===========================用户注册=============================\n");
printf("================================================================\n");
printf("\n\n\n");
printf("欢迎使用本系统!首先请您先完成用户注册:)\n");
printf("用户名:");
scanf("%s", userName);
getchar();
printf("密码:");
scanf("%s",passWord);
getchar();
printf("注册成功,您可以登录本系统!");
system("cls");
while(1)
{
printf("欢迎使用本系统!请您完成登录操作:)\n");
printf("用户名:");
scanf("%s",userName1);
printf("密码:");
scanf("%s", passWord1);
getchar();
if (strcmp(userName, userName1) == 0 && strcmp(passWord, passWord1) == 0)
{
printf("欢迎使用本系统!\n");
break;
}
else
{
printf("您输入的账户名和密码不正确,请重新输入!\n");
system("cls");
}
}
int num;
printf("----------欢迎使用客观题考试系统-------------\n");
printf("---输入1增加试题,输入2进行考试,其他键退出---\n");
while(scanf("%d",&num))
{
if(num==1)
add();
else if(num==2)
exam();
else
{
break;
}
printf("输入1增加试题,输入2进行考试,其他键退出\n");
} return 0;}

  • 写回答

2条回答 默认 最新

  • fuill 2022-01-01 19:06
    关注

    再改一下就差不多了

    img

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<time.h>
    #define MAX 100
    struct que
    {
        char a[100];
        char b[100];
        char c[100];
        char d[100];
        char q[100];
        char answer[2];
    }
    q[100];
    void add()
    {
        printf("请选择题型:1.单选,2.多选,3.判断") ;
        int c=1;
        scanf("%d",&c);
        if(c==1) 
        {
        FILE *fp=fopen("file08.txt","a+");
        que f;
        printf("请输入题目\n");
        scanf("%s",f.q);
        printf("请输入A选项\n");
        scanf("%s",f.a);
        printf("请输入B选项\n");
        scanf("%s",f.b);
        printf("请输入C选项\n");
        scanf("%s",f.c);
        printf("请输入D选项\n");
        scanf("%s",f.d);
        printf("请输入正确答案\n");
        scanf("%s",f.answer);
        fprintf(fp,"%s %s %s %s %s %s\n",f.q,f.a,f.b,f.c,f.d,f.answer);
        fclose(fp);
        }
        else if(c==2)
        {
        FILE *fp=fopen("file08.txt","a+");
        que f;
        printf("请输入题目\n");
        scanf("%s",f.q);
        printf("请输入A选项\n");
        scanf("%s",f.a);
        printf("请输入B选项\n");
        scanf("%s",f.b);
        printf("请输入C选项\n");
        scanf("%s",f.c);
        printf("请输入D选项\n");
        scanf("%s",f.d);
        printf("请输入正确答案(字母间无符号)\n");
        scanf("%s",f.answer);
        fprintf(fp,"%s %s %s %s %s %s\n",f.q,f.a,f.b,f.c,f.d,f.answer);
        fclose(fp);
        }
        else if(c==3)
        {
        FILE *fp=fopen("file08.txt","a+");
        que f;
        printf("请输入题目\n");
        scanf("%s",f.q);
        /*printf("请输入A选项\n");
        scanf("%s",f.a);
        printf("请输入B选项\n");
        scanf("%s",f.b);
        printf("请输入C选项\n");
        scanf("%s",f.c);
        printf("请输入D选项\n");
        scanf("%s",f.d);*/ 
        printf("请输入正确答案(Y或N)\n");
        scanf("%s",f.answer);
        //fprintf(fp,"%s%s\n",f.q,f.answer);
        fclose(fp);
        } 
    }
    void exam()
    {
        que ex[MAX];
        int n=0;
        FILE *fp=fopen("file08.txt","a+");
        char arr[100];
        while (!feof(fp))
        {
            fscanf(fp,"%s %s %s %s %s %s\n",ex[n].q,ex[n].a,ex[n].b,ex[n].c,ex[n].d,ex[n].answer);
            if(ex[n].q[0]=='\0' || ex[n].q[0]=='\n' ) continue;
            else
                n++;
        }
        int sum=0;
        char c[10];
        printf("当前共有%d道题,请输入你需要的题目数:",n);
        int m;
        scanf("%d",&m);
        getchar();
        for(int i=0; i<m; i++)
        {
            int index = rand()%n;
            printf("%s( )\nA %s B %s C %s D %s\n",ex[index].q,ex[index].a,ex[index].b,ex[index].c,ex[index].d);
            printf("你的答案是");
            scanf("%s",c);
            getchar();
            if(c[0]==ex[index].answer[0])
                sum+=20;
        }
        printf("你的得分是:%d分\n",sum);
    }
    int main()
    {
        char userName[30];
        char passWord[30];
        char userName1[30];
        char passWord1[30];
        srand((unsigned)time(NULL));
        system("color FD");
        printf("\n\n\n\n\n\n");
        printf("================================================================\n");
        printf("===========================考试系统=============================\n");
        printf("================================================================\n");
        system("cls");
        printf("================================================================\n");
        printf("===========================用户注册=============================\n");
        printf("================================================================\n");
        printf("\n\n\n");
        printf("欢迎使用本系统!首先请您先完成用户注册:)\n");
        printf("用户名:");
        scanf("%s", userName);
        getchar();
        printf("密码:");
        scanf("%s",passWord);
        getchar();
        printf("注册成功,您可以登录本系统!");
        system("cls");
        while(1)
        {
            printf("欢迎使用本系统!请您完成登录操作:)\n");
            printf("用户名:");
            scanf("%s",userName1);
            printf("密码:");
            scanf("%s", passWord1);
            getchar();
            if (strcmp(userName, userName1) == 0 && strcmp(passWord, passWord1) == 0)
            {
                printf("欢迎使用本系统!\n");
                break;
            }
            else
            {
                printf("您输入的账户名和密码不正确,请重新输入!\n");
                system("cls");
            }
        }
        int num;
        printf("----------欢迎使用客观题考试系统-------------\n");
        printf("---输入1增加试题,输入2进行考试,其他键退出---\n");
        while(scanf("%d",&num))
        {
            if(num==1)
                add();
            else if(num==2)
                exam();
            else
            {
                break;
            }
            printf("输入1增加试题,输入2进行考试,其他键退出\n");
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 1月1日