| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 867 人关注过本帖
标题:各位大侠,求解,请问下面当中fwrite,fread该怎样用?PS:单项选择题判断系统 ...
只看楼主 加入收藏
cnsongzi
Rank: 1
来 自:安徽合肥
等 级:新手上路
帖 子:27
专家分:6
注 册:2010-10-2
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:7 
各位大侠,求解,请问下面当中fwrite,fread该怎样用?PS:单项选择题判断系统,我老是通过不,快交作业了,麻烦各位帮我看看,谢谢了!
程序代码:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"


#define NULL 0
#define ARRAY_SIZE 100

typedef struct question
{
    char tm[500];
    char op1[50],op2[50],op3[50],op4[50];
    char as;
}QS;



int menu_a()   //菜单模块1
{
    int op;
    printf("\t\t欢迎进入单项选择题标准化考试系统\n");
    printf("\t\t目前题库为空,请按照以下提示操作...\n");
    printf("\t\t1.手动录入试题\n);
    printf("\t\t2.载入试题\n");
    printf("\t\t请选择。。。。");
    scanf("%d",&op);

    if(op<1||op>2)
    {
        printf("        输入数据有误,请重新输入\n");
        return 0;
    }
    else return op;

}




int menu_b()        //菜单模块2
{
    int op;
    printf("        **********************主菜单**********************\n");

    printf("        1、进入答题系统\n");
    printf("        2、用文件保存试题\n");
    printf("        3、插入试题\n");
    printf("        4、展示试卷\n");
    printf("        5、退出\n");

    printf("        **************************************************\n");
    printf("        请选择....\n");
    scanf("%d",&op);
    if(op<1||op>6)
    {
        printf("        输入数据有误,请重新输入\n");
        return 0;
    }
    else return op;
}




int file_answer(QS *f,int N) //答题模块,返回 成绩
{
    int i,score=0,no;
    char r;

        for(i=0;i<N;i++)
        {
            no=rand()%N;   //抽取试题编号。待解决问题:抽到重复的试题?
            printf("\t\t%s%s%s%s%s\n",f[no].tm,f[no].op1,f[no].op2,f[no].op3,f[i].op4); 
            printf("\t\t请输入正确答案:\n");
            scanf("%c",&r);getchar();
                if(r==f[no].as)
                {
                    printf("\t\t答案正确\n");
                    score++;
                }
                else printf("\t\t答案错误\n");
            printf("\t\t你的总成绩为:%d\n",score);
        }


}






void file_save(QS *f,int n)
{
    FILE *fp;
    int i=0;
    char filename[50];
    printf("        请输入保存文件地址: 如:E:\\abc.txt\n");
    scanf("%s",filename);
    fp=fopen("filename","w+");
    if(fp==NULL)
    {
        printf("        文件保存失败,请重新输入\n");
        exit(1);  //exit(?)
    }
    while(i<n)
    {
        fwrite(fp,sizeof(QS),1,f);   //fwrite
        i++;
    }
fclose(fp);
printf("        文件成功保存在 %s 中\n",filename);

}



void file_in(QS *f,int n)  //试题录入
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("        ***************请按照提示录入******************\n"); //注意:如果题号重复怎么办?
            printf("        1、请输入试题题目\n");
            gets(f[i].tm);
            printf("        2、请输入选项A:\n");
            gets(f[i].op1);
            printf("        请输入选项B:\n");
            gets(f[i].op2);
            printf("        请输入选项C:\n");
            gets(f[i].op3);
            printf("        请输入选项D:\n");
            gets(f[i].op4);
            printf("        请输入正确答案:\n");
            scanf("%c",&f[i].as);
            getschar();

    }


}


void file_load()
{
    FILE *fp;
    int i=0;
    char filename[50];
here:    printf("        请输试题库文件的地址: 如:E:\\abc.txt\n");
    scanf("%s",filename);
    fp=fopen("filename","r+");
    if((fp)==NULL)
    {
        printf("\t\t地址无效,请重新输入");
        goto here;
    }
    else
        while(!feof(fp))  //判断文件是否结束
        {
            fread(&f[i],sizeof(QS),1,fp);   //fread
            i++;
        }
       
}

void file_out(QS *f,int i)
{
    printf("\t\t题号:%d\n",n);
    printf("\t\t题目:%s\n",f[i].tm);
    printf("\t\tA.%s\n",f[i].op1);
    printf("\t\tB.%s\n",f[i].op2);
    printf("\t\tC.%s\n",f[i].op3);
    printf("\t\tD.%s\n",f[i].op4);
}

void file_insert(QS *f,int n)
{
    if(n>ARRAY_SIZE) printf("\t\t输入错误!\n");
    else
    {
        printf("\t\t请根据提示输入:\n");
        printf("\t\t请输入题目:\n");
        gets(f[n].tm);
        printf("\t\t请输入选项A:\n");
        gets(f[n].op1);
        printf("\t\t请输入选项B:\n");
        gets(f[n].op2);
        printf("\t\t请输入选项C:\n");
        gets(f[n].op3);
        printf("\t\t请输入选项D:\n");
        gets(f[n].op4);
        printf("\t\t请输入正确答案!\n");
        scanf("%c",&f[n].as);
        getchar();
    }


}

void main()
{
    int n=0,N,i,max,pos;
    char flag;
    QS f[ARRAY_SIZE];
   
    switch(menu_a())  //菜单A
    {
        case 1:printf("\t\t请输入需要建立的题目个数:\n");
               scanf("%d",&max);
               getchar();
               file_in(f,max);break;
        case 2:file_load();break;
    }
   
   
    while(1)
    {
        switch(menu_b())    //菜单B
        {

        case 1:system("cls");
               printf("\t\t请输入您想要的题目个数N:");
               scanf("%d",&N);
               getchar();
               file_answer(f,N);break;
        case 2:printf("\t\t需保存的题数目:");
               scanf("%d",n);
               getchar();
               file_save(f,n);break;
        case 3:printf("\t\t请输入您要插入试题的题号");
               scanf("%d",&n);
               getchar();
               for(i=max;i>=n;i--)
               {
                    f[i]=f[i-1];
               }
               pos=i-1;
              
               file_in(f,pos);break;          //功能未完成
        case 4:system("cls");
               for(i=0;i<N;i++)
               {
                    file_out(f,i);
                    printf("\n");
              
               }break;

        case 5:printf("\t\t您确认退出系统(Y/N)?");
                scanf("%s",&flag);
                if(flag=='y'||flag=='Y')  return 0;
                else return 1;
        default:printf("\t\t请正确选择!");
        }
    }

}


[ 本帖最后由 cnsongzi 于 2011-2-15 00:30 编辑 ]
搜索更多相关主题的帖子: 选择题 
2011-02-15 00:28
cnsongzi
Rank: 1
来 自:安徽合肥
等 级:新手上路
帖 子:27
专家分:6
注 册:2010-10-2
收藏
得分:0 
太晚了
2011-02-15 00:48
mofeel
Rank: 2
等 级:论坛游民
帖 子:20
专家分:26
注 册:2009-10-22
收藏
得分:3 
每次抽到重复的试题,在n=rand()%N是前面加上一句srand((unsigned)time(NULL));就可以产生随机数了。
2011-02-15 16:10
caoweizhong
Rank: 2
等 级:论坛游民
帖 子:19
专家分:65
注 册:2011-1-22
收藏
得分:3 
被抽后做记号就可以啦!标记一下。
2011-02-15 16:15
xmbarcode
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2011-2-15
收藏
得分:3 
不懂,帮不了你了

[url=www.]条码打印机[/url]
2011-02-15 16:15
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:3 
这个作业。。。。。它。。。。。。。。。
2011-02-15 16:45
cnsongzi
Rank: 1
来 自:安徽合肥
等 级:新手上路
帖 子:27
专家分:6
注 册:2010-10-2
收藏
得分:0 
非常感谢各位!自己琢磨着已经通过,但还有些功能有点欠缺!
2011-02-19 02:45
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
如果是想知道怎么用  自己百度去  
编程问题  发帖
作业  一律不理会

                                         
===========深入<----------------->浅出============
2011-02-20 20:53
快速回复:各位大侠,求解,请问下面当中fwrite,fread该怎样用?PS:单项选择题判断 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021661 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved