第1章程序设计题参考答案
1.代码1-1如下:
2.代码1-2如下:
3.代码1-3如下:
4.代码1-4如下:
5.代码1-5如下:
“如何让你的幻灯片动起来”
培训课时:一课时。
培训内容:
“幻灯片切换”、“自定义动画”和“动作设置(”超链接)在幻灯片中的应用。 培训目标:
这次培训要完成最后几张幻灯片的制作,你要对演示文稿设置幻灯片的切换效果,为幻灯片的文字、文本框等内容设置一些动画效果,例如文字显示的效果以及显示的顺序等。
1、为每张幻灯片设置切换效果以及换页方式等。
2、为幻灯片的标题、正文和图片等设置动画效果。
3、设置各个对象适当的显示顺序。
4、添加一些适宜的背景声音效果,以衬托主题内容。
5、合理利用“动作设置”中的“超链接”。
6、幻灯片“动画效果”以及“幻灯片切换”设计的注意事项。 培训过程:
导言: 到目前为止,你已经制作了幻灯片,学会了不少制作幻灯片的操作,幻灯片中有文字,也有图片,还有声音,你的演示文稿顿时变得既“活泼”又能“悦耳”了起来啦!
假如能让幻灯片的文字、图片显示的时候多一些动画效果,让它“动”起来,那么幻灯片的效果一定更妙!
新增加一张新的幻灯片,在幻灯片中加入文本框和正文。
(提示:点击菜单项“插入”->“新幻灯片”,在对话框中选择合适的版式)
1、为每张幻灯片设置切换效果以及换页方式等。
(1)单击 “幻灯片放映”菜单->“幻灯片切换”,出现一个对话框。这时可以为当前的幻灯片设置切换时的“效果”、“换页方式”以及“声音效果”等。
(2)在“效果”区内选择幻灯片切换放映时的效果方式。
(3)在“速度”中选择显示速度。
(4)在“声音”栏内选择合适的背景声音。
(5)在“换片方式”中,选择下一张幻灯片出现时的操作方式。
(6)如果想把这种设置应用于所有幻灯片,就选择“应用于所有幻灯片”
2、为幻灯片的标题、正文和图片等设置动画效果。
(1)选中需要设置动画效果的标题、正文或图片等。(这是设置“自定义动画的前提)
(2)单击 “幻灯片放映”菜单 ->“自定义动画”,在屏幕右方出现一个对话框。
(3)在屏幕右方对话框中单击“添加效果”,从中选择自己喜欢的“动画”效果
(4)对已选择的“动画”效果可以从“开始”、“方向”、“速度”方面进行设置
(5)相观看自己选择的“动画”时,可以单击对话框左下角的“播放”按钮进行观看。
(6)如果对自己所选择的“动画”不满意时,可以选中这种“动画”效果,然后单击对话框右上角的“删除”按钮。然后再按以上步骤从新设置自己喜欢的“动画”效果
3、设置各个对象适当的显示顺序。
在为幻灯片的标题、正文和图片等设置动画效果后,就存在一个谁先出现的问题,这就需要设置它们的“显示顺序“,
(1)选中需要调整“显示顺序”的动画效果。在“自定义动画”的对话框中,显示了一张幻灯片的所有的动画效果,我们想调整哪个动画效果的顺序就用左键单击选中。
(2)利用对话框下方的“重新排序”按钮确定合适的显示顺序。如果想向上排序就按“向上的箭头”,如果想向下排序就按“向下的箭头”。
4、添加一些适宜的背景声音效果,以衬托主题内容。
(1)右键单击需要设置“背景声音效果”的动画效果。在“自定义动画”的对话框中,显示了一张幻灯片的所有的动画效果,我们想设置哪个动画效果的背景声音效果就用右键单击。
(2)选择“效果选项”。
(3)在弹出的对话框中选择“效果”标签,在声音选项中选择自己喜欢的声音,为动画效果设置“背景声音效果”。
5、合理利用“动作设置”中的“超链接”。
在幻灯片放映时,在前后两个幻灯片切换之间,由于某种需要,要先切换到其它的幻灯片或插入视频文件,这时我们就需要运用“超链接”来处理,以实现任意幻灯片间的切换。
(一)、幻灯片之间的链接:
(1)设置按钮:
A、点击菜单中的“幻灯片放映”,点“动作按钮”,选择所需按钮。 B、为了美观起见,我们一般自己选择动作按钮图案,它可以是一个图片(可以是幻灯片上已有的图片;也可插入其它的图片,调整到合适的大小,放到合适位置),此外也可以是幻灯片上任意位置的文字。
(2)设置超链接:
选中动作按钮(文字),在按钮(文字)上单击右键,点击“超链接”,在设置框中,点击“书签”,然后选择要链接的对象,最后点“确定”。
在幻灯片放映时,光标在按钮处变为手状时,点击按钮(文字)便可以实现链接了。 (二)、与视频文件的链接
视频文件可以通过插入的方法插入幻灯片中,(方法:在菜单栏中找到“文件中的影片”,其它过程与插入声音文件相同),但这种方法在放映时,无法对视频文件实现放与停、进与退等的调整,所以我们也可以通过超链接的方法,实现对视频文件的具体操作。方法如下:
(前提是要链接的视频文件已事先下载到硬盘上)
(1)设置动作按钮:
方法与幻灯片链接时动作按钮的设置相同。 (2)与视频文件链接
选中动作按钮(文字),单击右键,点“超链接”,在设置框中,在“查找范围”找到要链接的文件,选中,单击“确定”。
备注:
A、如果要撤消或更改链接,可在动作按钮(文字)上单击右键,点“删除超链接”。
B、链接文件夹中的其它文件或某个网页的方法与之相同。
6、幻灯片“动画效果”以及“幻灯片切换”设计的注意事项。 (1)在演讲时,演示文稿的效果显示所占用的时间一般不宜过长。
(2)幻灯片内容的显示应合乎呈现方式和结构顺序,有利于听众理解媒体所表现的信息,也有利于配合演讲者本人的操作使用。
(3)在幻灯片中,背景声音应有不同的效用,应视具体情况而定。 (4)幻灯片应有一致的设计风格,无论整体布局、颜色搭配,还是演示效果以及背景声音,都应当可以较好地反映出主题的内容。
整个演示文稿的设计要做到“美观大方,简洁明了;过渡自然,效果恰好;动静相宜,主题凸现
”。
第1章程序设计题参考答案
1.代码1-1如下:
2.代码1-2如下:
3.代码1-3如下:
4.代码1-4如下:
5.代码1-5如下:
“如何让你的幻灯片动起来”
培训课时:一课时。
培训内容:
“幻灯片切换”、“自定义动画”和“动作设置(”超链接)在幻灯片中的应用。 培训目标:
这次培训要完成最后几张幻灯片的制作,你要对演示文稿设置幻灯片的切换效果,为幻灯片的文字、文本框等内容设置一些动画效果,例如文字显示的效果以及显示的顺序等。
1、为每张幻灯片设置切换效果以及换页方式等。
2、为幻灯片的标题、正文和图片等设置动画效果。
3、设置各个对象适当的显示顺序。
4、添加一些适宜的背景声音效果,以衬托主题内容。
5、合理利用“动作设置”中的“超链接”。
6、幻灯片“动画效果”以及“幻灯片切换”设计的注意事项。 培训过程:
导言: 到目前为止,你已经制作了幻灯片,学会了不少制作幻灯片的操作,幻灯片中有文字,也有图片,还有声音,你的演示文稿顿时变得既“活泼”又能“悦耳”了起来啦!
假如能让幻灯片的文字、图片显示的时候多一些动画效果,让它“动”起来,那么幻灯片的效果一定更妙!
新增加一张新的幻灯片,在幻灯片中加入文本框和正文。
(提示:点击菜单项“插入”->“新幻灯片”,在对话框中选择合适的版式)
1、为每张幻灯片设置切换效果以及换页方式等。
(1)单击 “幻灯片放映”菜单->“幻灯片切换”,出现一个对话框。这时可以为当前的幻灯片设置切换时的“效果”、“换页方式”以及“声音效果”等。
(2)在“效果”区内选择幻灯片切换放映时的效果方式。
(3)在“速度”中选择显示速度。
(4)在“声音”栏内选择合适的背景声音。
(5)在“换片方式”中,选择下一张幻灯片出现时的操作方式。
(6)如果想把这种设置应用于所有幻灯片,就选择“应用于所有幻灯片”
2、为幻灯片的标题、正文和图片等设置动画效果。
(1)选中需要设置动画效果的标题、正文或图片等。(这是设置“自定义动画的前提)
(2)单击 “幻灯片放映”菜单 ->“自定义动画”,在屏幕右方出现一个对话框。
(3)在屏幕右方对话框中单击“添加效果”,从中选择自己喜欢的“动画”效果
(4)对已选择的“动画”效果可以从“开始”、“方向”、“速度”方面进行设置
(5)相观看自己选择的“动画”时,可以单击对话框左下角的“播放”按钮进行观看。
(6)如果对自己所选择的“动画”不满意时,可以选中这种“动画”效果,然后单击对话框右上角的“删除”按钮。然后再按以上步骤从新设置自己喜欢的“动画”效果
3、设置各个对象适当的显示顺序。
在为幻灯片的标题、正文和图片等设置动画效果后,就存在一个谁先出现的问题,这就需要设置它们的“显示顺序“,
(1)选中需要调整“显示顺序”的动画效果。在“自定义动画”的对话框中,显示了一张幻灯片的所有的动画效果,我们想调整哪个动画效果的顺序就用左键单击选中。
(2)利用对话框下方的“重新排序”按钮确定合适的显示顺序。如果想向上排序就按“向上的箭头”,如果想向下排序就按“向下的箭头”。
4、添加一些适宜的背景声音效果,以衬托主题内容。
(1)右键单击需要设置“背景声音效果”的动画效果。在“自定义动画”的对话框中,显示了一张幻灯片的所有的动画效果,我们想设置哪个动画效果的背景声音效果就用右键单击。
(2)选择“效果选项”。
(3)在弹出的对话框中选择“效果”标签,在声音选项中选择自己喜欢的声音,为动画效果设置“背景声音效果”。
5、合理利用“动作设置”中的“超链接”。
在幻灯片放映时,在前后两个幻灯片切换之间,由于某种需要,要先切换到其它的幻灯片或插入视频文件,这时我们就需要运用“超链接”来处理,以实现任意幻灯片间的切换。
(一)、幻灯片之间的链接:
(1)设置按钮:
A、点击菜单中的“幻灯片放映”,点“动作按钮”,选择所需按钮。 B、为了美观起见,我们一般自己选择动作按钮图案,它可以是一个图片(可以是幻灯片上已有的图片;也可插入其它的图片,调整到合适的大小,放到合适位置),此外也可以是幻灯片上任意位置的文字。
(2)设置超链接:
选中动作按钮(文字),在按钮(文字)上单击右键,点击“超链接”,在设置框中,点击“书签”,然后选择要链接的对象,最后点“确定”。
在幻灯片放映时,光标在按钮处变为手状时,点击按钮(文字)便可以实现链接了。 (二)、与视频文件的链接
视频文件可以通过插入的方法插入幻灯片中,(方法:在菜单栏中找到“文件中的影片”,其它过程与插入声音文件相同),但这种方法在放映时,无法对视频文件实现放与停、进与退等的调整,所以我们也可以通过超链接的方法,实现对视频文件的具体操作。方法如下:
(前提是要链接的视频文件已事先下载到硬盘上)
(1)设置动作按钮:
方法与幻灯片链接时动作按钮的设置相同。 (2)与视频文件链接
选中动作按钮(文字),单击右键,点“超链接”,在设置框中,在“查找范围”找到要链接的文件,选中,单击“确定”。
备注:
A、如果要撤消或更改链接,可在动作按钮(文字)上单击右键,点“删除超链接”。
B、链接文件夹中的其它文件或某个网页的方法与之相同。
6、幻灯片“动画效果”以及“幻灯片切换”设计的注意事项。 (1)在演讲时,演示文稿的效果显示所占用的时间一般不宜过长。
(2)幻灯片内容的显示应合乎呈现方式和结构顺序,有利于听众理解媒体所表现的信息,也有利于配合演讲者本人的操作使用。
(3)在幻灯片中,背景声音应有不同的效用,应视具体情况而定。 (4)幻灯片应有一致的设计风格,无论整体布局、颜色搭配,还是演示效果以及背景声音,都应当可以较好地反映出主题的内容。
整个演示文稿的设计要做到“美观大方,简洁明了;过渡自然,效果恰好;动静相宜,主题凸现
”。
第二章:C程序的基本结构
一、 单项选择题
1、以下不是C语言的特点的是________。
A)语言的表达能力强 B)语言定义严格 C)数据结构系统化 D)控制流程结构化
2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。
A)编辑和编译 B)编译和连接 C)连接和运行 D)编辑和运行
3、以下不是二进制代码文件是________。
A)标准库文件 B)目标文件 C)源程序文件 D)可执行文件
4、下面个选项组中,均属于C语言关键字的一组是________。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type
5、下面四组字符串中,都可以用作C语言标识符的是________。 A)print B)I \am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY
6、以下不属于流程控制语句的是_________。
A)表达式语句 B)选择语句 C)循环语句 D)转移语句
7、下面描述中,不正确的是________。
A)C语言的函数体由一系列语句和注释组成。 B)注释内容不能单独写在一行上。
C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。 D)scanf和printf是标准库函数而不是输入和输出语句。
8、下面描述中,正确的是________。
A)主函数的花括号必须有,而子函数中的花括号是可有可无的。 B)一个C程序行只能写一个语句。 C)主函数是程序启动时的唯一入口。 D)函数体包含了函数说明部分。
二、填空题
1、一个完整的C程序至少要有一个________函数。(主函数)
2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统)
3、C语言是以________为基本单位、整个程序由________组成。(函数 函数)
4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出)
5、标准库函数存放在________文件中。(函数库)
6、目标程序文件的扩展名是________。(.obj)
7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数)
8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)
三、应用题
1、你认为C语言的主要特点和用途是什么?他和其他高级语言有什么不同?
答:主要特点:生成的执行程序短,代码效率高,运行速度快。适合开发系统软件。与其他高级语言相比,具有面向机器的指令,具有构造类型能力,适应用面广,可用于一般用途,还可用于开发控制软件。
2、C语言以函数为程序的基本单位,它有什么好处?
C以函数为单位有利于程序的模块化,便于程序调试和阅读。
3、C语言程序结构的特点是什么?由哪些基本部分组成? 答:
1)C程序由函数构成。
2)每个函数由函数说明部分和函数体两部分组成。 3) 每个C程序总是从main函数开始执行
4) 书写格式自由。
5)每条语句必须以分号结束。
4、C语言标识符的作用是什么?命名规则是什么?与关键字有和区别?
答:标识符是C语言中用户给用到的变量、常量、数组、函数、文件、类型等的命名。 命名规则:以字母或下划线开头,后跟字母、数字或下划线。标识符一般不超过8个字符。 标识符不能与系统关键字同名。
5.指出下列符号中哪些是C语言标识符?哪些是关键字?哪些既非标识符亦非关键字? 标识符:stru,au_to, _auto,file,m_i_n,hello,ABC,SIN90,x1234,until, cos2x,s_3 关键字:sizeof 非关键字,非标识符:3id,-min,call..menu,n*m,x.y,1234,1234hello,s+3
P124 2古典问题:兔子总数(斐波那契数列) #includeint main() { int f1=1,f2=1,f,i,k=0; printf("%d\t %d\t",f1,f2); k=k+2; for(i=3;i<=20;i++) {
f=f1+f2;
printf("%d\t",f);
k++;
if(k%5==0)
printf("\n");
f1=f2;
f2=f; } printf("\n"); return 0; }
P124 3统计一个整数的位数 #includeint main() { int n,k=0; printf("请输入n的值:"); scanf("%d",&n); while(n) {
n/=10;
k++; } printf("%d\n",k); return 0; }
P124 4求逆序数 #includeint main() { int a,n;
1 printf("请输入一个整数:\n"); scanf("%d",&a); while(a>0) {
n=a%10;
printf("%d",n);
a=a/10;
} return 0; }
P124 5输出回文数 #includeint main() { int m,k=0; long int n,t; for(n=10;n<=2000;n++) {
m=0;
t=n;
while(t>0)
{
m=m*10+t%10;
t=t/10;
}
if(n==m)
{
printf("%d\t",n);
k++;
if(k%9==0)
printf("\n");
} } printf("\n"); return 0; }
判断回文数
#includeint main() { int m=0; long int n,t;
} printf("请输入一个整数:"); scanf("%d",&n); t=n; while(t>0) { m=m*10+t%10; t=t/10; } if(n==m) printf("%d是回文数\n",n); else printf("%d不是回文数\n",n); return 0; 实验指导书
P33 1求奇偶数和 #includeint main() { int m=0,n=0,i=1,x; while(i<=10) {
printf("请输入第%d个整数x=",i); scanf("%d",&x); if(x%2==0) {
n=n+x;
i++; } else {
m=m+x;
i++; } } printf("奇数之和m=%d,偶数之和n=%d\n",m,n);
m=0,n=0,i=1,x; do { printf("请输入第%d个整数x=",i); scanf("%d",&x); if(x%2==0) {
n=n+x;
i++; } else {
m=m+x;
i++; } }while(i<=10); printf("奇数之和m=%d,偶数之和n=%d\n",m,n);
m=0,n=0,i,x; for(i=1;i<=10;i++) {
printf("请输入第%d个整数x=",i);
scanf("%d",&x);
if(x%2==0)
{
n=n+x;
}
else
{
m=m+x;
} } printf("奇数之和m=%d,偶数之和n=%d\n",m,n);
return 0; }
P33 3求e值 #include
4 #includeint main() { int i; double m=1,e=1; for(i=1;i<=30;i++) {
m=m*1/i;
e=e+m; } printf("e=%lf\n",e);
m=1,e=1,i=1; while(fabs(1/m)>=1e-7) {
m=m*i;
e=e+1/m;
i++; } printf("e=%lf\n",e);
m=1,e=1,i=1; do {
m=m*i;
e=e+1/m;
i++; }while(fabs(1/m)>=1e-7); printf("e=%lf\n",e);
return 0;
P33 5求最大公约数和最小公倍数 #includeint main() { int t,x,y,r,m,n;
printf("please input two numbers:"); scanf("%d %d",&x,&y); m=x*y; if(xt=x;
x=y;
y=t; } while((r=x%y)!=0) {
x=y;
y=r; } n=m/y; printf("最大公约数%d:\n",y); printf("最小公倍数%d:\n",n); return 0;
P38 2求第一个能被9整除且个位数是5的数 #includeint main() { int i; for(i=100;i<=999;i++) {
if(i%9==0&&i%10==5)
break; } printf("第一个能被9整除且个位数是5的数为:\n%d\n",i); return 0; }
P38 3百钱百鸡问题 #includeint main() { int x,y,z,i=0; for(x=1;x<=20;x++)
6
{
} for(y=1;y<=33;y++) { for(z=3;z<=99;z=z+3) {
if((5*x+3*y+z/3==100)&&(x+y+z==100))
i++; } } printf("共有%d种买法:\n",i);
x,y,z,i=0;
for(x=1;x<=20;x++) {
for(y=1;y<=33;y++)
{
for(z=3;z<=99;z=z+3)
{
if((5*x+3*y+z/3==100)&&(x+y+z==100))
printf("公鸡只数:%d,母鸡只数:%d,小鸡只数%d\n",x,y,z);
}
} }
return 0; }
P38 4
#includeint main() { int i=1; while(1) {
i++;
if(i*i>=15)
{
printf("%d\n",2*i-1);
break;
}
7
}
} return 0;
8
1、
li
45
300.0 chang 30
200.0 chang
2、
#includestruct students {
char sid[100];
char name[100];
float score[3]; }student; void main() {
int i; float j;
printf("\nPlease input sid:
");
scanf("%s",student.sid);
printf("\nPlease input name: ");
scanf("%s",student.name);
printf("\nPlease input 3 score:(like1,1,1) ");/*输入逗号隔开*/
scanf("%f,%f,%f",&student.score[0],&student.score[1],&student.score[2]);
printf("\nsid = %s",student.sid);
printf("\nname = %s",student.name);
j=(student.score[0]+student.score[1]+student.score[2])/3.0;
printf("\naverage = %.2f",j);
getch(); }
3、
#include#include#define F sizeof(student) #define NULL 0 typedef struct scores { int english; int math; int c_language; int all; }TP; typedef struct students { char sid[15]; char name[15]; TP score; struct students *next; }student; student *input() { student *head,*p1,*p2; int n=0; char ch; clrscr(); head=(student *)malloc(F);head->next=NULL;
do {
n++;
printf("\n\nPlease input %d student message:
\n\n",n);
printf("\t%d student sid:
",n);
p1=(student *)malloc(F);p1->next=NULL;
scanf("%s",p1->sid);
printf("\n\t%d student name:
",n);
scanf("%s",p1->name);
printf("\n\t%d student scores(englesh,math,c_language):
",n);
scanf("%d,%d,%d",&p1->score.english,&p1->score.math,&p1->score.c_language);
p1->score.all=p1->score.english+p1->score.math+p1->score.c_language;
if(n==1)
{ head->next=p1;p2=p1; }
else
{ p2->next=p1;
p2=p1;
}
printf("\n\n\t\t\tContinue or back (press y/n):
");
ch=getch();
}while(ch=='y'||ch=='Y'); return head; } void average1(student *head) { student *p; int j; clrscr(); p=head->next;
while(p)
{ j=p->score.all/3;
printf("\n\nname:
%s\taverage: %d",p->name,j);
p=p->next;
} printf("\n\n\nPress eny key return."); getch(); } void average2(student *head) { student *p;int n=0,temp1=0,temp2=0,temp3=0; p=head->next; while(p) { temp1+=p->score.english;
temp2+=p->score.math;
temp3+=p->score.c_language;
p=p->next;n++; } printf("\n\naverage english is : %d\naverage math is : %d\naverage c_language is : %d\t",temp1/n,temp2/n,temp3/n); } student *sort(student *head) { student *head1,*p,*q,*r; int temp1=0,temp2=0,temp3=0,temp4; char s[15],n[15]; head1=head; for(p=head1->next;p->next!=NULL;p=p->next) { r=p;
for(q=p->next;q;q=q->next)
if(q->score.all>r->score.all)
r=q;
if(r!=p)
{ strcpy(s,p->sid);strcpy(n,p->name);
temp1=p->score.english;
temp2=p->score.math;
temp3=p->score.c_language;
temp4=p->score.all;
strcpy(p->sid,r->sid);strcpy(p->name,r->name);
p->score.english=r->score.english;
p->score.math=r->score.math;
p->score.c_language=r->score.c_language;
p->score.all=r->score.all;
strcpy(r->sid,s);strcpy(r->name,n);
r->score.english=temp1;
r->score.math=temp2;
r->score.c_language=temp3;
r->score.all=temp4;
} } return head1; } void output(student *head) { student *head2,*p;int i=1; clrscr(); head2=sort(head); for(p=head2->next;p!=NULL;p=p->next)
printf("\n\nname: %s\tsid: %s\tenglish: %d\tmath: %d\tc_language: %d\taverage: %d\tmingci: %d",p->name,p->sid,p->score.english,p->score.math,p->score.c_language,p->score.all/3,i++);
average2(head);
printf("\n\n\n\t\tPress eny key back."); getch(); } void main() { student *head,*p1,*p2; int i=0,j=1; head=input(); do {
clrscr();
printf("\n\n(1): average1.\n\n(2): average2.\n\n(3): sort.\n\n(4): output.\n\n\n
Please choose:
");
scanf("%d",&i);
switch(i)
{ case 1: average1(head); break;
case 2: clrscr();average2(head); printf("\n\n\nPress eny key retuen.");getch(); break;
case 3: clrscr();p1=sort(head); for(p2=p1->next;p2!=NULL;p2=p2->next) printf("\n\t\tname: %s\tmingci:%d",p2->name,j++);printf("\n\n\nPress eny key back.");getch(); break;
case 4: output(head); break;
default: printf("\nYour choose is not right.");break;
} }while(i!=-1); }
4、
#include#include#define NULL 0 #define F sizeof(worker) typedef struct work { char sid[15]; char name[15]; int money; struct work *next; }worker; int min=0,max=0; char a[15],b[15]; worker *input() { worker *head,*p,*q;int n=0; char ch; head=(worker *)malloc(F); head->next=0; do { n++;
p=(worker *)malloc(F); p->next=0;
printf("\n\n\tPlease input %d worker message :
",n);
printf("\n%d worker sid:
",n);scanf("%s",p->sid);
printf("\n%d worker name:
",n);scanf("%s",p->name);
printf("\n%d worker money:
",n);scanf("%d",&p->money);
if(n==1)
{
head->next=p; q=p;
max=p->money;strcpy(a,p->name);
min=p->money;strcpy(b,p->name);
}
else
{
q->next=p;
if(p->money>max) {max=p->money;strcpy(a,p->name);}
if(p->moneymoney;strcpy(b,p->name);}
q=p;
}
printf("\n\t\ty/n");ch=getch(); }while(ch=='y'||ch=='Y'); return head; } void output() {
clrscr(); printf("\nThe max money is: %d\t\tname is: %s\n\n",max,a); printf("\nThe min money is: %d\t\tname is: %s",min,b); } void main() {
input(); output(); getch(); }
5、
6、
#include"stdio.h" #define F sizeof(stu) #define NULL 0 typedef struct student { int sid; int average; struct student *next; }stu;stu *head; stu *create() { stu *p1,*p2; int n=0; char ch; head=(stu *)malloc(F);head->next=NULL;
do {
n++;
printf("\n\nPlease input %d student message:
\n\n",n);
printf("\t%d student sid:
",n);
p1=(stu *)malloc(F);p1->next=NULL;
scanf("%d",&p1->sid);
printf("\n\t%d student average:
",n);
scanf("%d",&p1->average);
if(n==1)
{ head->next=p1;p2=p1; }
else
{ p2->next=p1;
p2=p1;
}
printf("\n\n\t\t\tContinue or back (press y/n):
ch=getch();
}while(ch=='y'||ch=='Y'); return head; } stu *select(stu *head,int x) { stu *s; s=head->next; while(s) {
if(s->sid==x)
break;
s=s->next; } return s; }
stu *insert(stu *head,int x,int y) { stu *p,*r,*q; clrscr(); p=head->next; r=(stu *)malloc(sizeof(stu)); r->sid=x; r->average=y; if(p==NULL)/*如果插入空表*/
{
p=r;
r->next=NULL;
");
printf("\ninsert success!!");
}
else
{ while(x>p->sid) /*找到插入的位置,按学号大小。(找到位置或者到了表尾都会跳出循环)*/
{
if(p->next==NULL)break; p=p->next;
}
if(xsid)
/*插到中间位置*/
{
r->sid=p->sid;
r->average=p->average;
p->sid=x;
p->average=y;
r->next=p->next;
p->next=r;
printf("\ninsert success!!");
}
else if(x==p->sid) /*学号不能相同*/
printf("\nError--->your input this same sid.");
else
/*插到末尾*/
{
p->next=r;
r->next=NULL;
printf("\ninsert success!!");
}
}
return head; } stu *get(stu *head,int n) /*得到位置为n的结点的指针*/ { stu *p;int i; p=head->next; if(n==0) return head; else
{
for(i=1;ip=p->next;
return p; } } stu *delete(stu *head,int sid) {
stu *p,*q;int temp=0,i=0; p=head->next; if(!p)
{
printf("\nlist is empty.
press eny key back.");getch();return head;}/*表空*/ else { while(p)
/*查找学号为sid的结点的指针*/
{i++; /*标记学号为sid的结点的位置*/
if(p->sid==sid)
{temp=1;break;} /*temp=1标记找到了*/
p=p->next; }
if(temp==1) /*如果有学号为sid的结点*/
{ q=get(head,i-1);/*得到sid的前一个结点的指针*/
q->next=p->next;
free(p);
printf("\n\ndelete sucess !!!");
return head;
}
else
/*没有找到*/
{ printf("\n\nNO this data.\n");
return head;
} } } void print(stu *head) { stu *p; p=head->next; if(!p){printf("\nlist is empty.
press eny key back.");getch();} while(p) {
printf("\n%d :\t%d ",p->sid,p->average);
p=p->next; } } main() { stu *p1,*p2; char ch1; int n,i=0,j=0; head=create(); do {clrscr(); printf("\n1. insert. "); printf("\n2. select."); printf("\n3. delect."); printf("\n4. print list.
"); printf("\n5. EXIT
"); printf("\n
............choice (1-5)............."); ch1=getch(); switch(ch1) {
case '1':
{ clrscr();
printf("\nplease input insert sid. and average(like 1,1):");
scanf("%d,%d",&i,&j);
head=insert(head,i,j);
printf("\n\n\nPress eny key back.");getch();
break;
}
case '2':
{ clrscr();
printf("\ninput you want to selete sid:
");
scanf("%d",&n);
p1=select(head,n);
{
if(p1) printf("\nsid:%d\taverage:%d",p1->sid,p1->average);
else
printf("\nNo this data.");
}
printf("\n\n\nPress eny key back.");getch();
break;
}
case '3':
{ clrscr();printf("\nPlease input you want delete sid: ");
scanf("%d",&n);
head=delete(head,n);
printf("\n\n\nPress eny key back.");getch();
break;
}
case '4':
{ clrscr();
printf("All information :");
print(head);
printf("\n\n\nPress eny key back.");getch();
break;
}
case '5': return;
default: printf("\n\nYour enter is not right. press eny key back.");getch(); }
}while(n); }
7、
#include#define F sizeof(L) typedef struct list {
char data;
struct list *next; }L; L *set_list() {
L *head,*p1,*p2;
char c;
int n=0;
head=(L *)malloc(F); head->next=0;
/*建立链表*/
p1=p2=head;
printf("\nPlease input char(press * finish):");
scanf("%c",&c);
while(c!='*')
{
n++;
if(n==1)
p1->data=c;
else
{
p1=(L *)malloc(F);
p1->data=c;
p2->next = p1;
p2 = p1;
p1->next = 0;
}
scanf("%c",&c);
}
p1=head;
while(p1)
{
printf("%c ",p1->data);p1=p1->next;
}
printf("\n\n\n");
return head; } void change_list(L *head1)
/*算法:p2指向最后一个元素,p1指向第一个元素。交换他们的值,p1,p2同时往中间靠拢。*/ {
L *p1,*p2,*p3;
int i,j,k,n=1;
char temp;
p1=head1;p2=head1;p3=head1;
while(p3->next)
{ p3=p3->next;n++;
}/*求链长*/
for(i=n;i>(n/2);i--) /*外循环使p1后移,p2前移。*/
{
p2=head1; for(j=1;j
p2=p2->next; /*p2指向最后一个元素*/ temp=p1->data;p1->data=p2->data;p2->data=temp;/*交换他们的值*/ p1=p1->next;/*p1向后移*/
}
while(head1)
{ printf("%c ",head1->data); head1=head1->next; } } void main() { L *head; head=set_list(); change_list(head); getch(); }