最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)小型電子詞典

 更新時間:2019年03月20日 11:01:06   作者:個快快  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)小型電子詞典,用戶可以進行英譯漢、漢譯英等功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)小型詞典系統(tǒng),供大家參考,具體內(nèi)容如下

1. 題目描述

用C語言編寫一個小型詞典,用戶可以進行英譯漢、漢譯英、刪除修改單詞、添加單詞等功能。       

2.源代碼

/*
  小型詞典系統(tǒng)
  版本:0.9
  作者:個快快
  應用模型:文件增刪改查
*/
#include <stdio.h>
#include <string.h>
int worsNumber = 0; //單詞數(shù)目
//----------------------
//定義結構體存儲詞典數(shù)據(jù)
//----------------------
typedef struct dic
{
  char word[20];
  char cn[80];
}data;
data dictionnarySql[9000];//詞典數(shù)據(jù)庫
//------------
//加載詞典數(shù)據(jù)
//------------
int loadSql(data *sql,char path[100])
{
  int i=0;
  FILE *fp=NULL;
  fp=fopen(path,"r");
  while(fscanf(fp,"%s\t%s",(sql+i)->word,(sql+i)->cn)!=EOF)
  {
    i++;
  }
  fclose(fp);
  printf("共計%d個單詞數(shù)據(jù)\n",i);
  printf("單詞加載完畢,請輸入指令進行操作:\n");
  return (i); //返回單詞數(shù)目
}
//------------
//輸出用戶提示
//------------
void printAction()
{
  printf("-----------------\n");
  printf("1.英譯漢\t|\n");
  printf("2.漢譯英\t|\n");
  printf("3.添加單詞數(shù)據(jù)\t|\n");
  printf("4.刪除單詞數(shù)據(jù)\t|\n");
  printf("5.修正單詞數(shù)據(jù)\t|\n");
  printf("0.退出程序\t|\n");
  printf("-----------------\n");
}
//------------
//指令處理函數(shù)
//------------
void dealAction(int action)
{
  if(action==1)
  {
    char word[20];
    int pos;//單詞位置
    printf("請您輸入要查詢的單詞:");
    scanf("%s",word);
    pos = searchWord(word);
    if(pos!=-1)
      printf("單詞\'%s\'的中文意思是: %s\n",word,dictionnarySql[pos].cn);
    else
      printf("對不起,沒有找到您所需要的單詞\n");
  }
  else if(action==2)
  {
    int pos;
    char cn[80];
    printf("請您輸入漢語詞意(關鍵詞即可):");
    scanf("%s",cn);
    pos = searchCn(cn);
    if(pos!=-1)
      printf("該翻譯的英語單詞是: %s\n",dictionnarySql[pos].word);
    else
      printf("對不起,沒有找到您所需要的翻譯\n");
  }
  else if(action==3)
  {
    char word[20];
    char cn[80];
    printf("請您輸入要補充的單詞:");
    scanf("%s",word);
    strcpy(dictionnarySql[worsNumber].word,word);
    printf("請您輸入該單詞漢語翻譯:");
    scanf("%s",cn);
    strcpy(dictionnarySql[worsNumber].cn,cn);
    worsNumber++;
    saveSql();
    printf("補充單詞完成\n");
 
  }
  else if(action==4)
  {
    char word[50];
    int pos;//單詞位置
    printf("請輸入您要刪除的單詞:");
    scanf("%s",word);
    pos = searchWord(word);
    if(pos!=-1)
    {
      char a[5] = "#";
      strcpy(dictionnarySql[pos].cn,a);
      strcpy(dictionnarySql[pos].word,a);
      saveSql();
      printf("已經(jīng)刪除該單詞\n");
    }
    else
      printf("對不起,沒有找到您所需要的單詞\n");
  }
  else if(action==5)
  {
    char word[50];
    int pos;//單詞位置
    printf("請輸入您要修正的單詞:");
    scanf("%s",word);
    pos = searchWord(word);
    if(pos!=-1)
    {
      printf("請輸入單詞漢語翻譯:");
      char cn[60];
      scanf("%s",cn);
      strcpy(dictionnarySql[pos].cn,cn);
      saveSql();
      printf("已經(jīng)修正該單詞翻譯。\n");
    }
    else
      printf("對不起,沒有找到您所需要的單詞\n");
 
  }
}
//------------------------
//返回單詞在數(shù)據(jù)庫中的位置
//------------------------
int searchWord(char word[20])
{
  int low, mid, high;
  low = 0;
  high = worsNumber;
  while(low<=high)
  {
    mid = (low+high)/2;
    if(strcmp(dictionnarySql[mid].word,word)>0)
      high = mid-1;
    else if(strcmp(dictionnarySql[mid].word,word)<0)
      low = mid+1;
    else
    {
      return mid;
    }
  }
  //若二分查找查詢不到,就執(zhí)行順序查找
  int i=0;
  for(i=0;i<worsNumber;i++)
  {
    if(strcmp(dictionnarySql[i].word,word)==0)
      return i;
  }
  return -1;//如果查詢不到,就返回負數(shù)
}
//------------------------
//返回翻譯在數(shù)據(jù)庫中的位置
//------------------------
int searchCn(char cn[80])
{
  //順序查找
  int i=0;
  for(i=0;i<worsNumber;i++)
  {
    if(strstr(dictionnarySql[i].cn,cn)!=NULL)
      return i;
  }
  return -1;//如果查詢不到,就返回負數(shù)
}
//--------
//保存數(shù)據(jù)
//--------
void saveSql()
{
  FILE *fp=NULL;
  fp=fopen("dictionary.txt","w");
  int i=0;
  for(i=0;i<worsNumber;i++)
  {
    if(dictionnarySql[i].word[0]!='#')
    {
 
      fprintf(fp,"%s\t%s\n",dictionnarySql[i].word,dictionnarySql[i].cn);
    }
  }
  fclose(fp);
}
//----------
//主函數(shù)部分
//----------
int main()
{
  worsNumber = loadSql(dictionnarySql,"dictionary.txt"); //加載單詞
  int action=-1;//定義動作變量
  while(action!=0)
  {
    printAction();
    scanf("%d",&action);
    dealAction(action);
  }
  return 0;
}

效果:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C++中的函數(shù)修飾符深入講解

    C++中的函數(shù)修飾符深入講解

    這篇文章主要給大家介紹了關于C++中函數(shù)修飾符的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • Opencv提取連通區(qū)域輪廓的方法

    Opencv提取連通區(qū)域輪廓的方法

    這篇文章主要為大家詳細介紹了Opencv提取連通區(qū)域輪廓的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 初學C語言基本運算和表達式

    初學C語言基本運算和表達式

    在本文里小編給大家分享的是關于C語言基本運算和表達式的相關知識點,需要的朋友們跟著學習下。
    2019-08-08
  • C++內(nèi)存泄漏檢測和解決方法小結

    C++內(nèi)存泄漏檢測和解決方法小結

    內(nèi)存泄露在編程中是常見的一種問題,一但程序發(fā)生內(nèi)存泄露問題,將導致程序崩潰無法運行,內(nèi)存泄漏是指程序在運行過程中,由于疏忽或錯誤導致已分配的內(nèi)存空間無法被正確釋放,本文給大家就介紹了C++中內(nèi)存泄漏如何檢測和解決,需要的朋友可以參考下
    2025-01-01
  • C++編寫實現(xiàn)圖書管理系統(tǒng)

    C++編寫實現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++編寫實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++中的struct和class的區(qū)別詳解

    C++中的struct和class的區(qū)別詳解

    這篇文章主要介紹了C++中的struct和class的區(qū)別詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • C++多線程實現(xiàn)綁定CPU的方法詳解

    C++多線程實現(xiàn)綁定CPU的方法詳解

    這篇文章主要為大家詳細介紹了C++如何利用多線程實現(xiàn)綁定CPU,文中的示例代碼簡潔易懂,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-05-05
  • C語言菜鳥基礎教程之單精度浮點數(shù)與雙精度浮點數(shù)

    C語言菜鳥基礎教程之單精度浮點數(shù)與雙精度浮點數(shù)

    在C語言中,單精度浮點數(shù)(float)和雙精度浮點數(shù)(double)類型都是用來儲存實數(shù)的,雙精度是用記憶較多,有效數(shù)字較多,數(shù)值范圍較大。
    2017-10-10
  • C++數(shù)據(jù)結構之實現(xiàn)鄰接表

    C++數(shù)據(jù)結構之實現(xiàn)鄰接表

    這篇文章主要為大家詳細介紹了C++數(shù)據(jù)結構之實現(xiàn)鄰接表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++?Boost?Spirit精通教程

    C++?Boost?Spirit精通教程

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11

最新評論

都兰县| 乡宁县| 望谟县| 原阳县| 项城市| 荣成市| 莱芜市| 松潘县| 根河市| 绥化市| 沙雅县| 东莞市| 东辽县| 南皮县| 资源县| 旬邑县| 陇川县| 日土县| 高邮市| 罗甸县| 略阳县| 方城县| 咸阳市| 渭南市| 射洪县| 北京市| 磐石市| 兰坪| 石狮市| 疏勒县| 龙里县| 崇左市| 巍山| 万年县| 永德县| 梁山县| 宁国市| 衡阳县| 永州市| 扎兰屯市| 通江县|