當前位置:成語大全網 - 新華字典 - 求c語言數據結構上機題代碼(用數組來做)

求c語言數據結構上機題代碼(用數組來做)

#include <stdio.h>

#include"string.h"

#include <stdlib.h>

#define N 100000

#define M 10000

int fun(char a[])

{

int sum=0;

for(int i=0;i<strlen(a);i++)

sum+=a[i];//字符數字化→ACSII碼之和是單詞標誌之壹;?

return sum;

}

int main() {

/*_________________________________________________*/

FILE *fp;

char b[N + 1];

//判斷文件是否打開

if ( (fp = fopen("D:\\英語論文.txt", "rt")) == NULL )/*這裏D:\\ 英語論文.txt 是路徑;讀取D盤下,名為(英語論文)的文本文件*/?

{

puts("文件讀取失敗!\n");

exit(0);

}

else

{

puts("文件讀取成功");

puts("開始計算");

}?

//循環讀取文件的每壹行數據

while( fgets(b, N, fp) != NULL )

{

/*__________________________________________*/

int d[M]={0},x=0;

char a[111][11]={'\0'};

char t[11]={'\0'};

int k=0,j=0;?

for(int i=0;i<strlen(b);i++)

{

if((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z'))//不是空格就儲存在二維數組中,壹行壹個單詞;?

a[k][j++]=b[i];

if(b[i]==' ')//遇到下壹個空格就換行,進而開始下壹個單詞的儲存;?

{

k++;

j=0;

}

}

int max=fun(a[0]);

for(int i=0;i<=k;i++)

{

d[fun(a[i])]++;//用每個單詞的ASCII碼之和桶排序,這也即是字典序;?

if(fun(a[i])>max)

max=fun(a[i]);//找出最大的作為上限;?

}

int name;

for(int i=0;i<=max;i++)

{

name=0;

for(int j=0;j<=k;j++)

{

if(fun(a[j])==i)/*a[j]的ASCII碼之和等於i,說明d[i]是記錄單詞a[j]的,d[i]的數就是a[j]出現的頻率;*/?

{

name=j;//記錄單詞下標;?

}

}

if(d[i]!=0)//d[i]!=0即i是某個單詞的ASCII碼之和;?

{

printf("%s %d\n",a[name],d[i]);//輸出?

}

}

/*___________________________________________*/

}

//結束關閉文件

fclose(fp);

return 0;

}

這是修改過的,不過沒太大變化,只是加了壹個文件讀取代碼;