zoukankan      html  css  js  c++  java
  • 数据结构

    /本次课任务,从文本文件中读入单词列表,然后显示在屏幕上
    #include<stdio.h>
    #include<stdlib.h>
    #include<iostream>
    #include<cstring>
    using namespace std;
    //子函数声明
    #define INITSIZE 100
    
    
    
    //定义结构体类型,用于表示单词类型
    typedef struct word
    {
        char spell[100];	//定义spell成员,用于存储单词的英文拼写
        char interpretation[50];	//定义interpretation成员,用于存储单词的中文意思
    } word;
    typedef struct SqList   //定义存储单词的顺序表存储结构
    {
        word *list;    //list数组用于存放从文件读入的单词表
        int length;  //顺序表的长度
        int listsize;  //顺序表的容量
    } SqList;
    void Initiate(SqList &L);
    void Load(SqList &L);
    void Print(SqList L);
    void Test(SqList L);
    int main()
    {
        SqList L;        //定义顺序表变量L
    
        Initiate(L); 	//初始化顺序表L
    
        Load(L);        //从文本文件中读取单词存入顺序表L中
        Test(L);
        Print(L);// 将顺序表L中的单词输出到屏幕上
        return 0;
    }
    void Initiate(SqList &L)
    //初始化顺序表L
    {
        L.list=(word *)malloc(INITSIZE*sizeof(word));  	      //为顺序表申请内存空间
        if(!L.list)     //如果申请空间失败,退出程序
        {
            cout<<"内存空间不足!"<<endl;//在屏幕上输出“内存空间不足!”
            exit(0);	//退出程序
        }
        L.length=0;	   //初始化单词表的长度值为0
        L.listsize=INITSIZE; 	  //初始化单词表的容量为INITSIZE值
    }
    void Load(SqList &L)
    //从文本文件中读取单词存入顺序表L中
    {
        FILE *fp; 	  //定义文件指针fp
        char filename[30];
        printf("请输入要测试单词的文件名:");
        scanf("%s",filename);
        if((fp=fopen(filename,"r"))==NULL)    //打开文件,如果文件打开失败,退出程序
        {
            cout<<"文件不存在"<<endl;   //在屏幕上输出“文件不存在!”
            exit(1);
        }
        int i=0;	  //i变量用于记录从文件读入的单词个数
    
        while(!feof(fp)&&i<L.listsize)    //循环读入fp指针指向的文本文件中的每一个单词极其中文翻译
        {
            fgets(L.list[i].spell,100,fp);  //按顺序读出文件中的单词
            fgets(L.list[i].interpretation,100,fp); //按顺序读出文件中的单词翻译
            i++; 	       //单词个数增加1
        }
    
        fclose(fp); 	 //关闭文件
        L.length=i;  	  //将顺序表中单词个数赋值给L.length
    }
    void Print(SqList L)
    
    {
        int i=0;
        while(L.length!=i)
        {
            printf("%s",L.list[i].spell);
            printf("%s",L.list[i].interpretation);//将顺序表L中的单词输出到屏幕上
            i++;
        }
    }
    void Test(SqList L)
        {
        	bool flag[50];
        	for(int i=0;i<L.length;i++)
        		flag[i]=false;
        		int correctnum=0;
        		int i=0;
    		 
            while(correctnum<L.length)
            {	
            	if(flag[i]==false){
    			
                char str[20];
                printf("%s\n",L.list[i].interpretation); //循环输出每一个单词的中文意思,要求用户输入该单词的英文拼写
    
                printf("请输出该单词的英文拼写:");
               scanf("%s",str);
                strcat(str,"\n");
                if(!strcmp(L.list[i].spell,str)){
    				
                    printf("答对了!你真棒\n"); 
    				correctnum++;
    				flag[i]=true; 
    		        //如果该单词拼写输入正确,输出“答对了!你真棒”
    		}
                else{
    				printf("答错了,没关系,再接再厉!\n");	 
    				}     //如果该单词拼写输入错误,输出“答错了,没关系,再接再厉!”
                    getchar();
    				 
            }
    	 	i=(i+1)%L.length;
    	 	
    		}
    }
    
  • 相关阅读:
    innodb下ibd文件组成
    redo在ACID中作用,及一些概念
    mysql innodb安装目录下文件介绍: 日志记录redu/undo log及临时表ibtmp1
    mysql innodb引擎独立表空间记录,表组成及表迁移
    Python之函数、递归、内置函数
    Python之列表、字典、集合
    Python之介绍、基本语法、流程控制
    CSS之Bootstrap(快速布局)
    Django之缓存
    python之class面向对象(进阶篇)
  • 原文地址:https://www.cnblogs.com/tanbo/p/15652822.html
Copyright © 2011-2022 走看看