上海应用技术学院c语言实验报告5,C语言程序设计第1章参考答案(上海交大出版社)[五篇材料]...

本文提供了一次关于如何让幻灯片动起来的培训课程内容,详细介绍了如何设置幻灯片的切换效果、自定义动画、显示顺序、背景声音以及超链接。培训目标在于提升幻灯片的视觉效果和交互性,强调了设计时应注意时间、内容呈现顺序、背景声音的适用性和整体设计风格的一致性。
摘要由CSDN通过智能技术生成

第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(); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值