當前位置:首頁 » 編程語言 » c語言的結構是字典嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的結構是字典嗎

發布時間: 2022-06-29 07:42:12

『壹』 生日相同問題,c語言編程,用字典結構解決,求解啊速度~~~

樓主要求用C,麻煩呢,如果用C++倒是方便多了,閑著沒事做,簡單寫了下,看下就好


#include <iostream>
#include <map>
#include <list>
#include <string>
using namespace std;
struct BirthInfo
{
int month;
int day;
BirthInfo()
{
month = 0;
day = 0;
}
bool operator == (const BirthInfo& rhs ) const
{
if ( month == rhs.month && day == rhs.day )
{
return true;
}
return false;
}
bool operator < (const BirthInfo& rhs ) const
{
if ( month < rhs.month )
{
return true;
}
else if ( month == rhs.month )
{
if ( day < rhs.day )
{
return true;
}
}
return false;
}
};
struct SameBirthInfo
{
int nCount;
list<string> StrNoList;
SameBirthInfo()
{
nCount = 0;
}
};
typedef map<BirthInfo , SameBirthInfo> Result;
int main()
{
int nStudentCount = 0;
string strNo = "";
BirthInfo BirInfo;
Result result;
SameBirthInfo sameBirthInfo;
cin >> nStudentCount;
while( nStudentCount -- > 0 )
{
cin >> strNo >> BirInfo.month >> BirInfo.day;
Result::iterator iter = result.find( BirInfo );
if ( iter == result.end() )
{
//找不到
pair<Result::iterator , bool> pInsRet = result.insert( Result::value_type(BirInfo,sameBirthInfo) );
if ( pInsRet.second )
{
pInsRet.first->second.nCount = 1; //記錄下此生日有一人
pInsRet.first->second.StrNoList.push_back( strNo ); //記錄下此人學號
}
}
else
{
//找到
iter->second.nCount++; //同一天生日人數++
iter->second.StrNoList.push_back( strNo ); //保存下這個學生的學號
}
}
//輸出所有結果
Result::const_iterator cIter = result.begin();
while ( cIter != result.end() )
{
//先輸出生日
cout << cIter->first.month << " " << cIter->first.day;
//輸出所有學生學號
list<string>::const_iterator cStrIter = cIter->second.StrNoList.begin();
while ( cStrIter != cIter->second.StrNoList.end() )
{
cout << " " << cStrIter->c_str();
++cStrIter;
}
cout << endl;
++cIter;
}
return 0;
}

『貳』 計算機三級包括:PC技術,信息管理技術,網路技術,資料庫技術。那麼C語言三級是屬於什麼的。。。

不是二級C嗎?考筆試和編程

大綱:
基本要求

1、 掌握演算法的基本概念。

2、 掌握基本數據結構及其操作。

3、 掌握基本排序和查找演算法。

掌握逐步求精的結構化程序設計方法。

4、 掌握軟體工程的基本方法,具有初步應用相關技術進行軟體開發的能力。

考試內容

一、基本數據結構與演算法

1、 演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)。

2、 數據結構的定義;數據的邏輯結構與存儲結構;數據結構的圖形表示;線性結構與非線性結構的概念。

3、 線性表的定義;線性表的順序存儲結構及其插入與刪除運算。

4、 棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。

5、 線性單鏈表、雙向鏈表與循環鏈表的結構及其基本運算。

6、 樹的基本概念;二*樹的定義及其存儲結構;二*樹的前序、中序和後序遍歷。

7、 順序查找與二分法查找演算法;基本排序演算法(交換類排序,選擇類排序,插入類排序)。

二、程序設計基礎

1、 程序設計方法與風格。

2、 結構化程序設計。

3、 面向對象的程序設計方法,對象,方法,屬性及繼承與多態性。

三、軟體工程基礎

1、 軟體工程基本概念,軟體聲明周期概念,軟體工具與軟體開發環境。

2、 結構化分析方法,數據流圖,數據字典,軟體需求規格說明書。

3、 結構化程序設計方法,總體設計與詳細設計。

4、 軟體測試的方法,白盒測試與黑盒測試,測試用例設計,軟體測試的實施,單元測試,集成測試和系統測試。

5、 程序的調試,靜態調試與動態調試。

四、資料庫設計基礎

1、 資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統。

數據模型,實體練習模型及E-R圖,從E-R圖導出關系數據模型。

2、 關系代數運算,包括幾何運算及選擇、投影、連接運算,資料庫規范化理論。

資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略。

公共基礎知識

基本要求
1. 熟悉TURBO C集成環境。
2. 熟練掌握結構化程序設計的方法,具有良好的程序設計風格。
3. 掌握程序設計中簡單的數據結構和演算法。
4. TURBO C的集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。
考試內容
一、C語言的結構
1. 程序的構成,MAIN函數和其他函數。
2. 頭文件,數據說明,函數的開始和結束標志。
3. 源程序的書寫格式。
4. C語言的風格。
二、數據類型及其運算
1. C的數據類型(基本類型、構造類型、指針類型、空類型)及其定義方法。
2. C運算符的種類、運算優先順序和結合性。
3. 不同類型數據間的轉換與運算。
4. C表達式類型(賦值表達式,算術表達式,關系表達式,邏輯表達式,條件表達式,逗號表達式)和求值規則。
三、基本語句
1. 表達式語句,空語句,復合語句。
2. 數據的輸入與輸出,輸入輸出函數的調用。
3. 復合語句。
4. GOTO語句和語句標號的使用。
四、選擇結構程序設計
1. 用IF語句實現選擇結構。
2. 用SWITCH語句實現多分支選擇結構。
3. 選擇結構的嵌套。
五、循環結構程序設計
1. FOR循環結構。
2. WHILE和DO WHILE循環結構。
3. CONTINUE語句和BREAK語句。
4. 循環的嵌套。
六、數組的定義和引用
1. 一維數組和多維數組的定義、初始化和引用。
2. 字元串與字元數組。
七、函數
1. 庫函數的正確調用。
2. 函數的定義方法。
3. .函數的類型和返回值。
4. 形式參數與實在參數,參數值的傳遞。
5. 函數的正確調用,嵌套調用,遞歸調用。
6. 局部變數和全局變數。
7. 變數的存儲類別(自動,靜態,寄存器,外部),變數的作用域和生存期。
8. 內部函數與外部函數。
八、編譯預處理
1. 宏定義:不帶參數的宏定義;帶參數的宏定義。
2. 「文件包含」處理。
九、指針
1. 指針與指針變數的概念,指針與地址運算符。
2. 變數、數組、字元串、函數、結構體的指針以及指向變數、數組、字元串、函數、結構體的指針變數。通過指針引用以上各類型數據。
3. 用指針作函數參數。
4. 返回指針值的指針函數。
5. 指針數組,指向指針的指針,MAIN函數的命令行參數。
十、結構體(即「結構」)與共用體(即「聯合」)
1. 結構體和共用體類型數據的定義方法和引用方法。
2. 用指針和結構體構成鏈表,單向鏈表的建立、輸出、刪除與插入。
十一、位運算
1. 位運算符的含義及使用。
2. 簡單的位運算。
十二、文件操作
只要求緩沖文件系統(即高級磁碟I/O系統),對非標准緩沖文件系統(即低級磁碟I/O系統)不要求。
1. 文件類型指針(FILE類型指針)。
2. 文件的打開與關閉(FOPEN,FCLOSE)。
3. 文件的讀寫(FPUTC,FGETC,FPUTS,FGETS,FREAD,FWRITE,FPRINTF,FSCANF函數),文件的定位(REWIND,FSEEK函數)。
考試方式
1. 筆試:120分鍾,滿分100分,其中含公共基礎知識部分的30分。
2. 上機:60分鍾,滿分100分。

『叄』 C語言!!!!字典!!!!!

#include <iostream>
#include <map>
#include <cstdio>
#include <string>
using namespace std ;

map<string,string> m ;

int main( )
{
char s[42] , *p , *q ;
int i ;

while( gets( s ) && s[0] != '\0' )
{
p = strtok( s , " " ) ;
q = strtok( NULL , " " ) ;

m[q] = p ;
}

while( ~scanf("%s", s ) )
{
if( m.find( s ) != m.end() )
printf("%s\n", m[s].c_str() ) ;
else
printf("eh\n") ;
}

return 0 ;
}

『肆』 請問C語言中有類似python中字典的東西嗎

沒有

可以自己構造

簡單說,python 比 c 更高級,就類似與 c 比匯編語言更高級那樣

『伍』 C語言想用字典數據結構的話要自己寫嗎標准庫有嗎或者第三方庫有嗎

標准庫沒有,C++有,就是個hash表類型么,比如glibc這個第三方庫就有。

『陸』 如何用c語言的數據結構做一個英語詞典,要求是:用二叉樹,能實現建立詞典,查找插入刪除單詞

#include
<stdio.h>
#include
<malloc.h>
#include
<string.h>
#include
<ctype.h>
#define
MAXWORD
100
typedef
struct
tnode{
char
*word;
int
count;
struct
tnode
*left;
struct
tnode
*right;
//
tnode(char
*s,
int
w,
tnode
*p,
tnode
*q){
//
//
}
}*tnodeptr;
struct
tnode
*addtree(struct
tnode
*,
char
*);
void
deltree(struct
tnode
*,
char
*);
void
treeprint(struct
tnode*,
FILE
*fp,
int
n,
int
&m);
void
showMenu();
void
main()
{
int
N,
k;
FILE
*fp;
struct
tnode
*root;
char
word[MAXWORD],
txt[25];
root=NULL;
while
(1)
{
showMenu();
scanf("%d",
&N);
switch(N)
{
case
1:
printf("連續輸入,字元
0
結束:\n");
while
(scanf("%s",
word)!=EOF)
{
if(word[0]=='0')
break;
if(isalpha(word[0]))
root=addtree(root,
word);
}
printf("單詞已插入\n");
break;
case
2:
if(root==NULL)
{printf("NULL字典\n");
break;}
printf("字典:\n");
treeprint(root,
fp,
0,k
=
1);
break;
case
3:
printf("輸入刪除的單詞\n");
scanf("%s",
word);
deltree(root,
word);
break;
case
4:
printf("輸入保存文件名:
");
scanf("%s",
txt);
strcat(txt,
".txt");
fp=fopen(txt,
"w");
if(fp==NULL)
{printf("文件寫錯誤!");
break;}
treeprint(root,
fp,
1,
k
=
1);
fclose(fp);
printf("以保存到%s
\n",
txt);
break;
case
0:
return
;
default:
printf("輸入錯誤!");
break;
}
}
return
;
}
struct
tnode*
talloc();
char
*strp(char*);
struct
tnode
*addtree(struct
tnode
*p,
char
*w)
{
int
cond;
if
(p==NULL)
{
p=talloc();
p->word=strp(w);
p->count=1;
p->left=p->right=NULL;
}
else
if((cond=strcmp(w,
p->word))==0)
p->count++;
else
if
(cond<0)
p->left=addtree(p->left,
w);
else
p->right=addtree(p->right,
w);
return
p;
}
/**************************************************************************
*
分4種情況:
*
1.
葉子結點:直接刪除;
*
2.
結點只有左孩子:將該左孩子連接到該結點的雙親;
*
3.
結點只有右孩子:將該右孩子連接到該結點的雙親;
*
4.
結點有左右孩子:
*
a.
將該結點左子樹的最右結點與該結點互換,然後刪除左子樹的最右結點;
*
或者
*
b.
將該結點右子樹的最左結點與該結點互換,然後刪除右子樹的最左結點。
***************************************************************************/
void
deltree(struct
tnode
*p,
char
*w)
{
int
co,
t=0;
struct
tnode
*q=NULL,
*r=NULL;
while
(p!=NULL
&&
(co=strcmp(w,
p->word))!=0)
{
if(co
<
0)
{q
=p;
p=p->left;
t
=1;}
else
{q
=p;
p=p->right;
t
=0;}
}
if(p==NULL)
printf("沒有此單詞!\n");
else
if
(p->left==NULL
&&
p->right==NULL)
//<1>
{
if(t==1)q->left=
NULL;
else
q->right=NULL;
}
else
if(p->left
&&
p->right==NULL)
//<2>
{
if(t==1)
q->left=p->left;
else
q->right
=p->left;
}
else
if(p->left==NULL
&&
p->right)
//<3>
{
if(t==1)q->left=p->right;
else
q->right=p->right;
}
else
//<4>
{
r=p->left;
while(r->right)r
=r->right;
r->right
=p->right;
if(t==1)q->left
=
r;
else
q->right
=
r;
}
printf("已刪除:%s
\n",
w);
return
;
}
//------------------------
//print
//------------------------
void
treeprint(struct
tnode*
p,FILE
*fp,
int
n,
int
&m)
{
if(p!=NULL)
{
treeprint(p->left,
fp,
n,m);
if(n)fprintf(fp,
"%-4d%-4d%s\n",m++,p->count,p->word);
else
printf("%-4d%-4d%s\n",m++,p->count,p->word);
treeprint(p->right,
fp,
n,m);
}
}
struct
tnode
*talloc()
{
return
(struct
tnode*)malloc(sizeof(struct
tnode));
}
char
*strp(char*s)
{
char
*p;
p=(char*)malloc(strlen(s)+1);
if(p!=NULL)
strcpy(p,
s);
return
p;
}
void
showMenu()
{
printf("\n
輸入選擇\t
\
\n
1.
輸入單詞
\
\n
2.
查看字典
\
\n
3.
刪除單詞
\
\n
4.
保存字典
\
\n
0.
退出\n");
}

『柒』 在一個C語言源代碼裡面有一個叫「編碼字典」的結構體,設定這種結構體有什麼意義啊

沒用過,但根據你結構體的定義可以看出,你可以對輸入字元進行自定義編碼以方便某些操作

也就是說英文字元對應編碼是ASC碼,你可以改成其他對應字元編碼

『捌』 如何用c語言的數據結構做一個英語詞典,要求是:用二叉樹,能實現建立詞典,查找插入刪除單詞

自己寫吧,別人只能告訴你思路。
如果別人替你寫了,壞處
(1)浪費別人時間
(2)你什麼都沒學會
好處
(1)你去交差
壞處多於好處,為什麼要替你寫?