ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构

2021-12-07 08:01:23  阅读:141  来源: 互联网

标签:顺序 word void 单词 include SqList 数据结构


/本次课任务,从文本文件中读入单词列表,然后显示在屏幕上
#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;
	 	
		}
}

标签:顺序,word,void,单词,include,SqList,数据结构
来源: https://www.cnblogs.com/tanbo/p/15652822.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有