(完整word版)C语言源代码

(完整word版)C语言源代码
(完整word版)C语言源代码

剪刀石头布源代码

#include

#include

main()

{

int d,x;

{

printf("请输入:1是剪刀,2是石头,3是布");

scanf("%d",&d);

x=rand()%3;

if(d==x)

printf("双方平局");

else if((d==1&&x==2)||(d==2&&x==3)||(d==3&&x==1)) printf("你赢了");

else

printf("电脑赢了");

}

}

简单计算器

#include

main()

{

int a,b,d=0;

char c;

while(d==0)

{

printf("请开始计算,请输入需要运算的数字和运算法则,数字符号数字:"); scanf("%d%c%d",&a,&c,&b);

switch(c)

{

case'+':

printf("%d+%d=%d\n",a,b,a+b);

break;

case'-':

printf("%d-%d=%d\n",a,b,a-b);

break;

case'*':

printf("%d*%d=%d\n",a,b,a*b);

break;

case'/':

if(0==b)

printf("除法被除数不能为零!\n") ;

else

printf("%d/%d=%d\n",a,b,a/b);

break;

}

}

}

加油站加油问题

#include

int main()

{

double a = 3.25, b = 3.00, c= 2.75;

double d = 0.05, e = 0.10, m;

int x,y,z;

printf("请输入您要的加油量:");

scanf("%d",&x);

printf("请输入您要的汽油种类,1-a型汽油售价3.25元/千克,2-b型汽油售价3.00元/千克,3-c型汽油售价2.75元/千克:");

scanf("%d",&y);

printf("请输入您要的服务类型,1-自己加服务优惠0.05,2-协助加服务优惠0.10:"); scanf("%d",&z);

switch(y)

{

case 1:

y = a;break;

case 2:

y = b;break;

case 3:

y = c;break;

}

if(z == 1)

m = (1 - d) * y * x;

else if(z == 2)

m = (1 - e) * y * x;

printf("您需要支付:%f 元,谢谢惠顾,欢迎下次再来",m);

return 0;

}

猜数字游戏

#include

#include

int main()

{

int d=1,e=0;

int a,b,t;

printf ("请输入1-10以内的整数,\n ");

while(d==1)

{

printf("玩家的选择: ");

scanf("%d",&a);

do

{

if((a>=0)&&(a<11))break;

else

{printf("错误");

scanf("%d",&a);}

}

while(e==0);

b=rand()%10+1;

printf("npc:%d",b);

t=a-b;

if(t==0)

printf("\nRight!\n");

else if(t<0)

printf("\n Wrong !太小了\ n");

else if(t>0)

printf("\n Wrong !太大了\ n");

}

return 0;

}

万年历

#include

#include

void setmonth(int r);

void main(void)

{

int year,month,day,a,b,i,j,d,x,mon,k;

do

{

printf("----------------------------------------------------\n");

printf(" 查全年,输入1!\n");

printf(" 查月份,输入2!\n");

printf(" 查日期,输入3!\n");

printf(" 继续?输入4!\n");

printf(" 退出,输入5!\n");

printf("-----------------------------------------------------\n");

printf("请输入:");

scanf("%d",&x);

if(x==1)

{

month=12;

printf("输入年份:");

scanf("%d",&year);

}

if(x==2)

{

printf("输入年份:");

scanf("%d",&year);

printf("输入月份:");

scanf("%d",&month);

}

if(x==3)

{

printf("输入年份:");

scanf("%d",&year);

printf("输入月份:");

scanf("%d",&mon);

printf("输入日期:");

scanf("%d",&day);

month=mon-1;

}

if(x==5)

exit(100);

a=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400)%7;

for(i=1,d=0;i<=month;i++)

{

switch(i)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:d=31;break;

case 2:if(!(year%4)&&(year%100)||!(year%400))

d=29;

else

d=28;

break;

case 4:

case 6:

case 9:

case 11:d=30;

}

b=a%7;

a+=d;

if(x==1)

{

printf("========================================================\n");

setmonth(i);

printf("************************************************\n");

printf("========================================================\n");

printf(" 星期一星期二星期三星期四星期五星期六星期天\n");

for(j=1;j<=b;j++)

printf("%8c",' ');

for(j=1;j<=d;j++)

{

printf("%8d",j);

if((j+b)%7==0)

printf("\n");

}

}

if(x==1)

printf("\n");

}

if(x==2)

{

printf("========================================================\n");

setmonth(i-1);

printf("************************************************\n");

printf("========================================================\n");

printf(" 星期一星期二星期三星期四星期五星期六星期天\n");

for(j=1;j<=b;j++)

printf("%8c",' ');

for(j=1;j<=d;j++)

{

printf("%8d",j);

if((j+b)%7==0)

printf("\n");

}

printf("\n");

}

if(x==3)

{

a+=day;

a%=7;

switch(a)

{

case 0:printf("%d.%d.%d 星期一!",year,mon,day);break;

case 1:printf("%d.%d.%d 星期二!",year,mon,day);break;

case 2:printf("%d.%d.%d 星期三!",year,mon,day);break;

case 3:printf("%d.%d.%d 星期四!",year,mon,day);break;

case 4:printf("%d.%d.%d 星期五!",year,mon,day);break;

case 5:printf("%d.%d.%d 星期六!",year,mon,day);break;

default:printf("%d.%d.%d 星期天!",year,mon,day);

}

printf("\n");

}

printf("是否继续?输入4继续,输入5退出:");

scanf("%d",&k);

} while(k==4);

if(k==5)

exit(100);

}

void setmonth(int r)

{

switch(r)

{

case 1:printf("%4c 一月份",' ');break;

case 2:printf("%4c 二月份",' ');break;

case 3:printf("%4c 三月份",' ');break;

case 4:printf("%4c 四月份",' ');break;

case 5:printf("%4c 五月份",' ');break;

case 6:printf("%4c 六月份",' ');break;

case 7:printf("%4c 七月份",' ');break;

case 8:printf("%4c 八月份",' ');break;

case 9:printf("%4c 九月份",' ');break;

case 10:printf("%4c 十月份",' ');break;

case 11:printf("%2c 十一月份",' ');break;

default:printf("%2c 十二月份",' ');

}

}

ATM机

# include

# include

# define Password 123456

main ()

{

int a,i,b,q,c;

float m;

m=3000.00;

for (i=0;i<=2;i++)

{printf("请输入密码\n");

scanf("%d",&a);

if(a==Password)

{printf("密码正确,欢迎使用\n");

break;}

else

printf("密码错误,请重新输入\n");}

{if (a!=Password)

printf("您的操作错误超过3次,请取回卡\n");

else

{system("cls");

printf("1.取款\n2.存款\n3.查询余额\n4.退出\n");

}}

while(b!=4)

{

scanf("%d",&b);

switch(b)

{

case 1: system("cls");printf("请输入你要取款的金额\n");

scanf(" %d",&q); printf("取款成功,请选择你要进行的操作\n");m=m-q;break;

case 2: system("cls");printf("请输入你要存入的金额\n");scanf(" %d",&c);m=m+c;

;printf("存款成功,请选择你要进行的操作\n");break;

case 3: system("cls");printf("您的余额为%.2f\n",m);break;

case 4: system("cls");printf("谢谢使用");break;

}

}

return 0;}

学生成绩

#include

#include

float s[3][4];

int r=0,c=0;

void pjf(void)

{

int i,j,cour = 0;

for(j=0;j<4;j++)

{

for(i=0;i<3;i++)

cour+=s[i][j];

printf("第%d课的平均分是%d\n",(j+1),cour/3);

cour = 0;

}

}

void dkzg(void)

{

int i,j,high=0;

for(j=0;j<4;j++)

{

for(i=0;i<3;i++)

{

if(s[i][j]>high)

{

high=s[i][j];

r=i+1;

c=j+1;

}

}

printf("最高分是%d,学生是%d,课程是%d\n",high,r,c);

r=0;

c = 0;

high = 0;

}

}

int main()

{

int i,j;

float score=0;

for(i=0;i<3;i++)

{

printf("enter NO.%d score\n",i+1);

for(j=0;j<4;j++)

{

scanf("%f",&s[i][j]);

score += s[i][j];

}

printf("第%d个学生的平均分是%f\n",(i+1),score/4);

score = 0;

}

pjf();

dkzg();

return 0;

}

选票问题

#include

void main()

{

int i=1;

char j;

int num[4]={0,0,0,0};

printf("3位候选人,分别为A,B,C D为无效票,开始投票\n"); while(i<=10)

{

printf("请输入第%d个的选票",i);

scanf("%c",&j);

switch(j)

{

case 'A':num[0]++;i++;break;

case 'B':num[1]++;i++;break;

case 'C':num[2]++;i++;break;

case 'D':num[3]++;i++;break;

}

getchar();

}

printf("A获得%d张选票\n",num[0]);

printf("B获得%d张选票\n",num[1]);

printf("C获得%d张选票\n",num[2]);

printf("无效票为%d张\n",num[3]);

}

打字母游戏

#include

#include

#include

#include

#include

#include

// 欢迎界面

void welcome()

{

// 输出屏幕提示

cleardevice(); //清除屏幕内容,用当前背景色清空屏幕,并将当前点移至(0, 0)。

setcolor(RED); //设置当前绘图前景色为红色,字体颜色为红色

setfont(64, 0, "黑体");//设置当前字体样式为黑体,大小为64

outtextxy(160, 50, "打字母游戏");//在指定位置输出字符串。

setcolor(GREEN);//设置当前绘图前景色为绿色,即文字颜色为绿色

setfont(16, 0, "宋体");//设置当前字体样式为宋体

outtextxy(200, 200, "本游戏是一个简单传统的游戏");//在指定位置输出字符串。

outtextxy(200, 240, "就是随机出现些字母然后游戏");//在指定位置输出字符串。

outtextxy(200, 280, "者敲键盘把它消除用以锻炼游");//在指定位置输出字符串。

outtextxy(200, 320, "者的反应能力,来试试吧");//在指定位置输出字符串。

// 实现闪烁的"按任意键继续"

int c=255;

while(!kbhit()) //没有按键时循环继续

{

setcolor(RGB(c, 0, 0));//设置当前绘图前景色为红色色

outtextxy(280, 400, "按任意键继续");//在指定位置输出字符串

c -= 8; //变量c的值自减去8

if (c < 0) c = 255;

Sleep(20);//调用Sleep()函数延时20毫秒

}

getch();//等待用户从键盘按任意一个键,退出循环

cleardevice();//用当前背景色清空屏幕,并将当前点移至(0, 0)。

}

// 难度界面

int welcome2()

{

int i;// 输出屏幕提示

cleardevice(); //清除屏幕内容,用当前背景色清空屏幕,并将当前点移至(0, 0)。

setcolor(YELLOW); //设置当前绘图前景色为黄色,字体颜色为黄色

setfont(64, 0, "黑体");//设置当前字体样式为黑体,大小为64

outtextxy(160, 50, "难度选择");//在指定位置输出字符串。

setcolor(GREEN);//设置当前绘图前景色为绿色,即文字颜色为绿色

setfont(16, 0, "宋体");//设置当前字体样式为宋体

outtextxy(100, 160, "初级");//在指定位置输出字符串。

outtextxy(100, 200, "中级");//在指定位置输出字符串。

outtextxy(100, 240, "高级");//在指定位置输出字符串。

outtextxy(100, 280, "终极");//在指定位置输出字符串。

outtextxy(100, 380, "初级选择1,中级选择2,高级选择3,终极4,退出5");

scanf("%d",&i);

return i;

}

//过关界面

void ok()

{

cleardevice();

setcolor(YELLOW);

setfont(48, 0, "黑体");

outtextxy(104, 180, "恭喜过关,再接再厉");

getch();

}

//未过界面

void gameover()

{

cleardevice();

setcolor(YELLOW);

setfont(48, 0, "黑体");

outtextxy(104, 180, " GAME OVER");

getch();

}

// 退出界面

void goodbye()

{

cleardevice();//用当前背景色清空屏幕,并将当前点移至(0, 0)。

setcolor(BLUE);//设置当前绘图前景色为蓝色

setfont(48, 0, "黑体");//设置输出字符串的字体为黑体,大小为48

outtextxy(40, 180, "其实游戏可以适当玩玩的!");

getch();//等待用户从键盘按任意一个键

}

// 主函数

void main()

{

int a;

initgraph(640, 480); // 初始化屏幕为640x480

welcome(); // 显示欢迎界面

bb:a=welcome2();

cleardevice(); //清除屏幕内容,用当前背景色清空屏幕,并将当前点移至(0, 0)。

srand(time(NULL)); // 设置随机种子

setfont(20, 0, "黑体"); // 设置字母的字体和大小

setfillstyle(BLACK); // 设置清除字母的填充区域颜色

char target,target1; // 目标字母

char key; // 用户的按键

int x, y,b=51,c=48; // 字母的位置

switch(a)

{

case 1:

{

while(true)

{

target = 65 + rand() % 26; // 产生任意大写字母

x = rand() % 550; // 产生任意下落位置

for (y=0; y<460; y++)

{

setcolor(GREEN); // 设置字母的颜色

outtextxy(x, y, target);

setcolor(RED);

outtextxy(550, 80, "生\t命\t值");

outtextxy(600, 120, b);

setcolor(GREEN);

outtextxy(560, 450, "分值");

outtextxy(600, 450, c);

if(kbhit())

{

key = getch(); // 获取用户按键

if((key != target) && (key != target + 32))

b=b-1;

if((key == target) || (key == target + 32))

{

// 按键正确,"击落"字母(画黑色方块擦除)

bar(x, y, x + 20, y + 20);

c=c+1;

break; // 跳出循环,进行下一个字母

}

else if (key == 27)

{

goto EXIT; // 如果按ESC,退出游戏主循环

}

}

if(y==459) b=b-1;

if(b==48) goto over;

if(c==57) goto win;

Sleep(10);

bar(x, y, x + 20, y + 20);

}

}

}break;

case 2:

{

while(true)

{

target = 65 + rand() % 26; // 产生任意大写字母

x = rand() % 550; // 产生任意下落位置

for (y=0; y<460; y=y+2)

{

setcolor(GREEN); // 设置字母的颜色

outtextxy(x, y, target);

outtextxy(x+160,y,target1);// 显示字母

setcolor(RED); // 显示字母

outtextxy(550, 80, "生命值");

outtextxy(600, 120, b);

setcolor(GREEN);

outtextxy(560, 450, "分值");

outtextxy(600, 450, c);

if(kbhit())

{

key = getch(); // 获取用户按键

if((key != target) && (key != target + 32))

b=b-1;

if((key == target) || (key == target + 32))

{

bar(x, y, x + 20, y + 20);

c=c+1;

break;

}

else if (key == 27) goto EXIT; // 如果按ESC,退出游戏主循环

}

if(y==459) b=b-1;

if(b==48) goto over;

if(c==57) goto win;

Sleep(1);

bar(x, y, x + 20, y + 20);

}

}

}break;

case 3:

{

while(true)

{

target = 65 + rand() % 26; // 产生任意大写字母

x = rand() % 550; // 产生任意下落位置

for (y=0; y<460; y=y+1)

{

setcolor(GREEN); // 设置字母的颜色

outtextxy(x, y, target);

setcolor(RED); // 显示字母

outtextxy(550, 80, "生\t命\t值");

outtextxy(600, 120, b);

setcolor(GREEN);

outtextxy(560, 450, "分值");

outtextxy(600, 450, c);

if(kbhit())

{

key = getch(); // 获取用户按键

if((key != target) && (key != target + 32))

b=b-1;

if((key == target) || (key == target + 32))

{

// 按键正确,"击落"字母(画黑色方块擦除)

bar(x, y, x + 20, y + 20);

c=c+1;

break; // 跳出循环,进行下一个字母

}

else if (key == 27) goto EXIT; // 如果按ESC,退出游戏主循环

}

if(y==459) b=b-1;

if(b==48) goto over;

if(c==57) goto win;

int i;

for(i=0;i<1000000;i++);

bar(x, y, x + 20, y + 20);

}

}

}break;

case 4:

{

while(true)

{

target = 65 + rand() % 26; // 产生任意大写字母

x = rand() % 550; // 产生任意下落位置

for (y=0; y<460; y++)

{

setcolor(GREEN); // 设置字母的颜色

outtextxy(x, y, target);

outtextxy(x+160,y,target1);// 显示字母

setcolor(RED); // 显示字母

outtextxy(550, 80, "生命值");

outtextxy(600, 120, b);

setcolor(GREEN);

outtextxy(560, 450, "分值");

outtextxy(600, 450, c);

if(kbhit())

{

key = getch(); // 获取用户按键

if((key != target) && (key != target + 32))

b=b-1;

if((key == target) || (key == target + 32))

{

bar(x, y, x + 20, y + 20);

c=c+1;

break;

}

else if (key == 27) goto EXIT; // 如果按ESC,退出游戏主循环

}

if(y==459) b=b-1;

if(b==48) goto over;

if(c==57) goto win;

int i;

for(i=0;i<1000000;i=i+2);

bar(x, y, x + 16, y + 16);

}

}

}break;

case 5:

goto EXIT;break;

}

over: gameover(); goto bb;

win: ok(); goto bb;

EXIT: goodbye(); closegraph(); // 关闭图形界面}

word域代码的详解

word域代码详解 十个特殊指令(域开关),分别是: 1.数组\A、 2.括号\B、 3. 位移\D、 4.分式\F、 5.积分\I、 6.列表\L、 7.重叠\O、 8.根号\R、 9.上下标\S、 10.框\X, 每个开关又有若干个选项,用以精确调节格式。 1. 数组开关\A(): 按行顺序将数组元素排列为多列 域代码:{EQ \a(100,2,31) } 讲解:{EQ\列表(100,2,31排成一列)} 可用参数:\al左对齐;\ac居中;\ar右对齐;\con元素排成n 列;\vsn行间增加n 磅;\hsn列间增加n磅 \al左对齐 域代码:{EQ \a\al(100,2,31)} 讲解:{EQ \列表\左对齐(100,2,31)} \ac居中 域代码:{EQ \a\ac(100,2,31) } 讲解:{EQ \列表\居中对齐(100,2,31)} \ar右对齐 域代码:{EQ \a\ar(100,2,31) } 讲解:{EQ \列表\右对齐(100,2,31)} \con元素排成n列 域代码:{EQ \a\co3(10,2,31,0,1,0,14,3,55)} 讲解:{EQ \列表\元素排成3 列(10,2,31,0,1,0,14,3,55)} \vsn 行间增加n磅 域代码:{EQ \a\co3\vs2(10,2,31,0,1,0,14,3,55)} 讲解:{EQ \列表\元素排成3列\行间增加2磅} \hsn 列间增加n磅 域代码:{EQ \a\co3\vs2\hs4(10,2,31,0,1,0,14,3,55)} 讲解:{EQ \列表\元素排成3列\行间增加2磅\列间增加4磅} 2. 括号开关\B(): 用大小适当的括号括住元素。 域代码:{EQ \b( \a(100,2,31)) } 讲解:{EQ \加括号( \数组(100,2,31))} 可用参数:左括号使用字符* \lc\*;右括号使用字符* \rc\* ;左右括号都使用字符* \bc\* \lc\* 左括号使用字符* 域代码:{EQ \b\lc\|( \a(100,2,31))} 讲解:{EQ \加括号\左括号使用字符|( \数组(100,2,31)) } \rc\* 右括号使用字符* 域代码:{EQ \b\rc\|( \a(100,2,31)) } 讲解:{EQ \加括号\右括号使用字符|( \数组(100,2,31))} \bc\* 左右括号都使用字符*

ii.c语言本质26链表、二叉树和哈希表3哈希表

第 26 章链表、二叉树和哈希表 3. 哈希表 下图示意了哈希表(Hash Table)这种数据结构。 图 26.12. 哈希表 如上图所示,首先分配一个指针数组,数组的每个元素是一个链表的头指针,每个链表称为一个槽(Slot)。哪个数据应该放入哪个槽中由哈希函数决定,在这个例子中我们简单地选取哈希函数h(x) = x % 11,这样任意数据x都可以映射成0~10之间的一个数,就是槽的编号,将数据放入某个槽的操作就是链表的插入操作。 如果每个槽里至多只有一个数据,可以想像这种情况下search、insert和delete 操作的时间复杂度都是O(1),但有时会有多个数据被哈希函数映射到同一个槽中,这称为碰撞(Collision),设计一个好的哈希函数可以把数据比较均匀地分布到各个槽中,尽量避免碰撞。如果能把n个数据比较均匀地分布到m个槽中,每个糟里约有n/m个数据,则search、insert和delete和操作的时间复杂度都是O(n/m),如果n和m的比是常数,则时间复杂度仍然是O(1)。一般来说,要处理的数据越多,构造哈希表时分配的槽也应该越多,所以n和m成正比这个假设是成立的。

请读者自己编写程序构造这样一个哈希表,并实现search、insert和delete 操作。 如果用我们学过的各种数据结构来表示n个数据的集合,下表是search、insert 和delete操作在平均情况下的时间复杂度比较。 表 26.1. 各种数据结构的search、insert和delete操作在平均情况下的时间复杂度比较 数据结构search insert delete O(n),有序数组折半查找是O(lgn)O(n)O(n) 数组 双向链表O(n)O(1)O(1) 排序二叉树O(lgn)O(lgn)O(lgn) 哈希表(n与槽数m成正比)O(1)O(1)O(1) 习题 1、统计一个文本文件中每个单词的出现次数,然后按出现次数排序并打印输出。单词由连续的英文字母组成,不区分大小写。 2、实现一个函数求两个数组的交集:size_t intersect(const int a[], size_t nmema, const int b[], size_t nmemb, int c[], size_t nmemc);。数组元素是32位int型的。数组a有nmema个元素且各不相同,数组b有nmemb个元素且各不相同。要求找出数组a和数组b的交集保存到数组c中,nmemc是数组c 的最大长度,返回值表示交集中实际有多少个元素,如果交集中实际的元素数量超过了nmemc则返回nmemc个元素。数组a和数组b的元素数量可能会很大(比如上百万个),需要设计尽可能快的算法。

用域代码处理Word页码

用域代码处理Word页码 一、插入基本页码 例如某份文档,当前设置为每页两栏,现在的要求是在每一栏的下面都插入相应的页码,也就是将原来的第一页设置为1、2页,第二页设置为3、4页,以此类推。简单分析一下,其实左侧栏的页码数可以由公式“当前页码×2-1”后得到,右侧栏的页码数可以由公式“当前页码×2”得到,这里以Word 2007为例进行说明,具体操作步骤如下: 第1步:切换到“页码布局”标签页,执行“分栏→两栏”命令,将当前文档拆分为两栏,至于其他的要求可以暂时取默认设置,效果如图1所示。 图1 Word 2007执行分栏(点击看大图) 第2步:切换到“插入”标签页,在“页脚”下拉菜单中选择“空白”,接下来请在需要添加页码的位置处分别画出两个文本框,右侧栏的文本框可以通过复制获得,见图2。 图2 Word 2007画出文本框(点击看大图 二、插入域代码 第3步:将光标定位在文本框中,注意此时请仍旧切换到“插入”标签页,在“文档部件”下拉菜单中选择“域”,此时会弹出图3所示的对话框,在“类别”下拉列表框中选择“等式和

公式”,在“域名”列表框中选择“= (Formula)”,记得请去除右下角的“更新时保留原格式”复选框。 图3 Word 2007插入域(点击看大图) 单击“确定”按钮,此时文本框中的文字会变为“!异常的公式结尾”,其实这并非错误,只是一行域代码而已,按下“Alt+F9”组合键后会正常显示“{ = }”原形;将光标定位在“=”的后面,继续插入“编号”中的“Page”域,注意请仍旧去除“更新时保留原格式”的复选框,插入后域代码变为“{ ={ PAGE } }”。 第4步:现在,我们应该根据事先的分析,将这个已插入的域更改为“{ ={ PAGE }*2-1 }”,接下来再按照同样的方法,将右侧栏的域代码更改为“{ ={ PAGE }*2 }”(见图4)。 图4 Word 2007修改已插入域(点击看大图) 完成上面的工作后,我们就可以按下“Alt+F9”组合键进行查看,注意请将两个文本框的“线条”的颜色设置为“无颜色”,如图5所示,效果不错吧?如果有需要的话,你可以在页码的前后分别输入“第”和“页”,如果是一页分成了三栏,那么它的域代码应该分别设置为

856数据结构(C语言版)试卷

姓名: 报考专业: 准考证号码: 密封线内不要写题 年全国硕士研究生招生考试初试自命题试题科目名称:数据结构(C 语言版) 科目代码:考试时间:3小时 满分 150 分 可使用的常用工具:√无 □计算器 □直尺 □圆规(请在使用工具前打√)所有答题内容必须写在答题纸上,写在试题或草稿纸上的一律无效;考完后试题随答题纸交回。 小题,每小题2分,共20分) (最多元素为MaxSize )为空时,其栈顶指针top 栈满的条件是( )。 ST.top != -1 B )ST.top == -1 ST.top != MaxSize – 1 D )ST.top == MaxSize –是结点 p 的直接前趋,若在 q 与 p 之间插入结点

9. 在Hash函数H(k)=k MOD m中,一般来讲m应取()。 A)奇数 B)偶数 C)素数 D)充分大的数 10.用二分插入排序法进行排序,被排序的表应采用的数据结构是()。 A)数组 B)单链表 C)双向链表 D)散列表 二、填空题(共10小题,每小题2分,共20分) 1. 一个栈的入栈序列为1,2,3,…,n,其出栈序列是p1,p2,p3,…,pn。若p2 = 3, 则p3可能取值的个数是()。 2. 已知单链表A长度为m,单链表B长度为n,若将B连接在A的末尾,在没有链 尾指针的情形下,算法的时间复杂度应为()。 3. 从一个具有n个结点的有序单链表中查找其值等于x的结点时,在查找成功的 情况下,需要平均比较()个结点。 4. 对于一个有N个结点、K条边的森林,共有()棵树。 5. 若以{4,5,6,3,8}作为叶子节点的权值构造哈夫曼树,则带权路径长度是 ()。 6. 有向图包含5个顶点(编号从1到5)6条弧(<1,2>,<1,5>,<1,3>,<2,3>, <3,4><5,4>)。该图进行拓扑排序,可以得到()个拓扑序列。 7. 对于一个有向图,若一个顶点的入度为k1,出度为k2,则对应邻接表中该顶点 邻接点单链表中的结点数为()。 8. 设哈希函数H(K)=3 K mod 11,哈希地址空间为0~10,对关键字序列(32, 13,49,24,38,21,4,12)按线性探测法解决冲突的方法构造哈希表,则该哈希表等概率下查找成功的平均查找长度为()。 9. 对于长度为n的线性表,若进行顺序查找,则时间复杂度为()。 10. 排序方法中,从未排序序列中依次取出元素与已排序序列(初始为空)中的元 素进行比较,将其放入已排序序列的正确位置上的方法称为()。 三、判断题(对的答√错的答×,共10小题,每小题2分,共20分) 1. 不论是入队列还是入栈,在顺序存储结构上都需要考虑“溢出”情况。 2. 在顺序表中取出第i个元素所花费的时间与i成正比。 3. 线性表的插入、删除总是伴随着大量数据的移动。 4. 二叉树通常有顺序存储结构和链式存储结构。 5. 对N(≥2)个权值均不相同的字符构造哈夫曼树,则树中任一非叶结点的权值一 定不小于下一层任一结点的权值。 6. Prim 算法通过每步添加一条边及相连顶点到一棵树,从而生成最小生成树。 7. 用邻接矩阵存储图,占用的存储空间只与图中结点数有关,而与边数无关。 8. 散列查找主要解决的问题是找一个好的散列函数和有效解决冲突的办法。 9. 对长度为10的排好序的表用二分法检索,若检索不成功,至少需比较10次。 10. 对5个不同的数排序至少需要比较4次。 四、综合应用题(第1小题15分,第2,3,4小题各10分,共45分) 1. 分别给出在先序线索二叉树、中序线索二叉树和后序线索二叉树中结点p的直 接后继结点所在位置。 线索二叉树中结点的结构包括数据域data、左孩子域left、右孩子域right、

该程序实现的哈希表构造哈希函数的方法为除留余数法(

一、该程序实现的哈希表:构造哈希函数的方法为除留余数法(函数modhash),处理哈希冲突的方法为链地址法。 二、对哈希表的操作:插入(函数hash_table_insert)、移除(函数hash_table_remove)、 查找(函数hash_table_lookup)、整个哈希表的释放(函数hash_table_delete)、 整个哈希表的输出(函数hash_table_print)。 三、哈希表的最大长度可以由HASHMAXLEN设置(我设为1000)。 四、输入哈希表的名称拼音字符是长度为10—20(长度可由STR_MAX_LEN和STR_MIN_LEN)的小写字母组成。这些名字字符串是我用函数rand_str随机产生的。 五、名称拼音字符(关键字)到关键字值的转换方法:先把名称的拼音字符转换对应的ASCII,累加后作为关键字值。我是用函数str_to_key实现的。 六、异常情况包括: 1、在对哈希表进行插入操作时,若哈希表的实际长度超过了哈希表的最大长度,我就输出“out of hash table memory!”,然后直接跳出插入子函数,不进行插入操作。 2、在对哈希表进行插入操作时,若插入的元素在哈希表中已经存在,我就输出“******already exists !”,然后直接跳出插入子函数,不进行插入操作。 3、在对哈希表进行查找操作时,若查到则返回其地址,若没查到则返回空地址。 4、在对哈希表进行移除操作时,对同义词元素的删除,分为表头和表中两种情况处理。 七、开发平台:DEV-C++,用c语言实现。 在哈希表程序中我比较注重整个代码风格,希望能形成很好的代码风格!如果有什么可以改进的,希望老师能跟我说说!

word域功能详解

1.什么是域 简单地讲,域就是引导Word在文档中自动插入文字、图形、页码或其他信息的一组代码。每个域都有一个唯一的名字,它具有的功能与Excel中的函数非常相似。下面以Seq和Date域为例,说明有关域的一些基本概念。 形如“{Seq Identifier [Bookmark ] [Switches ]}”的关系式,在Word中称为“域代码”。它是由: 域特征字符:即包含域代码的大括号“{}”,不过它不能使用键盘直接输入,而是按下Ctrl+F9组合键输入的域特征字符。 域名称:上式中的“Seq”即被称为“Seq域”,Word 2003提供了9大类共74种域。 域指令和开关:设定域工作的指令或开关。例如上式中的“Identifier”和“Bookmark”,前者是为要编号的一系列项目指定的名称,后者可以加入书签来引用文档中其他位置的项目。“Switches”称为可选的开关,域通常有一个或多个可选的开关,开关与开关之间使用空格进行分隔。 域结果:即是域的显示结果,类似于Excel函数运算以后得到的值。例如在文档中输入域代码“{Date \@ "yyyy年m月d日" \* MergeFFormat}”的域结果是当前系统日期。 域可以在无须人工干预的条件下自动完成任务,例如编排文档页码并统计总页数;按不同格式插入日期和时间并更新;通过链接与引用在活动文档中插入其他文档;自动编制目录、关键词索引、图表目录;实现邮件的自动合并与打印;创建标准格式分数、为汉字加注拼音等等。 2.在文档中插入域 (1)使用命令插入域 在Word中,高级的复杂域功能很难用手工控制,如“自动编号”和“邮件合并”、“题注”、“交叉引用”、“索引和目录”等。为了方便用户,9大类共74种域大都以命令的方式提供。 在“插入”菜单中提供有“域”命令,它适合一般用户使用,Word提供的域都可以使用这种方法插入。你只需将光标放置到准备插入域的位置,单击“插入→域”菜单命令,即可打开“域”对话框。 首先在“类别”下拉列表中选择希望插入的域的类别,如“编号”、“等式和公式”等。选中需要的域所在的类别以后,“域名”列表框会显示该类中的所有域的名称,选中欲插入的域名(例如“AutoNum”),则“说明”框中就会显示“插入自动编号”,由此可以得知这个域的功能。对AutoNum域来说,你只要在“格式”列表中选中你需要的格式,单击“确定”按钮就可以把特定格式的自动编号插入页面。如图1所示。 你也可以选中已经输入的域代码,单击鼠标右键,然后选择“更新域”、“编辑域”或“切换域代码”命令,对域进行操作。 (2)使用键盘插入 如果你对域代码比较熟悉,或者需要引用他人设计的域代码,使用键盘直接输入会更加快捷。其操作方法是:把光标放置到需要插入域的位置,按下Ctrl+F9组合键插入域特征字符“{ }”。接着将光标移动到域特征代码中间,按从左向右的顺序输入域类型、域指令、开关等。结束后按键盘上的F9键更新域,或者按下Shift+F9组合键显示域结果。

哈希表的设计与实现-数据结构与算法课程设计报告

合肥学院 计算机科学与技术系 课程设计报告 2009 ~2010 学年第二学期 课程数据结构与算法 课程设计名称哈希表的设计与实现 学生姓名王东东 学号0804012030 专业班级08计本(2) 指导教师王昆仑、李贯虹 2010 年5 月

课程设计目的 “数据结构与算法课程设计”是计算机科学与技术专业学生的集中实践性环节之一, 是学习“数据结构与算法”理论和实验课程后进行的一次全面的综合练习。其目的是要达到 理论与实际应用相结合,提高学生组织数据及编写程序的能力,使学生能够根据问题要求和 数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来并 用软件解决问题,培养良好的程序设计技能。 一、问题分析和任务定义 1、问题分析 要完成如下要求:设计哈希表实现电话号码查询系统。 实现本程序需要解决以下几个问题: (1)如何定义一个包括电话号码、用户名、地址的节点。 (2)如何以电话号码和用户名为关键字建立哈希表。 (3)用什么方法解决冲突。 (4)如何查找并显示给定电话号码的记录。 (5)如何查找并显示给定用户名的记录。 2 任务定义 1、由问题分析知,本设计要求分别以电话号码和用户名为关键字建立哈希表,z在此基 础上实现查找功能。本实验是要我们分析怎么样很好的解决散列问题,从而建立一比较合理 的哈希表。由于长度无法确定,并且如果采用线性探测法散列算法,删除结点会引起“信息 丢失”的问题。所以采用链地址法散列算法。采用链地址法,当出现同义词冲突时,可以使 用链表结构把同义词链接在一起,即同义词的存储地址不是散列表中其他的空地址。 根据问题分析,我们可以定义有3个域的节点,这三个域分别为电话号码char num[30],姓名char name[30],地址char address[30]。这种类型的每个节点对应链表中的每个节点,其中电话号码和姓名可分别作关键字实现哈希表的创建。 二、数据结构的选择和概要设计 1、数据结构的选择 数据结构:散列结构。 散列结构是使用散列函数建立数据结点关键词与存储地址之间的对应关系,并提供多 种当数据结点存储地址发生“冲突”时的处理方法而建立的一种数据结构。 散列结构基本思想,是以所需存储的结点中的关键词作为自变量,通过某种确定的函 数H(称作散列函数或者哈希函数)进行计算,把求出的函数值作为该结点的存储地址,并 将该结点或结点地址的关键字存储在这个地址中。 散列结构法(简称散列法)通过在结点的存储地址和关键字之间建立某种确定的函数 关系H,使得每个结点(或关键字)都有一个唯一的存储地址相对应。 当需要查找某一指定关键词的结点时,可以很方便地根据待查关键字K计算出对应的“映像”H(K),即结点的存储地址。从而一次存取便能得到待查结点,不再需要进行若干次的 比较运算,而可以通过关键词直接计算出该结点的所在位置。

巧用域代码处理WORD中页码(双页码)

一、插入基本页码 例如某份文档,当前设置为每页两栏,现在的要求是在每一栏的下面都插入相应的页码,也就是将原来的第一页设置为1、2页,第二页设置为3、4页,以此类推。简单分析一下,其实左侧栏的页码数可以由公式“当前页码×2-1”后得到,右侧栏的页码数可以由公式“当前页码×2”得到,这里以Word 2007为例进行说明,具体操作步骤如下: 第1步:切换到“页码布局”标签页,执行“分栏→两栏”命令,将当前文档拆分为两栏,至于其他的要求可以暂时取默认设置,效果如图1所示。 图1 Word 2007执行分栏 第2步:切换到“插入”标签页,在“页脚”下拉菜单中选择“空白”,接下来请在需要添加页码的位置处分别画出两个文本框,右侧栏的文本框可以通过复制获得,见图2。

图2 Word 2007画出文本框 二、插入域代码 第3步:将光标定位在文本框中,注意此时请仍旧切换到“插入”标签页,在“文档部件”下拉菜单中选择“域”,此时会弹出图3所示的对话框,在“类别”下拉列表框中选择“等式和公式”,在“域名”列表框中选择“= (Formula)”,记得去除右下角的“更新时保留原格式”复选框。

图3 Word 2007插入域 单击“确定”按钮,此时文本框中的文字会变为“!异常的公式结尾”,其实这并非错误,只是一行域代码而已,按下“Alt+F9”组合键后会正常显示“{ = }”原形;将光标定位在“=”的后面,继续插入“编号”中的“Page”域,注意请仍旧去除“更新时保留原格式”的复选框,插入后域代码变为“{ ={ PAGE } }”。 第4步:现在,我们应该根据事先的分析,将这个已插入的域更改为“{ ={ PAGE }*2-1 }”,接下来再按照同样的方法,将右侧栏的域代码更改为“{ ={ PAGE }*2 }”(见图4)。 图4 Word 2007修改已插入域 完成上面的工作后,我们就可以按下“Alt+F9”组合键进行查看,注意请将两个文本框的“线条”的颜色设置为“无颜色”,如图5所示,效果不错吧?如果有需要的话,你可以在页码的前后分别输入“第”和“页”,如果是一页分成了三栏,那么它的

利用哈希技术统计C源程序关键字出现频度

:利用哈希技术统计C源程序关键字出现频度 目录一.需求分析说明 (3) 二.总体设计 (3) 三.详细设计 (4) 四.实现部分 (5) 五.程序测试 (10) 六.总结 (11)

一、需求分析说明 1.课程设计目的 本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。 2.题目要求 1)题目内容: 利用Hash技术统计某个C源程序中的关键字出现的频度 2)基本要求: 扫描一个C源程序,用Hash表存储该程序中出现的关键字,并统计该程序中的关键字出现的频度。用线性探测法解决Hash冲突。设Hash函数为: Hash(key)[(key的第一个字母序号)*100+(key的最后一个字母序号)] MOD 41 二、总体设计 一.算法思想描述 首先读取关键字文件以建立二叉排序树以供后续查询,每个树节点保存一个关键字字符串及指向左右子树的指针。同时创建一Hash表,每个节点除应保存关键字字符串外,还应保存关键字频数及该存储单元冲突次数。然后扫描一个C源程序,每次扫描一行,从中循环分离出每个单词,每次均查找其是否为关键字,若是,则按计算公式计算其KEY值并在Hash表中进行相应操作,若该节点为空则插入否者比较其是否与现有关键字相同,若相

同则增加其频数,否则增加其冲突次数并继续线性探测下一个存储单元,完了继续操作下一个分离出来的单词,如此循环运行直至扫描结束。编写本程序时,使用了二叉树创建、二叉树查找、Hash表的建立和操作及文件操作等基本算法。 二.三、详细设计 (程序结构 //Hash表存储结构 typedef struct node //定义 { char s[20]; int num,time; //num为频数,time为冲突次数 }node; //二叉排序树结构定义 typedef struct nod //定义 { char s[20]; struct nod *left,*right; }nod; int max;//max为Hash表长度

哈希查找算法的源代码 c语言

哈希查找算法的源代码 c语言 【问题描述】 针对自己的班集体中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。 [基本要求] 假设人名为中国姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构照,用链表法处理冲突。 [测试数据] 读取熟悉的30个人的姓名。 #include #include #include using namespace std; #define Maxsize 57 struct record { char name[20]; char tel[20]; char add[20]; }; typedef record * precord; struct HashTable { int elem[Maxsize]; //存放数组a[]的下标 int count; }; typedef HashTable * pHashTable; int Number; //统计当前数组a[]中的记录总数 void Getdata(precord a) //从文件telphone.txt中读取数据存放到数组a[] { Number=0; ifstream infile("telphone.txt",ios::in|ios::binary); if(!infile) {cout<<"文件打开失败!\n"; exit(1);} while(!infile.eof() && infile.get()!=EOF) //文件不为空并且文件指针没有指到结束符 {infile.seekg(Number*sizeof(a[Number]),ios::beg); //定位文件指针infile.read((char *)&a[Number],sizeof(a[Number])); Number++;

数据结构实验C语言实现散列表

实验课题:做这个实验时采用Open Addressing框架,也可加做Separate Chaining以形成比较。 1 构造散列表,把字符串数组中的各项加入到散列表中 string MyBirds[13] = { "robin", "sparrow", "hawk", "eagle", "seagull", "bluejay", "owl", "cardinal", "Jakana", "Moa", "Egret", "Penguin", "hawk" }; 用C表示,可以是 char * MyBirds[13] = { "robin", "sparrow", "hawk", "eagle", "seagull", "bluejay", "owl", "cardinal", "Jakana", "Moa", "Egret", "Penguin", "hawk" }; 为便于观察冲突现象,初始构造散列表时,表的容量不要过大,对Open Addressing,装载因子为0.5左右,对于Separate Chaining,装载因子为1左右即可。也不要做rehash(应该改源代码的哪里,如何改)。 建议对源代码做些改动、增加一些输出(建议用条件编译控制这些输出),以便于观察冲突的发生和解决; 对于Open Addressing,参考代码的冲突解决方案是用的平方探测(quadratic probing),如果用线性探测(linear probing)的策略,应该对函数findPos做什么修改(冲突解决的策略都集中在那里) #include #include #include "hashquad.h" #include #define MinTableSize 26 typedef unsigned int Index; typedef Index Position; struct HashTbl; typedef struct HashTbl *HashTable; enum KindOfEntry { Legitimate, Empty, Deleted }; struct HashEntry { char *Element; enum KindOfEntry Info; }; typedef struct HashEntry Cell; struct HashTbl { int TableSize; Cell *TheCells; }; static int NextPrime( int N ) { int i;

word域功能详解1

域应用基础 1.什么是域 简单地讲,域就是引导Word在文档中自动插入文字、图形、页码或其他信息的一组代码。每个域都有一个唯一的名字,它具有的功能与Excel中的函数非常相似。下面以Seq和Date域为例,说明有关域的一些基本概念。 形如“{Seq Identifier [Bookmark ] [Switches ]}”的关系式,在Word中称为“域代码”。它是由: 域特征字符:即包含域代码的大括号“{}”,不过它不能使用键盘直接输入,而是按下Ctrl+F9组合键输入的域特征字符。 域名称:上式中的“Seq”即被称为“Seq域”,Word 2003提供了9大类共74种域。 域指令和开关:设定域工作的指令或开关。例如上式中的“Identifier”和“Bookmark”,前者是为要编号的一系列项目指定的名称,后者可以加入书签来引用文档中其他位置的项目。“Switches”称为可选的开关,域通常有一个或多个可选的开关,开关与开关之间使用空格进行分隔。 域结果:即是域的显示结果,类似于Excel函数运算以后得到的值。例如在文档中输入域代码“{Date \@ "yyyy年m月d日" \* MergeFForma t}”的域结果是当前系统日期。 域可以在无须人工干预的条件下自动完成任务,例如编排文档页码并统计总页数;按不同格式插入日期和时间并更新;通过链接与引用在活动文档中插入其他文档;自动编制目录、关键词索引、图表目录;实现邮件的自动合并与打印;创建标准格式分数、为汉字加注拼音等等。 2.在文档中插入域 (1)使用命令插入域 在Word中,高级的复杂域功能很难用手工控制,如“自动编号”和“邮件合并”、“题注”、“交叉引用”、“索引和目录”等。为了方便用户,9大类共74种域大都以命令的方式提供。 在“插入”菜单中提供有“域”命令,它适合一般用户使用,Word提供的域都可以使用这种方法插入。你只需将光标放置到准备插入域的位置,单击“插入→域”菜单命令,即可打开“域”对话框。 首先在“类别”下拉列表中选择希望插入的域的类别,如“编号”、“等式和公式”等。选中需要的域所在的类别以后,“域名”列表框会显示该类中的所有域的名称,选中欲插入的域名(例如“AutoNum”),则“说明”框中就会显示“插入自动编号”,由此可以得知这个域的功能。对AutoNum域来说,你只要在“格式”列表中选中你需要的格式,单击“确定”按钮就可以把特定格式的自动编号插入页面。如图1所示。 你也可以选中已经输入的域代码,单击鼠标右键,然后选择“更新域”、“编辑域”或“切换域代码”命令,对域进行操作。 (2)使用键盘插入 如果你对域代码比较熟悉,或者需要引用他人设计的域代码,使用键盘直接输入会更加快捷。其操作方法是:把光标放置到需要插入域的位置,按下Ctrl+F9组合键插入域特征字符“{ }”。接着将光标移动到域特征代码中间,按从左向右的顺序输入域类型、域指令、开关等。结束后按键盘上的F9键更新域,或者按下Shift+F9组合键显示域结果。

word公式域汇总

WORD EQ域汇总?? 2010-06-08 20:55:35|??分类:??|??标签:?|字号大中小?订阅 域是Word的精髓,他的应用是非常广泛的,正确使用域可以实现许多比较复杂的功能。在Word 中域共有九大类七十余种,这其中尤以EQ域变化最多最为复杂。Eq是Eq tion(公式)的缩写,Eq域能够生成数学公式。 创建公式当然最好用“公式编辑器”了,但在某些情况下使用Eq 域来输入简单的数学公式也是一个不错的选择。在这里我就给大家介绍一下EQ域的典型应用。 一、有关域的几个名词: 1、域:指导Word在文档中自动插入文字、图形、页码和其它资料的一组代码。 2、域开关:在使用域时,引发特定操作的特殊说明,一般是指添至域中用于修饰结果的选项。 3、域名:域的名称,如EQ域、TIME域等。 4、域记号:一对大括号{}。注意不能直接用键盘输入,应该用后面介绍的"插入空白域"的方法来实现。 5、域的两种显示方式:一种是以域代码方式显示,一种以域结果方式显示。以"Time"域为例,它以域代码方式显示时是这样的:{TIME \*MERGEFORMAT},它以域结果方式显示是这样的:7:03:30 PM 二、与域有关的快捷键: 1、在文档中插入空白域:按Ctrl+F9键(也可以用命令"插入→域"来实现)。 2、在域代码和域结果之间切换:按Shift+F9键。 3、更新选择的域:按F9键。 4、取消某个域的链接:先选中该域,再按Ctrl+Shift+F9键,这时域结果将以平常文本的形式显示出来。 5、转到前一个域:按Shift+F11键;转到后一个域:按F11键。 6、锁定域:按Ctrl+F11键。例如,在文档中插入Time域,在打印文档时会自动更新该域,如果希望保持插入的时间值,只要在打印之间锁定该域就可以了。解除域的锁定:按 Ctrl+Shift+F11键。 三、EQ域的10个开关及运用实例: 1、数组开关:\a() 按照行的顺序将数组元素(经笔者实验元素最多为39个)排列为多列,并可以用下列选项对\a 开关作进一步修饰: \al——列内元素左对齐。 \ar——列内元素右对齐。 \ac——列内元素居中。 \con——将元素排成n列。 \vsn——行间增加n磅的间距。 \hsn——列间增加n磅的间距。 例1:我们要在文档中输入今年10月份的月历,可以插入如下域代码:{eq \a\ac\co7\vs4\hs20(日,一,二,三,四,五, 六,,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 ,29,30,31)},其显示结果如图1: ?

Word 中的域代码列表(官方)

Word 中的域代码列表 Word for Office 365 Word for Office 365 for Mac Word 2019 Word 2019 for Mac 更多... 注意:我们希望能够尽快以你的语言为你提供最新的帮助容。本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗?请在此处查看本文的英文版本以便参考。 注意:有关插入和编辑域代码、使用开关、设置和更改属性、显示结果与域代码、锁定域和其他常见任务的详细信息, 请参阅在 Word 中插入、编辑和查看域。 在 Word 中插入、编辑和查看域 域代码可用作文档中可能会更改的数据的占位符, 并且你可以使用它们来自动处理文档的某些方面。当您使用 Word 功能 (如页码或目录) 时, 将插入域代码, 但是您可以为其他任务手动插入域代码, 例如执行计算或填充数据源中的文档容。 这些步骤适用于在 Word 中插入任何域代码。有关包含每个域的详细信息的所有域代码的列表, 请参阅Word 中的域代码列表。 插入域 1.在要插入域的位置单击。

提示:如果你知道要插入的字段的域代码, 则可以直接在文档中键入它, 但不能键入方括号字符。按 Ctrl + F9, 然后在括号中键入代码。 2.单击“插入”>“文档部件”>“域”。 3.在“域名”列表中,选择域名。 提示:您可以通过单击 "类别" 列表中的向下箭头筛选列表。 4.在 "字段属性" 下, 选择所需的任何属性或选项, 然后单击"确定"。 注意: ?若要在 "字段" 框中查看特定字段的代码, 请单击 "域代码"。对于某些字段, 默认情况下会单击此按钮。 ?若要在另一个域中嵌套某个域,请先插入外部(容器)域(上面的步骤 1 - 4)。 然后将插入点放在要插入部域的域代码,并重复上面的步骤 2 - 4。 编辑域

数据结构(C语言)第一章习题自整理

第一章绪论 一、选择题 1.从逻辑上可以把数据结构分为()两大类。 A.动态结构、静态结构B.顺序结构、链式结构1 C.线性结构、非线性结构2D.初等结构、构造型结构 2.与数据元素本身的形式、内容、相对位置、个数无关的是数据的(). A.存储结构 B.存储实现 C.逻辑结构 D.实现运算 3.算法的计算量的大小称为计算的()。 A.效率 B.复杂性 C.现实性 D.难度 4.组成数据的基本单位是() A.数据项B.数据类型C.数据元素D.数据变量 5.通常要求同一逻辑结构的中的所有数据元素拥有同样的特性,这意味着() B.数据具有同一特点B.每个数据元素都一样 C.数据元素包括的数据项的个数要相等 D.不仅数据元素所包含的数据项要相同,并且对应数据项的类型要一致 6.数据结构是研究数据的()以及它们之间的相互关系。 A.理想结构,物理结构B.理想结构,抽象结构 C.物理结构,逻辑结构3D.抽象结构,逻辑结构 7.算法分析的两个主要方面是() A.正确性和简单性B.可读性和文档性 1此为存储结构: 顺序存储:把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。 链式存储:在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。特点是元素在物理上可以不相邻,所以每个数据元素包括了一个数据域和一个指针域,数据域用来存放数据,而指针域用来指向其后继结点的位置。 2线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。例:线性表,典型的线性表有:顺序表、链表、栈(顺序栈、链栈)和队列(顺序队列、链队列)。 非线性结构:对应于线性结构,非线性结构也就是每个结点可以有不止一个直接前驱和直接后继。常见的非线性结构包括:树(二叉树)、图(网)等。 3物理结构又称存储结构,逻辑结构又称逻辑关系。 C.数据复杂性和程序复杂性D.时间复杂度和空间复杂度 8.算法的时间复杂度取决于()。 A.问题的规模 B.待处理数据的初态 C. A和B 9.算法分析的目的是()。 A.找出数据结构的合理性B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进D.分析算法的易懂性和文档性 10.计算机算法指的是(1),它必须具备(2)这三个特性。 1)A.计算方法 B.排序方法 C.解决问题的步骤序列 D.调度方法 2)A.可执行性、可移植性、可扩充性 B.可执行性、确定性、有穷性 C.确定性、有穷性、稳定性 D.易读性、稳定性、安全性 11.一个算法应该是()。 A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C. 12.下面关于算法说法错误的是() A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C.算法的可行性是指指令不能有二义性 D.以上几个都是错误的 13.下面说法错误的是() (1)算法原地工作的含义是指不需要任何额外的辅助空间4 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 14.程序段 for ( i=n-1;i>=1;i--) for (j=1j<=i;j++) if( A[j]>A[j+1]) A[j]与A[j+1]对换; 其中 n为正整数,则最后一行的语句频度在最坏情况下是() A. O(n)B. O(nlogn) C..O( n3 ) D.O(n2) 4算法原地工作的含义是指不需要任何额外的辅助,算法所需要的辅助空间不随着问题的规模而变化,是一个确定的值。

WORD-域和域代码详解

WORD-域和域代码 对一般WORD用户来说,域是一个高级的议题,但是如果您希望自己能够更好地驯服WORD,使它为您效劳,您就需要熟悉并掌握它。在设定文档的页眉和页脚时,加入页码域让WORD替您对页面编号;在页眉中加入文档名称域,使打印的文档显示文件名称,以便以后查找文档;在大型文档中插入目录域,好让WORD替您管理目录的编撰等等。 域的概念 域代码是由域特征字符、域类型、域指令和开关组成的字符串; 域结果是域代码所代表的信息。 域特征字符是指包围域代码的大括号“{}”,它不是从键盘上直接输入的,按键可插入这对域特征字符。 域类型就是WORD域的名称,域指令和开关是设定域类型如何工作的指令或开关。 例如,域代码{ DATE \* MERGEFORMAT }在文档中每个出现此域代码的地方插入当前日期,其中“DATE”是域类型,“\* MERGEFORMAT”是通用域开关。域的功能 自动编页码、图表的题注、脚注、尾注的号码;按不同格式插入日期和时间;通过链接与引用在活动文档中插入其他文档的部分或整体;实现无需重新键入即可使文字保持最新状态;自动创建目录、关键词索引、图表目录;插入文档属性信息;实现邮件的自动合并与打印;执行加、减及其他数学运算;创建数学公式;调整文字位置等。 域类型 WORD提供了许多域类型,单击“插入"*"域”命令,打开插入域对话窗口,可以看到所有WORD域类型的列表及其分类信息。单击“帮助"*"Microsoft Word 帮助”命令,单击帮助向导的"查看帮助主题的完整列表"按钮,打开帮助主题窗口,在目录选项页双击列表中的“参考信息"*"域类型和开关”,就可以得到WORD 域类型的完整帮助信息。 通用域开关

哈希表c语言程序代码

/* 实验项目名称:电话号码查询系统的实现 实验目的与要求: 1.基础知识:掌握数据结构中的查找、排序等算法相关知识; 掌握C或VC++语言中程序设计的方法。 2.参考教材相关算法,完成以下程序功能: (1)自选存储结构实现电话号码表的初始化; (2)编写一个电话号码查询系统,要求有电话号码记录的录入(插入)存储、查询、记录删除、排序、打印等模块; 实验性质: 综合性(4学时) 说明: 存储结构可采用哈希表的方式,完成用电话号码或姓名为关键字构建哈希表,并进行查询、添加、删除、打印记录等功能模 块(此方式为推荐方式),其次子函数的调用顺序由最终用户决定(可用多分支结构),程序中应有用户的操作选择界面. */ # include "stdio.h" # include "stdlib.h" # define SUCCESS 1 # define NULL_KEY -2 //-2为无标志记录 # define UNSUCCESS 0

# define DUPLICATE -1 int Hashsize[]={11,19,29,37}; //哈希表容量递增表,一个合适的素数序列int m=0; //哈希表表长,全局变量 typedef int KeyType; //设关键字为整形 typedef struct { char name; //姓名 KeyType num; //号码 }Node; typedef struct { Node *elem; //数据元素存储地址,动态分配数组 int count; //当前数据元素个数 int sizeindex; //Hashsize[H.sizeindex]为当前容量 }HashTable; void ChuangJian(HashTable &H) { //构建一个空哈希表 int i; H.count=0; //当前元素个数 H.sizeindex=0; //初试存储容量为hashsize[0]

相关文档
最新文档