人人范文网 其他范文

高级语言程序设计(精选多篇)

发布时间:2022-05-26 21:09:10 来源:其他范文 收藏本文 下载本文 手机版

推荐第1篇:高级语言程序设计教学大纲

《高级语言程序设计》教学大纲(Visual FoxPro)

课程编号:030202 总学时:54学时(含上机24学时)

适用专业:全院管理类所有本、专科专业

一、教 学 内 容

1、数据库基本知识 ①数据库的特点; ②数据库系统分代; ③数据库系统的分类;

④Visual FoxPro文件的主要技术指标; ○5 Visual FoxPro的界面和工作方式

2、数据库的基本操作

①数据库文件的建立,CREATE、APPEND、LIST、DISPLAY;

② Visual FoxPro的命令工资方式,菜单和命令方式、表达式、数组和常用函数;

③修改数据库文件。MODIFY STRUCTURE、INSERET、DELETE、RECALL、PACK、EDIT、CHANGE、BROWSE、REPLACE、SCATTER、GATHER;

④复制数据库文件。COPY STRUCTURE、COPY TO、数据库的结构文件、成批记录的复制; ⑤磁盘文件的基本操作。COPY FILE、RENAME FILE、DELETE FILE、DIR、TYPE FILE;

3、查询和统计

①排序和索引sort、index;

②查询命令locate、find、seek、continue、skip;

③数据工作期、视图文件、表的关联、多工作区查询、库文件的关联; ④SELECT-SQL查询。

○5统计命令COUNT、SUM、AVERAGE、CALCULATE、TOTAL;

4、程序设计初步

①程序文件。程序文件的建立和执行MODIFY COMMAND、DO 和菜单方式执行、状态命令设置、INPUT、ACCEPT、WAIT、?、??、; ②程序控制命令。程序设计的三种结构顺序、分支、循环;

③多模块化程序设计。基本概念、子程序、函数、过程、全程变量和局部变量;

5、窗口设计

①窗口操作命令。窗口的定义与修改DEFINE WINDOW、ACTIVATE WINDOW、MODIFYWINDOW、HIDE WINDOWS、SHOW WINDOW、DEACTIVATE WINDOWRELEASE WINDOW、CLEAR WINDOW、CLEAR ALL;

②窗口着色。颜色对与颜色模式、SET COLOR TO、COLOR SCHEME、SET COLOROFSCHEME; ③BROWSE窗口设计。定义BROWSE窗口、定义功能键。

6、菜单设计

①下拉式菜单设计 ②弹出式选单设计

7、表单设计基础 ① 表单向导 ② 表单设计器

③面向对象的程序设计方法(基本概念、对象的引用)

8、表单控件设计

① 输出类控件(标签、图象、线条、形状)

② 输入类控件(文本框、编辑框、列表框与组合框、微调控件) ③ 控制类控件(美丽按钮与美丽按钮组) ④ 容器类控件(表格、页框、容器)

⑤ 连接类控件(ActiveX控件、ActiveX绑定控件)

9、表单高级设计

①多表单应用程序(应用程序界面、表单集)

②用户定义属性与方法程序(用户定义属性、用户定义方法程序) ③类(基本概念、用户定义类) ④表单/表单集设计实例

10、报表设计

①打印基础。打印准备、打印方法、打印命令 ②传统的打印设计

③报表设计器的基本操作(打开标本设计器窗口、快速制表、标本打印) ④报表设计器的高级操作,了解

9、系统开发实例(对本科做基本的讲解) ①开发的基本步骤

○2以具体的实例进行讲解

二、《高级语言程序设计(Visual FoxPro语言)》大纲说明

1、教学目的与任务

在当今时代,计算机已经在世界范围内得到广泛的推广和应用。其中信息管理和数据处理已成为计算机应用的主流领域,而数据库技术是这个领域的核心之一。

Visual FoxPro系统是一个优秀的多用户关系数据库管理系统。本课程详细地讲解了Visual FoxPro的各种命令、函数的功能,以及Visual FoxPro程序设计的方法, 培养学生能灵活地应用Visual FoxPro 语言设计程序、进行维护管理,充分发挥计算机在信息管理和数据处理方面的优越性。

《高级语言程序设计(Visual FoxPro语言)》是面向全院所有专业本、专科生的计算机高级语言程序,它侧重于数据库的基本概念、数据库的基本操作、简单的程序设计、菜单程序设计、窗口菜单设计以及必须掌握的表单设计和简单的菜单生成程序设计。侧重于计算机对数据的基本处理、表单的数据输出,使学生具备一定的计算机高级语言程序设计的能力,为学生利用计算机解决问题(特别是专业中的问题)准备必要的知识;本大纲重点基于数据库的基本操作和简单的程序设计,为学生学习相应的语言打下一定的基础。

2、本课程与其他课程的关系

学习本课程,需要有一定的计算机基本操作技能,对计算机有一定的了解和使用。它是学 要求学生掌握计算机高级语言以及对计算机对数据处理方式和方法的掌握。为学习今后学习计算机解决问题和高年级学习专业课打下坚实的基础。

3、教学基本要求

具有使用计算机高级语言解决基本问题的能力,掌握计算机对数据处理的方法和掌握计算机对数据处理的基本操作技能。要求学生学习了本课程后,能编制简单的程序解决数据处理的问题,掌握程序设计的基本方法。

了解数据库的基本原理和数据库与数据库管理系统的关系,了解Visual FoxPro的基本性能指标,掌握数据库的基本使用方法。

掌握数据库的基本统计和数据库记录的查询。

掌握程序设计的三种方法和简单的程序设计,这是全书的重点。

掌握菜单设计、窗口设计、菜单设计,对菜单设计,只要求掌握屏幕菜单方式和屏幕生成程序,对命令方式只做基本的了解。

4、实验课程

附实验大纲,按实验大纲的要求完成实验。

5、课程学时安排

学时安排遵循理论重于实践,理论课的学时分配占总学时的60%,实验课的操作,要求严格按照实验大纲,以循序渐进的方式进行,如果学生没有完成当天实验课程的任务,学生可以自己找时间自己解决。

章 次

讲 课 内 容

授课

上机 第一部分 数据库的基本概念

1 第二部分 数据库的基本操作

4 第三部分 查询与统计、SQL

2 第四部分 程序设计基础

6 第五部分 菜单设计

2 第六部分 表单设计及基础

4 第七部分 表单高级设计

2 第八部分 报表设计

2 合

32 22

6、教学参考资料

《数据库及其应用》 牛允鹏等 经济科学出版社

《Visual FoxPro活学活用》 张佑挺 张锦川等 重庆大学出版社

《Visual FoxPro及其应用系统开发》 史济民 汤观全编著 清华大学出版社 《FoxPro用户参考大全》 金荣得 胡传国等 电子出版社 《FoxBASE数据库应用教程》 北京希望电子出版社 《FoxPro命令与函数》 张锦豪等 学苑出版社

《FoxPro数据库实用教程》 王跟东等编著 四川大学出版社

推荐第2篇:高级语言程序设计实验报告 C语言实验报告

C语言程序设计实验报告

实验二 循环结构程序设计

班级 2012196 学号 201219628 姓名 李明月

一、实验目的

(1)掌握用while语句,do-while语句和for语句实现循环的方法; (2)掌握循环结构的嵌套;

(3)掌握break语句和continue语句的使用方法。

二、实验内容及步骤

1.相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。 国王能兑现他的许诺吗?

程序1:试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦子合多少立方米?(已知1立方米麦子约1.42e8粒) 总粒数为:sum=1+2+22+23+„+263 程序代码:

#include int main( ) //定义一个主函数 { int i; double t=1,sum=1,v; //定义变量

for(i=1;i

return 0; } 运行结果:

1

2.求完数。

程序2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,输出所有的完数(要求:一行显示6个数);

程序代码:

#include int main() { int i,j,sum,n=0; printf(\" 1000以内的完数有:\\n\"); for(i=1;i

sum=0; for(j=1;j

if(i%j==0)

{

sum=sum+j;

} } if(sum==i)

{ printf(\" %d\",i);

n=n+1;

if(n%2==0)

printf(\"\\n\");

} } printf(\"\\n\"); return 0; } 运行结果:

2

3.打印九九乘法表

程序3:编程输出如下上三角形式的九九乘法表。

1 2 3 4 5 6 7 8 9---- - - -\\n\"); for(i=1;i

代表行 输出空格达到来使得向右对齐代表列

输出行与列的乘积 3 1 2 3 4 5 6 7 8 9

运行结果:

三、问题讨论

break语句和continue语句在循环结构中使用时有何区别?举例说明。

break语句是跳出整个循环过程,不再判断执行循环的田间是否成立,并且break语句不能用于循环语句和switch语句之外的任何其他语句中。而continue语句则只是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

例子:

#include int main( ) { int i; for(i=100;i

printf(\"%d\",i); } printf(\"\\n\"); return 0; } 输出:

但是换成break之后:

四、实验心得

个人感觉对于这几个循环语句还是for循环最为灵活,不进可以用于循环次数一句in个确定的情况,还可用于不确定的情况下,它也完全可以代替while语句。并且是程序看起来更为简洁明了。

5

推荐第3篇:《高级语言程序设计》课程设计大纲

《高级语言程序设计》课程设计教学大纲

课程名称:高级语言程序设计课程设计

课程总学时:32 适用专业:广播电视工程、电子信息工程、电子科学与技术

课程类别:必修

一、课程设计任务与目的

《高级语言程序设计》课程是一门实践性较强的课程,课程设计环节是课程学习的重要组成,是课程教学的必经步骤。目的是培养学生实际操作技能和解决实际问题的能力。要求学生掌握C语言设计、调试、运行方法,获得用C语言解题的实际体会,加深对C语言的理解,得到C程序设计方法和技巧的训练,掌握C程序设计的全过程。通过课程设计的教学,使学生巩固和深化已学的理论知识,加强综合应用能力,训练学生掌握分析问题、解决问题的方法,培养较强的动手能力和一定的设计和调试能力。

二、课程设计基本内容与要求

鉴于课程设计的性质、要求和具体内容,对课程设计提出如下要求;

1、关于课题及选题

在课程设计任务书中列出了多个设计课题,每个课题都有相应的要求或说明。参加课程设计的学生首先要了解设计的任务,仔细思考各题的设计要求,然后根据自已的基础和能力情况从中选择一题。一般来说,选择课题应以在规定的时间内能完成,并能得到应有的锻炼为原则。

若学生对任务书中课题以外的相关课题较感兴趣,希望选作课程设计的课题时,应征得指导教师的认可,并写出明确的设计要求和说明。

2、关于设计的总要求

在设计时,要严格按照题意要求独立进行设计,不能随意更改。若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。

3、验收

在课程设计完成后应由指导教师当场运行、验收,只有在验收合格后才能算设计部分的结束。

4、设计报告

课程设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。设计报告一般要以固定规格的纸张书写并装订,字迹及图形要清楚、工整(电子文档尤佳)。内容及要求如下:

(1)设计任务、要求及所用软件环境或工具。

(2)问题模型化描述以及求解算法的简要描述。

(3)设计的模块构成、各模块的简要说明、流程图、调用关系表。

(4)所设计软件的组成(程序文件和数据文件)及使用说明。

(5)设计总结和体会。

(6)验收情况。

三、课程设计设备与材料

计算机;Visual C++6.0或C-Free3.5或Turbo C++3.0软件。

四、考核方式与评分办法

1、学生按照实习计划和大纲完成实习教学任务,考试合格取得相应学分。

2、学生实习考核内容与成绩比例:实习态度与实习纪律占20%、业务能力与水平占40%、答辩与验收情况占20%,实习报告占20%。

3、无故不参加实习或实习全过程缺勤在三分之一及以上者,实习成绩视为不及格。

4、学生实习成绩按优秀、良好、中等、及格和不及格五级评定,原则上呈正态分布,严格控制优秀比例,一般优秀率不大于20%。

五、课程设计参考书

1、潭浩强.C语言程序设计.清华大学出版社.2000

2、廖湖声等.C语言程序设计案例教程.人民邮电出版社.2003

3、张仁杰 王风茂.《C语言程序设计实训教程》中国电力出版社.2004

执笔人:裘姝平

教研室:电子信息工程教研室 编制日期: 2008 年 9月

推荐第4篇:C高级语言程序设计实验内容

实验一 C语言的运行环境和基础知识

一、实验目的

1.掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。

2.熟练掌握Visual C++ 6.0环境运行的C程序上机步骤 3.数据类型、常量和变量的使用 4.表达式及运算符的应用 5.C程序的调试。

二、实验内容和源程序清单、测试数据、结果。

1、最简单的C程序。(要求文件名:1_1.c) #include int main() {

printf(“Hello world!\\n”); return 0; }

2、一个具有致命错误的程序,请修改。(要求文件名:1_2.c) #include int main() { int i scanf(“%d”,i);

printf(“i=%d\\n”,i);

return 0; }

3、一个具有警告语法错的程序。(要求文件名:1_3.c) #include int main() { int i=9,j,s;

s=i+j; printf(\"s=%d\\n\",s); return 0; }

4、写出一个程序测试整型、字符型数据表示,并输出以验证是否正确。(要求文件名:1_4.c) #include int main() {

int x=010,y=10,z=0x10;

/* 整型数据表示 */ char c1=\'M\',c2=\'\\x4d\',c3=\'\\115\',c4=77,c;

/* 字符型数据表示 */

/* 整型数据的输出 */ printf(\"x=%o,y=%d,z=%x\\n\",x,y,z);

/* 数据以原进制输出,注意是否有前导0或0x */ printf(\"x=%d,y=%d,z=%d\\n\",x,y,z);

/* 数据以10进制输出,换算到10进制,结果对吗? */ /* 字符型数据的输出 */ printf(\"c1=%c,c2=%x,c3=%o,c4=%d\\n\",c1,c2,c3,c4);

/* 数据以原进制输出,注意是否有前导0或0x ?*/ printf(\"c1=%c,c2=%c,c3=%c,c4=%c\\n\",c1,c2,c3,c4);

/* 结果都是什么字符?,也就是说字符可以自由的表示成几种形式? */ printf(\"c1=%d,c2=%d,c3=%d,c4=%d\\n\",c1,c2,c3,c4);

/* 看看这些字符的10进制ASCII码,哦,ASCII码一样,同一种字符 */

/* 字符型数据参与算术运算 */

1 c=c1+32;

/* 字符怎么参加了数学运算,哦,是字符对应的ASCII码-整数 /* 参与数学运算;结果还是一个整数-另外一个字符的ASCII码 */ printf(\"c=%c,c=%d\\n\",c,c);

/* 看看这个字符是什么?哇,\'M\'+32=\'m\'了,看看ASCII码表,原来如此! */ return 0; } 参考结果: x=10,y=10,z=10 x=8,y=10,z=16 c1=M,c2=4d,c3=115,c4=77 c1=M,c2=M,c3=M,c4=M c1=77,c2=77,c3=77,c4=77 c=m,c=109

三、实验报告要求

将题目:2和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 2

实验二

顺序结构程序设计

一、实验目的:

1.掌握顺序结构程序设计 2.掌握赋值语句的用法

3.熟练地进行数据输入和输出

二、实验内容和源程序清单、测试数据、结果。

1、已知:a=2,b=3,x=3.9,y=2.3(a,b整型,x,y浮点),计算算术表达式(float)(a+b)/2+(int)x%(int)y的值。试编程上机验证。(要求文件名:2_1.c) 提示编程要点:

(1)先判断结果值类型,可设置一个此类型的变量用于记录表达式结果,本例用r存放结果; (2)程序先给几个变量赋初值,然后将表达式赋值给变量r; (3)最后打印变量r的值就是表达式的值。 参考程序:

#include int main() {

int a=2,b=3; float x=3.9,y=2.3;

float r;

r=(float)(a+b)/2+(int)x%(int)y;

printf(\"%f\\n\",r); return 0; } 参考结果: 3.500000 思考:为什么是这个结果?

2、分析下面程序结果,并上机验证。(要求文件名:2_2.c) #include int main() {

int i,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

printf(\"i=%d, j=%d, m=%d, n=%d\\n\",i,j,m,n);

return 0; } 参考结果:

i=9, j=11, m=9, n=10

3、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。从键盘如何输入?(要求文件名:2_3.c)

3 #include int main() { int a,b; float x,y; char c1,c2; scanf(\"a=%d b=%d\",&a,&b); scanf(\"%f %e\",&x,&y); scanf(\"%c%c\",&c1,&c2); printf(\"a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\\n\",a,b,x,y,c1,c2); return 0; }

4、编程序,用getchar函数读入两个字符给c

1、c2,然后分别用 putchar函数和 printf函数输出这两个字符。(要求文件名:2_4.c) 参考程序:

#include int main() { char c1,c2; c1=getchar();c2=getchar(); putchar(c1);putchar(c2); printf(\"\\n%c,%c\",c1,c2); return 0; }

三、实验报告要求

将题目:1和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

实验三

选择结构程序设计

一、实验目的

1.2.3.4.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);

学会正确使用逻辑运算符和逻辑表达式;

熟练掌握if语句和switch语句;

熟练掌握switch语句中break语句的作用。

二、实验内容和源程序清单、测试数据、结果。

(1)掌握各种格式转换符的正确使用方法,输出结果。(要求文件名:3_1.c) #include int main() { int a=5,b=7; float x=67.8564,y=-789.124; char c=\'A\'; long n=1234567; unsigned u=65535; printf(\"%d%d\\n\",a,b); printf(\"%3d%3d\\n\",a,b); printf(\"%f,%f\\n\",x,y); printf(\"%-10f,%-10f\\n\",x,y); printf(\"%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\\n\",x,y,x,y,x,y); printf(\"%e,%10.2e\\n\",x,y); printf(\"%c,%d,%o,%x\\n\",c,c,c,c); printf(\"%ld,%lo,%x\\n\",n,n,n); printf(\"%u,%o,%x,%d\\n\",u,u,u,u); printf(\"%s,%5.3s\\n\",\"COMPUTER\",\"COMPUTER\"); return 0; }

(2)1.从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年: (1)能被4整除,但不能被100整除; (2)能被400整除。(要求文件名:3_2.c) 参考程序:

#include int main() {

int year, flag; printf(\"Enter year:\"); scanf(\"%d\", &year ); if ( year%4==0&&year%100!=0 || year%400==0 )

{

flag = 1;

} else

{

flag = 0;

} if ( flag )

{

printf(\"Yes\\n\");

} else

{

printf(\"No\\n\");

5 } return 0; } (3)编程序,并给出程序的运行结果,注意思考case中break的用法以及为什么是这样的结果?(要求文件名:3_3.c) 参考程序:

#include int main() {

int x=2,y=1,a=1,b=2; switch(x) { case 2:

switch(y)

{

case 1:a++;

case 2:b++; break;

}

case 3:a++;b++; break; } printf(\"%d %d\\n\",a,b); return 0; } (4)编程序:输入4个整数,要求按由小到大的顺序输出。(要求文件名:3_4.c) 参考程序:

#include int main() {

int t,a,b,c,d; scanf(\"%d,%d,%d,%d\",&a,&b,&c,&d); printf(\"a=%d,b=%d,c=%d,d=%d\\n\",a,b,c,d); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(a>d) {t=a;a=d;d=t;} if(b>c) {t=b;b=c;c=t;} if(b>d) {t=b;b=d;d=t;} if(c>d) {t=c;c=d;d=t;} printf(\"%d,%d,%d,%d\\n\",a,b,c,d); return 0; }

三、实验报告要求

将题目:2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

实验四 循环结构程序设计

一、实验目的

1.2.3.4.5.熟练使用while、for语句实现循环程序设计

理解循环条件和循环体,以及while、for语句的相同及不同之处 掌握嵌套循环程序设计

熟练掌握下拉菜单Debug的程序调试方法 掌握break和continue的用法

二、实验内容和源程序清单、测试数据、结果。

(1)输入两个正整数m和n,求它们的最大公约数和最小公倍数。(要求文件名:4_1.c) 参考程序:

#include int main( ) { int x,y,i,m,max; scanf(\"%d,%d\",&x,&y); if(x>y)

m=x; else

m=y; for(i=1;i

if((x%i==0)&&(y%i==0))

max=i; } printf(\"%d\\n\",max); printf(\"%d\\n\",x*y/max); return 0; } (2)从键盘输入一个 int 类型的正整数,输出它的所有因子。如输入6,输出1,2,3;输入20,输出1,2,4,5,10。(要求文件名:4_2.c) 参考程序:

#include int main() { int x,i; scanf(\"%d\",&x); for(i=1;i

printf(\"%d\\n\",i); } return 0; } (3)输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。(要求文件名:4_3.c) 参考程序:

#include

7 #include int main() { char c; int letter=0,digit=0,space=0,other=0; printf(\"please input string:\"); while((c=getchar())!=\'\\n\') {

if(c>=\'a\'&&c=\'A\'&&c

letter++;

else if(c>=\'0\'&&c

digit++;

else if(c==\' \')

space++;

else other++; } printf(\"%d,%d,%d,%d\\n\",letter,digit,space,other); return 0; } (4)编程计算111111的值。(要求文件名:4_4.c) 23499100参考程序:

#include int main() {

int sign = 1; double sum = 1; double deno = 2; double term = 1; while(deno

sign = (-1)*sign;

term = sign*(1/deno);

sum = sum+term;

deno++; } printf(\"%lf\\n\",sum); return 0; }

三、实验报告要求

将题目:3和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

实验五

数组

一、实验目的

1.掌握一维、二维数组的定义、引用、应用 2.掌握字符数组的定义、引用、应用 3.掌握字符串处理函数

二、实验内容和源程序清单、测试数据、结果。

(1)给出下面程序的结果,思考为什么?(要求文件名:5_1.c) #include int main () {

char a[]=\"Chinaren\",b[]=\"Tiananmen\"; char *p1,*p2;

int k=0; p1=a;

p2=b; for(k=0;k

if(*(p1+k)==*(p2+k))

printf(\"%c\",*(p1+k)); printf(\"\\n\"); return 0; } (2)有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。(要求文件名:5_2.c) 参考程序: #define M 3 #define N 4

#include int main( ) { int max,i,j,r,c;

int a[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};

max=a[0][0];

for(i=0;i

for(j=0;j

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

{

max= a[i][j];

r=i;

c=j;

}

printf(\"max=%d , row =%d , colum=%d \\n\",max , r, c);

return 0; } (3)编程序用于读入10个字符串,然后找出最大的字符串并打印。(要求文件名:5_3.c) 参考程序:

#include #include main() {

char str[10][80],maxstring[80];

int i; printf(\"Enter ten strings:\\n\"); for (i=0; i

{

scanf(\"%s\", str[i]); } strcpy(maxstring, str[0]);

for (i=1; i

{

if (strcmp(str[i],maxstring)>0)

{

strcpy(maxstring,str[i]);

} } printf(\"The max string is:%s\\n\",maxstring); } (4)给出下面程序的运行结果,思考为什么?(要求文件名:5_4.c) #include int main() {

int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}}; int i,j,s=0; for(i=0;i

for(j=0;j

{

if(a[i][j]

if(a[i][j]==0)break;

s+=a[i][j];

} } printf(\"%d\\n\",s); return 0; } (5)测试二维数组的各个地址值,结果是什么,思考原因。(要求文件名:5_5.c) #include #define M 3 #define N 4 int main() {

int a[M][N]; printf(\"%x\\n\",a); printf(\"%x\\n\",a[0]); for(int i=0;i

printf(\"%x,\",&a[i][j]);

return 0; }

三、实验报告要求

将题目:2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

实验六

函数

一、实验目的

1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。

2.了解主调函数和被调函数之间的参数传递方式。

二、实验内容和源程序清单、测试数据、结果。

(1)给出下面程序的结果,思考为什么?(要求文件名:6_1.c) #include void swap(int x,int y) { int t; t=x; x=y; y=t; printf(\"%d %d \",x,y); } int main() { int a=5,b=7; swap(a,b); printf(\"%d %d\\n \",a,b); return 0; } (2)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。(要求文件名:6_2.c) 参考程序:

#include int prime(int number); int main() { int number; printf(\"please input a num:\\n\"); scanf(\"%d\",&number); if (prime(number))

printf(\"%d is prime!\",number); else

printf(\"%d is not !!\",number); return 0; } int prime(int number) /*此函数用于判别素数*/ { int flag=1,n; for(n=2;n

if (number%n==0)

flag=0; return(flag); } (3)求两个整数的最大公约数和最小公倍数。写一个函数求最大公约数。(要求文件名:6_3.c) 参考程序:

#include int max_ys(int x,int y); int main( ) { int x,y,i,max; scanf(\"%d,%d\",&x,&y); max=max_ys(x,y);

11 printf(\"%d\\n\",max); printf(\"%d\\n\",x*y/max); return 0; } int max_ys(int x,int y) { int i,m,max; if(x>y) m=x; else m=y; for(i=1;i

max=i; } return(max); } (4)写一函数,输入一个十六进制数,输出相应的十进制数。(要求文件名:6_4.c) 参考程序:

#include #include #include long change(char shu[]) { long i,k,sum=0; k=strlen(shu)-1; for(i=k;i>=0;i--)

if(shu[i]>=48&&shu[i]

sum=sum+(shu[i]-48)*pow(16,k-i);

else if(shu[i]>=65&&shu[i]

sum=sum+(shu[i]-55)*pow(16,k-i);

else if(shu[i]>=97&&shu[i]

sum=sum+(shu[i]-87)*pow(16,k-i);

else

{

printf(\"error!\\n\");

break;

} return sum; } int main() { char str[100]; long s; gets(str); s=change(str); if(!s)

printf(\"The number is not ox\\n\"); else

printf(\"change:%ld\\n\",s); return 0; }

三、实验报告要求

将题目:3和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

实验七

指针

一、实验目的

1.掌握指针变量的定义与引用。

2.熟练使用函数指针、数组指针、字符串指针编写应用程序。

二、实验内容和源程序清单、测试数据、结果。

(1)输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。 参考程序:(输入三个整数,按由小到大的顺序输出)(要求文件名:7_0.c) #include void swap(int *p1,int *p2); int main() { int n1,n2,n3,*p1,*p2,*p3; scanf(\"%d,%d,%d\",&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(n1>n2) swap(p1,p2); if(n1>n3) swap(p1,p3); if(n2>n3) swap(p2,p3); printf(\"the order is:%d,%d,%d\\n\",n1,n2,n3); return 0; } void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } 参考程序:(输入三个字符串,按由小到大顺序输出)(要求文件名:7_1.c) #include #include void swap(char *p1,char *p2); int main() { char s1[20],s2[20],s3[20]; char *ps1=s1,*ps2=s2,*ps3=s3; scanf(\"%s\",ps1); scanf(\"%s\",ps2); scanf(\"%s\",ps3); if(strcmp(ps1,ps2)>0) swap(ps1,ps2); if(strcmp(ps1,ps3)>0) swap(ps1,ps3); if(strcmp(ps2,ps3)>0) swap(ps2,ps3); printf(\"the order is:%s,%s,%s\\n\",ps1,ps2,ps3); return 0; } void swap(char *p1,char *p2) { char temp[20]; strcpy(temp,p1); strcpy(p1,p2); strcpy(p2,temp); }

13 (2)用指向指针的指针的方法对x个整数排序并输出。要求将排序单独写成一个函数。x和各整数在主函数中输入,最后在主函数中输出。(要求文件名:7_2.c) 参考程序:

#include void maopao(int *p,int x); int main() {

int x,a[100],*p,i; p=a; scanf(\"%d\",&x); for(i=0;i

scanf(\"%d\",p++); p=a; printf(\"\\n\"); maopao(p,x); printf(\"the sorted numbers:\\n\"); p=a; for(i=0;i

printf(\"%d\\t\",*p);

return 0; } void maopao(int *p,int x) { int i,j,temp; for(i=0;i

for(j=0;j

if(*(p+j)>*(p+j+1))

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

} } (3)利用函数和指针将给定字母字符串的第一个字母变成大写字母,其它字母变成小写字母。在main函数中接收字符串的输入,改变后的字符串的输出也在main函数中实现。(要求文件名:7_3.c) 参考程序:

#include #include void change(char *s); int main() { char s[100]; char *ps=s; scanf(\"%s\",ps); change(ps); printf(\"%s\",ps); return 0; } void change(char *s) { int x,i; x=strlen(s); if(*s>=\'a\'&&*s

*s-=32; s++;

} for(i=0;i=\'A\'&&*s

*s+=32;

三、实验报告要求

将题目2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

实验八

结构体和共用体

一、实验目的

1.掌握结构体类型和结构体变量的定义。

2.掌握结构类型变量的定义和使用。

3.掌握链表的概念,初步学会对链表进行操作。

二、实验内容和源程序清单、测试数据、结果。

(1)给出下面程序的运行结果,思考为什么?(要求文件名:8_1.c) #include struct STU {

char num[10];

float score[3]; };

int main() {

struct STU s[3]={{\"1122301\",90,95,85}, {\"1122302\",80,90,75}, {\"1122303\",98,92,85}}, *p=s;

int i;

float sum = 0;

for (i=0; i

sum = sum + p->score[i];

} printf(\"%6.2f\\n\",sum);

return 0; } (2)有10个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入十个学生的数据,要求打印出每个学生的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。(要求文件名:8_2.c) #include #define N 10 struct student {

char num[6];

char name[8];

float score[3];

float avr; } stu[N];

int main() { int i,j,maxi;

float sum,max,average;

for (i=0;i

{ printf(\"input scores of student %d:\\n\",i+1);

printf(\"NO.:\");

scanf(\"%s\",stu[i].num);

printf(\"name:\");

scanf(\"%s\",stu[i].name);

for (j=0;j

{ printf(\"score %d:\",j+1);

scanf(\"%f\",&stu[i].score[j]);

}

}

average=0;

max=0;

maxi=0;

for (i=0;i

{ sum=0;

for (j=0;j

sum+=stu[i].score[j];

stu[i].avr=sum/3.0;

average+=stu[i].avr;

if (sum>max)

{ max=sum;

maxi=i;

}

}

average/=N;

printf(\"

NO.

name

score1

score2

score3

average\\n\");

for (i=0;i

for (j=0;j

printf(\"%9.2f\",stu[i].score[j]);

printf(\"

%8.2f\\n\",stu[i].avr);

}

printf(\"average=%5.2f\\n\",average);

printf(\"The highest score is : student %s,%s\\n\",stu[maxi].num,stu[maxi].name); printf(\"his scores are:%6.2f,%6.2f,%6.2f,average:%5.2f.\\n\",

stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr); return 0; } (3)建立一个链表,每个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。(要求文件名:8_3.c)

#include #include #define LEN sizeof(struct student) struct student {

char num[6]; char name[8]; char sex[2]; int age; struct student *next; } stu[10];

int main() {

struct student *p,*pt,*head; int i,length,iage,flag=1; int find=0;

//找到待删除元素 find=1,否则find=0 while (flag==1) {

printf(\"input length of list(

scanf(\"%d\",&length);

if (length

flag=0; }

//建立链表

for (i=0;i

p=(struct student *) malloc(LEN);

if (i==0)

head=pt=p;

else

pt->next=p;

pt=p;

printf(\"NO.:\");

scanf(\"%s\",p->num);

printf(\"name:\");

scanf(\"%s\",p->name);

printf(\"sex:\");

scanf(\"%s\",p->sex);

printf(\"age:\");

scanf(\"%d\",&p->age);

}

p->next=NULL;

p=head; printf(\"\\n NO.

name

sex age\\n\");

//显示

while(p!=NULL) {

printf(\"%4s%8s%6s%6d\\n\",p->num,p->name,p->sex,p->age);

p=p->next; }

// 删除

printf(\"input age:\");

//输入待删年龄

scanf(\"%d\",&iage); pt=head; p=pt;

if (pt->age==iage)

//链头是待删元素

{

p=pt->next;

head=pt=p;

find=1;

}

else

//链头不是待删元素

pt=pt->next;

while (pt!=NULL) {

if (pt->age==iage)

{

p->next=pt->next;

find=1;

}

else

// 中间结点不是待删元素

p=pt;

pt=pt->next;

}

if (!find)

printf(\" not found %d.\",iage);

18

p=head;

printf(\"\\n NO.

name

sex age\\n\"); //显示结果

while (p!=NULL) {

printf(\"%4s%8s\",p->num,p->name);

printf(\"%6s%6d\\n\",p->sex,p->age);

p=p->next;

}

return 0; }

三、实验报告要求

将题目3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

实验九

文件操作

一、实验目的

1.掌握文件和文件指针的概念以及文件的定义方法。

2.了解文件打开和关闭的概念和方法。

3.掌握有关文件的函数。

二、实验内容和源程序清单、测试数据、结果。

(1) 对data.dat文件写入100条记录。(要求文件名:8_1.c)

#include int main() { FILE *fp;

int i;

float x;

fp=fopen(\"c:\\data.dat\",\"w\");

for(i=1;i

{

scanf(\"%f\",&x);

fprintf(fp,\"%f\\n\",x);

}

fclose(fp);

return 0; }

(2) 设有一文件cj.dat存放了50个人的成绩(英语、计算机、数学),存放格式为:每人一行,成绩间由逗号分隔。计算三门课平均成绩,统计个人平均成绩大于或等于90分的学生人数。(要求文件名:8_2.c)

#include int main() { FILE *fp;

int num=0;

float x , y , z , s1 , s2 , s3 ;

fp=fopen (\"c:\\cj.dat\",\"r\");

while(!feof(fp))

{

fscanf (fp,\"%f,%f,%f\",&x,&y,&z);

s1=s1+x;

s2=s2+y;

s3=s3+z;

if((x+y+z)/3>=90)

num=num+1;

}

printf(\"分数高于90的人数为:%d\\n\",num);

fclose(fp);

return 0; }

(3) 统计上题cj.dat文件中每个学生的总成绩,并将原有数据和计算出的总分数存放在磁盘文件“stud”中。(要求文件名:8_3.c)

#include \"stdio.h\" int main() {

FILE *fp1,*fp2;

float x,y,z;

fp1=fopen(\"c:\\cj.dat\",\"r\");

fp2=fopen(\"c:\\stud\",\"w\");

} while(!feof(fp1)) {

fscanf (fp1,\"%f,%f,%f\",&x,&y,&z);

printf(\"%f,%f,%f,%f\\n\",x,y,z,x+y+z);

fprintf(fp2,\"%f,%f,%f,%f\\n\",x,y,z,x+y+z); }

fclose(fp1); fclose(fp2); return 0;

三、实验报告要求

将题目

1、2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

21

推荐第5篇:《高级语言程序设计》课程设计任务书2

《高级语言程序设计》课程设计任务书

一、课程设计的目的

高级语言程序设计是本科工科类各专业的重要基础课,课程以影响深远的、传统的、面向过程的优秀编程语言C语言为基础,学习程序设计的基本概念和方法,通过本门课程学习,应使同学掌握高级语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。

课程设计是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。经过该实践环节,培养学生的探索精神和创新能力。通过答辩训练学生的综合表达能力。

二、课程设计教学的基本内容和要求

1、课程设计教学基本内容

高级语言课程设计不仅是对程序设计能力的综合锻炼,更是对团队合作、软件开发与项目管理过程的训练。因此,课程设计根据题目的难度由小组合作完成,每个小组1-4人。整个课程设计分为以下几个阶段进行:选题与开题、系统设计、系统编码实现、系统测试、撰写课程设计报告、系统评价与验收。

(1)选题与开题:题目可来自教师指定的参考题目,也可自由选题,特别是鼓励有创新性的题目或是在已知题目的基础上进行创新。

(2)系统设计:系统设计的任务是对所确定的题目从问题需求、数据结构、程序结构、难点及关键技术等方面进行分析,形成的系统设计方案,并进行详细的分工。

(3)系统编码实现:小组成员根据初步的系统设计方案,对系统编程实现。 (4)系统测试:在各程序模块编码完成并集成后,就可以开始对整个系统进行测试。 (5)撰写课程设计报告:完成文档整理,按照要求完成课程设计报告。 (6)系统评价与验收:通过小组答辩的形式对程序的功能进行评价与验收。

2、课程设计教学的要求

参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用本课程知识的水平和能力。具体如下:

(1)数据组织方面尽量使用到:数组、链表、结构体、文件; (2)程序结构方面做到函数调用,尽量采用指针运算; (3)代码编写规范,形成良好的编程习惯;

(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。 (5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报告内容包括以下几个方面:

 程序的总体设计和算法分析。  程序流程图、函数说明  源程序代码清单  测试数据和测试过程记录  遇到的问题及解决方法分析  课程设计小结

三、课程设计的进度安排

系统整体设计和详细设计

1天 系统编码实现

1天 系统测试

1天 撰写课程设计报告

1天 演示软件和答辩

1天

四、课程设计的考核

评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的课程设计报告,严格检查以下各项任务完成情况:

1、设计文档中要求项目是否齐全。

2、程序中运行时的屏幕提示信息是否准确:

如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。

3、问题和或任务的陈述(描述问题,而且问题是合理原始的、应当包括输入、输出及其预期范围)是否正确。

问题的解决方案采取由顶向下设计的形式,在适当的地方使用伪代码,把整个解决方案划分成若干模块。

5、程序完成后的代码应当加以注解。最少应清楚指出每一个模块。

6、用于检查程序的测试数据,或者对一个控制程序给出测试的例程。测试应考虑探索通过程序的几条路径,在合适的地方选择打印输出来。

7、程序的技术文档:必须包含函数的原型说明和所用变量的全体清单

8、程序顺利运行,结果正确;测试程序是否工作且满足设计指标并评价其效率。

五、指导书、参考资料

《C程序设计》 谭浩强编 清华大学出版社

《C程序设计思想与方法》 尹宝林编著 机械工业出版社

六、其他

推荐第6篇:《高级语言程序设计C》实验教学大纲

《高级语言程序设计C》实验教学大纲

课程编号:1021742 总学时:56学时

适用专业:非计算机理工科各专业 总实验学时:24 实验次数: 12 次 应开实验个数:13 已开实验个数:13 实验开出率:100%

实验一

熟悉C 程序的运行环境

一、学时:2

二、实验类型:演示、验证

三、实验目的和主要内容:

1.了解计算机系统对高级语言的基本操作方法

2.熟悉和了解Turbo C 系统软件的使用和操作

3.能进行简单的C语言程序录入、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.熟悉开机操作,使用单机或计算机上网。

2.进入 Turbo C 系统。

3.熟悉Turbo C 系统各菜单命令的使用和操作

4.模仿简单的源程序,编写自己的小程序,并能运行这些程序。

5.录入、调试、编译和运行C语言程序

实验二

数据类型、表达式及输入输出函数实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1. 熟悉和了解C语言的数据类型

2. 使用C语言的有关算术运算符,以及包含这些运算符的表达式

3.进行简单的C语言输入输出函数的使用,格式控制符的涵意,简单C程序的设计、调

1 试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.编写简单的有输入输出的C程序,并进行该程序的运行、调试、编译。

3.编写一个输入三条边,计算三角形面积的程序。

4.编写程序,计算a+b×c÷d-d3,其中:a,b为整型变量,c,d为实型变量。

5.编写一个有关数据计算程序,验证运算符及表达式的结果。

6.可从布置的作业中,再任选一编程题,进行上机。

实验三

顺序程序结构程序设计

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.进一步掌握C程序的编辑、编译、连接和运行的过程。2.熟悉顺序结构的程序设计方法。 3.熟练使用C的各种表达式。

4.熟练掌握输入、输出函数的使用。

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.输入x,y,编写程序求z=x+|y|的值。实验步骤与要求:

(1)程序中用scanf函数输入x和y的值,请分析以下两个语句 scanf(“%f%f”,x,y); scanf(“%f%f”,&x,&y);

哪一个是正确的,分别运行之,分析程序运行结果。

(2)如果scanf函数改为scanf(“%f,%f”,&x,&y);应该怎样输入数据。 2.编写输入三角形的三边长a、b、c,求三角形面积area的程序。 实验步骤与要求:

(1)输入前要加提示语句。

(2)输出结果前要有必要的文字说明。

2 (3)输入一组数据3,4,5,观察运算结果。

(4)输入另外一组数据3,4,8,观察运算结果,分析这个运算结果是否有效。

实验四

分支控制语句实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言系统分支语句的使用和操作

2.进行C语言分支控制语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行分支控制源程序的设计,并进行该程序的运行、调试、编译。

3.编辑一个分支控制程序,求:任意输入数 (n>2)是否为素数。

4.编辑一个分支控制程序,求:任意输入3个数,求其最大数。

实验五

循环语句实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言循环语句的使用和操作

2.进行C语言循环语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行循环源程序的设计,并进行该程序的运行、调试、编译。

3.编辑一个循环程序,求:1到100的和及平方和。

4.编辑一个循环程序,求:任意输入10个数,求其最大数。

5.可从布置的作业中,再任选一编程题,进行上机。

3

实验六

数组实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言数组程序的设计方法

2.学会使用C语言数组进行程序设计

3.进行C语言数组语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行数组的定义和使用方法,即:一维和二维数组的应用。

3.进行数组语句源程序的设计,并进行该程序的运行、调试、编译。

4.编辑数组应用程序:

(1)任意输入20个数在一维数组a中,求20个数的平均值。

(2)定义2个二维数组A[2][3]、B[2][3],分别对这2个数组输入数据,求A+B和A-B的值。

(3)用字符数组存储任意输入10字符,求其最大字符。

(4)编辑一个有5个学生,考 3门功课。求出每一个学生的总分及平均分,统计平均成绩低于 60 分的学生人数。

5.可从布置的作业中,再任选一编程题,进行上机。

实验七

有关数组的程序设计

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.掌握有关数组和字符串的程序设计方法。

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1 已知一组数据如下:6,3,42,23,35,71,98,67,56,38。编写程序,把它们按

4 从小到大的次序排列起来。

2 求2行3列矩阵A 的转置矩阵。

实验八

函数实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言函数程序的设计方法。

2.学会使用C语言函数的定义及调用,并进行程序编制。

3.进行C语言函数语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行函数的定义及调用。

3.进行函数语句源程序的设计,并进行该程序的运行、调试、编译。

(1)任意输入一个数n,用两个子函数实现1+2+3„n以及n!,在主函数中输出该结果。

(2)在主函数中定义二维数组A[3][4]、B[4],用子函数对数组A[3][4]每一行求和,其值放在数组B[4]中,在主函数中输出该值。

(3)用字符数组存储任意输入的10字符,在子函数中把该字符数组的小写字母转换成大写字母。

4.可从布置的作业中,再任选一编程题,进行上机。

实验九

常用指针实验

(一)

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言指针一般设计方法

2.学会使用C语言指针进行程序设计

3.进行简单C语言指针语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行C语言指针语句的定义和使用方法。

3.进行C语言指针语句源程序的设计,并进行该程序的运行、调试、编译。

4.编辑一个找出字串 str1中 str2出现的位置,用指针编程实现。

5.可从布置的作业中,再任选一编程题,进行上机。

实验十

复杂指针实验

(二)

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.进一步熟悉和了解C语言指针语句设计方法

2.进行C语言中的指针与函数、指针数组、多级指针语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行C语言指针与函数、指针数组、多级指针语句的定义和使用方法。

3.进行C语言该指针语句源程序的设计,并进行该程序的运行、调试、编译。

4.编辑一个在主程序里输入十个不等长的字串,调用自编的函数把它们按升序排列,用指针编程实现。

5.可从布置的作业中,再任选一题编程题,进行上机。

实验十一

结构类型实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言结构、联合数据的定义及设计方法

2.学会使用C语言结构、联合数据类型进行程序设计

3.进行C语言结构、联合语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行C语言结构、联合数据类型的定义和使用。

3.进行C语言结构、联合数据类型源程序的设计,并进行该程序的运行、调试、编译。

4.编辑一个能处理学生综合信息的程序(包括:学号、姓名、班级、语文成绩、数学成绩、英语成绩等)。

实验十二

有关结构的程序设计

一、学时:2(课后完成或选作)

二、实验类型:验证、设计

三、实验目的和主要内容:

1.掌握结构体类型和结构体变量的定义。 2.掌握结构类型变量的定义和使用;

3. 掌握链表的概念,初步学会对链表进行操作;

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.有五个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入五个学生的数据,要求打印出每个学生的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。 实验步骤与要求:

用一个函数输入五个学生的数据;用一个函数求总平均分;用函数找出最高分学生数据,总平均分和最高分的学生的数据都在主函数中输出。

2.三个人围成一圈,从第一个人开始顺序报号1,2,3。凡报到“3”者退出圈子,找出最后流在圈子中的人原来的序号。

3.建立一个链表,每个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。

实验十三

文件实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言文件系统的组成及设计方法。

2.学会使用C语言文件系统进行程序设计

3.进行C语言文件语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C (2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行C语言文件系统类型的定义和使用。

3.进行C语言文件系统类型源程序的设计,并进行该程序的运行、调试、编译。

4.编辑程序。

(1)用数组存储10个数据,并存储在“date.dat”文件中

(2)对存储在“date.dat”文件中的数据读入到一个数组中,求出总和及最大值,并把它存储在“dsum.dat”文件中

推荐第7篇:高级语言程序设计A第2次作业

1.以下说法中错误的是。

(B) a/=b+c;这个式子和a=a/b+c;等价

2.

16、若有如下说明

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则数值为6的元素的表达式是

(B) *(p+5)

3.下面哪条语句是错误的

(B) int a=b=c=1;

4.已知实型变量a存贮的是一个0~1之间的实数,将a以两位小数百分比形式输出(如:a=0.347592,则输出为34.75%)正确的打印语句是

(A) printf(“%.2f%%”,a*100);

5.定义C函数时,不给出返回值类型,则默认的返回值类型是

(C) int

6.C语言存贮字符串时,用特殊字符表示字符串结束

(D) ’\\0’

7.有以下程序段

int k=0;

while(k=1) k++;

则while 循环执行的次数是。

(A) 无限次

8.对于for循环语句:for(x=0,y=0;(y=3)&&(x

(C) 执行4次

9.有定义struct { int a[5]; } b; 则正确表达成员数组a的最后一个元素地址的是____。

(C) b.a+4

10.以只写方式打开一个二进制文件,应选择的文件操作方式是____。

(D) \"wb\"

推荐第8篇:高级语言程序设计(C语言)实验教学大纲

信息技术系《高级语言程序设计》实验教学大纲

一、教材名称:>

二、课程总学时:108学时 [理论: 72 学时;实验与上机:36学时]

三、适用专业和开课学期:软件技术专业,第2学期。

四、实验的目的与任务:

《C程序设计》是一门实践性很强的课程。通过实验使学生加深对课堂讲授的概念、语法、算法、编程技术的理解;熟悉C程序设计的开发环境;掌握程序设计和调试的基本技能。并通过实践激发学生进一步学习的积极性,培养学生的学习兴趣和创新思维。通过8个实验,使学生经过一定数量的上机训练,了解和掌握C程序设计的环境、程序的数据表示、程序的执行流程控制、程序的整体结构等C程序设计的基本概念和应用技术。

五、主要仪器设备及台(套)数

安装Windowsxp,TC2.0等软件的计算机,每生一台。

六、主要实验教材(指导书)及参考用书:

谭浩强主编,《C程序设计题解与上机指导》,清华大学出版社。

七、成绩考核方式及评分标准

实验占课程总课时1/3,每项实验按该实验说明要求规定的评分标准积分,学期末合计的实验成绩占课程总成绩的18%。

八、实验开出率:100%

九、实验项目与要求

实验一:C程序的运行环境和运行一个C程序的方法(2学时)

实验性质:验证性实验

一、实验目的

1.了解所用的计算机系统的基本操作方法,学会独立使用该系统。2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。

二、实验内容

1.调用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的?

2.输入并运行教材第一章中例1.2。

3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。

实验二 数据类型、运算符和表达式(2学时)

实验性质:验证性实验

一、实验目的

1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。

2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

3.进一步熟悉C程序的编辑、编译、连接和运行的过程。

二、实验内容

1.输入并运行教材第三章例3.6.即: #include void main() {char c1,c2; c1=97; c2=98;

printf(“%c %c\\n”,c1,c2); printf(“%d %d\\n”,c1,c2); } 在此基础上 ①将第二行改为: int c1,c2; 再使之运行,分析结果。 ②再将第三行、第四行改为: c1=300;c2=400; 再使之运行,分析其运行结果。

2.输入并运行教材第三章习题3.6,在上机前先用人工分析程序写出应得结果,上机后将二者对照。

3.输入并运行习题3.10。即: #include void main( ) {int i,j,m,n; i=8;j=10; m=++i;n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 分别作以下改动并运行: ①将第4行改为: m=i++;n=++j; ②程序改为: #include void main( ) {int i,j; i=8;j=10; printf(“%d,%d”,i++,j++); } ③在②的基础上,将printf语句改为: printf(“%d,%d”,++i,++j); ④再将printf语句改为:

printf(“%d,%d,%d,%d”,i,j, i++,j++); ⑤程序改为: main( ) {int i,j,m=0,n=0;; i=8;j=10; m+=i++;n-=--j; printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n); }

实验三 最简单的C程序设计(2学时)

实验性质:验证性实验

一、实验目的

1.掌握C语言中使用最多的一种语句—赋值语句的使用。2.掌握数据的输入输出的方法,能正确使用各种格式转换符。

二、实验内容

1.输入并运行以下程序:

#include

void main( ) {int a,b; float d,e; char c1,c2; double f,g; long m,n;

unsigned int p,q; a=61;b=62; c1=’a’;c2=’b’; d=3.56;e=-6.87;

f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000;

printf(“a=%d,b=%d\\n c1=%c,c2=%c\\nd=%6.2f,e=%6.2f\\n”,a,b,c1,c2,d,e); printf(“f=%15.6f,g=%15.12f\\nm=%ld,n=%ld\\np=%u,q=%u\\n”,f,g,m,m,p,q); } 在此基础上,做以下改动: ① 将程序第8-13行改为: a=61;b=62; c1=a;c2=b;

f=3157.890121;g=0.123456789; d=f;e=g;

p=a=m=50000;q=b=n=-60000; 运行程序,分析结果。

② 在①的基础上将printf语句改为:

printf(“a=%d,b=%d\\n c1=%c,c2=%c\\nd=%15.6f,e=%15.12f\\n”,a,b,c1,c2,d,e);

printf(“f=%f,g=%f\\n m=%ld,n=%ld\\n p=%d,q=%d\\n”,f,g,m,n,p,q); 运行程序。

2.编写程序,用getchar函数读入两个字符c

1、c2,然后分别用putchar函数和printf函数输出这两个字符。

上机运行程序,比较用printf和putchar函数输出字符的特点。

实验四 选择结构程序设计(2学时)

实验性质:设计性实验

一、实验目的

1.了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真”);2.学会正确使用逻辑运算符和逻辑表达式; 3.熟练掌握if语句和switch语句。

二、实验内容

先编程序,解决以下问题,然后上机调试运行程序。 1.有一个函数 xy2x13x11x11x10 x10用scanf函数输入x的值(分别为x

1、1~

10、≥10三种情况),求y值。2.给出一个百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

实验五 循环控制(4学时)

实验性质:设计性实验

一、实验目的

1.熟悉用while语句,do-while语句和for语句实现循环的方法。2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。

二、实验内容

编程序并上机调试运行。

1.输入两个正整数,求其中最大公约数和最小公倍数。2.用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。

实验六 数组(4学时)

实验性质:设计性实验

一、实验目的

1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;2.掌握字符数组和字符串函数的使用。 3.掌握与数组有关的算法(特别是排序算法)。

二、实验内容

编程序并上机调试运行。

1.用选择法对10个整数排序。10个整数用scanf函数输入。 2.将两个字符串连接起来,不要用strcat函数。 实验七 函数(4学时)

实验性质:设计性实验

一、实验目的

1.掌握定义函数的方法;

2.掌握函数实参与形参的对应关系,以及“值传递”的方式;3.掌握函数的嵌套调用和递归调用的方法;

4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。

二、实验内容

编程序并上机调试运行。

1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。2.求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一函数根据求出的最大公约数求最小公倍数。

(1)用全局变量的方法。将两个整数的最大公约数、最小公倍数都设为全局变量。

(2)不用全局变量,两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。

实验八 预处理命令(2学时)

实验性质:设计性实验

一、实验目的

1.掌握宏定义的方法;2.掌握文件包含处理方法; 3.掌握条件编译的方法。

二、实验内容

编程序并上机调试运行。

1.定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。

说明:在程序主函数使用宏时只能用两个实参,如SWAP(a,b),不能用三个参数。 2.用条件编译方法实现以下功能:

输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下字母(如‘a’变成‘b’,„,‘z’变成‘a’。其它字符不变)。用#define命令来控制是否要译成密码。例如: #define CHANGE 1 则输出密码。若 #define CHANGE 0 则不译成密码,按原码输出。 用条件编译方法来处理。

实验九 指针(4学时)

实验性质:设计性实验

一、实验目的

1.掌握指针的概念,会定义和使用指针变量;2.学会使用数组的指针和指向数组的指针变量; 3.学会使用字符串的指针和指向字符串的指针变量; 4.学会使用指向函数的指针变量;

二、实验内容

编程序并上机调试运行程序(都要求用指针处理)。 1.输入三个整数,按由小到大的顺序输出。

2.将一个3*3的矩阵转置,用一函数实现之。在主函数中用scanf函数输入以下矩阵元素:

1 7133915511 19将数组名作为函数实参。函数调用后在主函数中输出已转置的矩阵。 3.用一个函数实现两个字符串的比较,即自己写一个strcmp函数: strcmp(s1,s2) 如果s1=s2,则函数返回值为0;如果s1≠s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1

两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数输出。

实验十 结构体和共用体(4学时)

实验性质:设计性实验

一、实验目的

1.掌握结构体类型变量的定义和使用;2.掌握结构体类型数组的概念和应用; 3.掌握共用体的概念与使用。

二、实验内容

编程序,然后上机调试运行。

1.有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。

要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。

2.输入和运行以下程序:

#include

union data {int i[2]; float a; long b; char c[4]; };

void main( ) {union data u;

scanf(“%d,%d”,&u.i[0],&u.i[1]); printf(“i[0]=%d,i[1]=%d\\na=%f\\nb=%ld\\nc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c\\n”,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]); } 输入两个整数10000、20000给u.i[0]和u.i[1]。 分析运行结果。

然后将scanf语句改为: scanf(“%ld”,&u.b);

输入60000给b。分析运行结果。

实验十一 位运算(1学时)

实验性质:设计性实验

一、实验目的

1.掌握位运算的概念和方法,学会使用位运算符;2.学会通过位运算实现对某些位的操作。

二、实验内容

编写程序,上机调试并运行。

1.设计一个函数,使给出一个数的原码,能得到该数的补码,用八进制形式输入和输出。

实验十二 文件(1学时)

实验性质:设计性实验

一、实验目的

1.掌握文件以及缓冲文件系统、文件指针的概念;2.学会使用文件打开、关闭、读、写等文件操作函数。 3.学会用缓冲文件系统对文件进行简单的操作。

二、实验内容

1.从键盘输入一个字符,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符以“!”结束。 实验十三 学生成绩管理(4学时)

实验性质:综合性设计性实验

一、实验目的

1.综合运用C程序设计知识,解决实际问题。

二、实验内容

1.有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。

2.将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu-sort”中。

3.将上题已排序的学生成绩文件进行插入处理。插入一个学生的三门课成绩。程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。

学生的原有数据为:

91101 Wang 89,98,67.5 91103 Li 60,80,90 91106 Fun 75.5,91.5,99 91110 Ling 100,50,62.5 91113 Yuan 58,68,71 要插入的学生数据为:

91108 Xin 90,95,60

制 订:程世辉 教研室:软件教研室 执笔人:程世辉 审定人:

二00七年八月

推荐第9篇:安徽师范大学高级语言程序设计本科教学大纲

《高级汇编语言程序设计》教学大纲

学时:68学时

学分:4 理论学时:51学时

实验或讨论学时:17学时(+17) 适用专业:计算机软件专业 大纲执笔人:陈少军

大纲审核人:

一、说明

汇编语言程序设计是计算机专业必修的一门主干课程。对于训练学生掌握程序设计方法与技术、从事自主版权的计算机芯片和系统软件的开发、在信息安全、过程控制等多方面的应用,均具有十分重要的作用。

汇编语言是各种 CPU都要提供给程序员的指令集,是硬件集成电路系统与软件信息系统的接口。所以在计算机应用科学中处于关键地位。本课程以Pentium系列处理器为背景,全面介绍32位PC汇编语言程序设计的基本原理和Pentium系列微机汇编的最新知识与技术。

本课程的教学要求以程序实践代替指令的罗列式教学,不能在教学中仅仅依次介绍各种指令,而要以实际的例子带动指令的介绍,以应用引导指令和原理的教学。

二、正文

(一)本课程的理论教学内容

本课程由3各层次组成

第一部分:基本原理方法篇(30)

介绍了Pentium工作方式和扩展技术,16/32位寄存器,存储寻址机制,指令寻址与指令系统,汇编语法与伪指令,顺序分支和循环程序设计,子程序嵌套与违归及COM文件的编制

1.1 新一代微机系统简介 1.2 数据表示与类型 1.3 汇编语言基本概念

2.1 32位可编程寄存器体系 2.2 实方式存储器寻址机制 2.3 堆栈存储技术

2.4 程序汇编连接与调试方法 3.1 指令的基本寻址方式 3.2 实方式32位指令寻址 3.3 实方式指令系统

3.4 字符设备I/O功能调用 4.1 汇编语句的表达式 4.2 汇编伪指令语句 4.3 宏功能语句

4.4 模块连接及记录结构 5.1 程序设计的基本步骤 5.2 顺序程序设计 5.3 分支程序设计 5.4 循环程序设计 5.5 算术运算与代码转换程序设计 6.1 子程序的概念

6.2 子程序的一般设计方法 6.3 嵌套与递归子程序 6.4 COM文件的编制

第二部分:程序设计应用篇(15学时)

介绍了表处理的排序检索,加密、解密,磁盘文件管理,时钟与驻留,BIOS中断调用技术,机器人图形动画,输入/输出接口程序,异步通信,汇编语言与高级语言的混合编程

7.1 线性表的检索程序 7.2 排序程序

7.3 串操作指令与加密解密程序 8.1 磁盘文件管理程序 8.2 时钟程序 8.3 驻留程序 9.1 中断

9.2 BIOS中断调用 9.3 显示控制程序

10.1 I/O指令寻址与数据传递 10.2 I/O接口程序设计

10.3 发声与异步通信程序设计

10.4 汇编语言与高级语言的混合编程 第三部分:知识扩展技术篇(6学时)

介绍了分段、分页管理与多任务保护机制,实方式与保护方式切换示例,虚拟86方式的使用程序,多媒体汇编MMX和SSE指令及其编程设计与优化处理等

11.1 保护程序环境 11.2 特殊指令集

11.3 实方式与保护方式切换示例 11.4 虚拟86程序 12.1 MMX指令 12.2 MMX程序设计 12.3 SSE指令介绍

(二)课程实验教学

根据理论课程的进度,安排一定的实验内容,参考选题如下 1) 汇编语言程序的连接与调试

2学时 2) 简单程序设计 2学时 3) 分支程序设计 2学时 4) 循环程序设计 2学时 5) 输入输出程序设计 2学时 6) 宏和伪指令程序设计 2学时 7) 子程序与模块化设计 2学时 8) 实用程序设计(线性表) 2学时 9) 实用程序设计(排序) 2学时 10) 实用程序设计(串) 2学时 11) 12) 13) 14) 15) 16) DOS高级调用 2学时 时钟程序设计 2学时

BIOS中断调用程序设计 2学时 输入输出程序设计 2学时

与高级语言混合编程设计 2学时

要求在课程后期安排一次大作业。时间为4+(10)学时

(三)本课程考核方式和方法

课程的成绩由三部分组成 期终闭卷考试,占60% 。

平时(考勤+上机实习+作业)成绩占20%,

大作业成绩占20%,

三、教学参考书

1、曹加恒,苏光奎等,《新一代汇编语言程序设计》,高等教育出版社,2003年2月第一版

2、沈美明 温冬蝉主编。《IBM-PC汇编语言程序设计》。 北京: 清华大学出版社,2002

推荐第10篇:高级语言程序设计总结陈凯源

《高级语言程序设计》课程总结

C语言程序设计是掌握计算机软、硬件系统工作原理必需的基本知识,也是计算机相关专业的重要入门知识。C语言既有高级语言的特性,又具有汇编语言的特点,可以作为系统程序设计语言,也可以作为应用程序设计语言。通过学习用这种典型的程序设计语言——C语言,建立起程序设计的概念,初步掌握程序设计方法,掌握程序设计的基本方法和技巧,养成良好的程序设计风格,从而具备应用程序设计解决相关专业领域内实际问题的基本能力。

本学期通过对《高级语言程序设计》这门课程的学习,我做出如下总结:

我们共学习了15章内容,知识点大致分为程序设计的概念、C语言的基本概念、C的基本语句、构造类型和指针类型、函数、算法和数据结构、C的预处理、文件、常用库函数的使用等。通过对每一个章节知识点的学习,我们加深了对C语言的理解。

学习过程中,我们配有《高级语言程序设计实验手册》,这也让我们得到了锻炼。通过学习,我们能够熟悉高级语言,了解它们的特点,初步掌握利用高级语言编程解决各种实际应用问题的基本方法,为今后正确运用它而打下基础。增强了实际动手能力和对以前所学的C语言的综合运用能力。

老师采用双语授课、多媒体教学,具有创新性。这也为今后的学习奠定了基础,适应了社会的发展和需要。老师上课经常举例子,让抽象概念具体化,这也使我们对这门课程更加投入兴趣。还有就是概念性的东西,老师会教我们记忆的方法,我觉得这点比较好。

对于我在学习中遇到的问题,我虚心向老师求教,老师也耐心地解答。针对我的实验中的错误,老师认真地给我指出,我也因此从中获得经验,不断进步。

学习C语言,既可以活跃我们的思维逻辑,又能使我们解决问题的算法变得更加清晰。通过学习,我明白解决问题的方法不止一种,并且每种方法之间会存在一些关联,例如for循环和while()循环之间就可以互相转换。我们可以根据需要选取较简捷的语句完成程序。再如,当我们需要调用多个函数时,我们应该应用函数的模块性组织程序,这样可以使程序清晰而不繁杂。

以上是我这个学期对《高级语言程序设计》这门课程的总结,如有不足,希望老师多多指教!

姓名:陈凯源

学号:20101120187

专业:软件工程 年级:本科一年级

第11篇:C语言高级程序设计讲座1(转)

C语言高级程序设计讲座1 C语言程序设计

2009-07-27 08:44

阅读153

评论0

字号: 大大

中中

小小

第一讲

C语言图形方式下的编程 前言

一年前我刚刚接触网站制作,正值我学C语言,便做了一个鹏程C语言教学网站,虽说取了这么一个大名,但是其实当时我也不会什么。

一年转眼就过去了,对于C语言我倒没什么深入的研究,但是我的网站却是一而再的改版,算来现在已经第六版了。

时代的飞速发展提醒我们,停滞不前就是退步!所以我们还要前进,目前我在学习ASP.net,下一个目标就是把鹏程C语言教学网站用ASP.net建成真正的学习乐园,走进千万C语言爱好者的心中!

本次讲座参考了一些教材以及网上的一些资料,如有侵权,请立即给我发信通知我:pch1982cn@yahoo.com.cn 因种类繁多,在此不能一一列出,请见谅!

如果您对本教程感兴趣,如要转载,也请通知我!

现在我们就开始第一讲:C图形方式下的编程 学习目标

·了解PC显示系统的结构

·C语言图形初始化的一般方法

·C语言常用的图形处理函数 显示系统简介

PC机显示系统一般是由显示器和显示卡组成。显示器(Monitor)是独立于主机的一种外部设备。显示卡(Adapter)是插在Pc主机上的一块电路板。PC机对显示屏幕的所有操作都是通过显示卡来实现的。

显示系统的主要特性

1.显示分辨率

显示分辨率是指屏幕上所能显示的像素点数,通常用列数和行数的乘积宋表示。为了获得良好的显示效果,要求显示器的分辨率与对应分辨率的显示卡相匹配。通常,高分辨率的显示效果比低分辨率的效果好。但是,显示分辨率的提高对显示器与显示卡的硬、软件要求更高。特别是分辨率的提高在很大程度上受到显示器的显示尺寸和扫描频率的限制,也受到显示卡的显存的限制。

根据应用情况的不同,在不超过显示器最高分辨率的条件下,可以通过对显示卡的设置而使用不同的分辨率。

2.显示速度

显示速度是指在屏幕上显示图形和字符的速度。显示速度与显示分辨率和显示器的扫描频率密切相关。显示分辨率越高,整个屏幕上的像素点数就越多,显示速度就越慢。在这种情况下,为了提高显示速度,就需要提高扫描频率。

如果显示器只有一种扫描频率,则它只能与一种显示卡相匹配使用。随着显示技术的发展,目前一般的显示器可以适应具有多种分辨率与显示速度的显示卡。

颜色与灰度是衡量显示系统的重要参数。单色显示器只有亮和暗两种灰度;彩色显示器的颜色和灰度要受显示内存的限制,分辨率越高,颜色越丰富,所需要的显示内存就越多。

4.图形显示能力

图形显示能力是显示系统对屏幕上的每一个像素点都可以设置成不同的值的能力。通常,图形显示对硬件的要求比字符显示要求高得多,同时,图形显示对显示缓冲区的要求也比字符显示时高得多。 显示卡的种类

常用的显示卡有以下几种 1.MDA卡

MDA卡(Monochrome Display Adapter——单色字符显示器适配卡)与单色字符显示器配接,它只支持字符显示功能,无图形功能。

2.HGC卡

HGC卡(Hercules GraphicsCard——单色显示图形卡)不仅支持字符显示,而且支持单色图形功能。在图形方式下,其图形显示分辨率最高可达720~348点阵。通过软件的设置,还可以支持640~400单色图形显示以及模拟CGA卡图形方式。

3.CGA卡

CGA卡(ColorGraphicsAdapter--彩色图形显示卡)支持字符/图形两种方式。

在字符方式下,它支持80列、25行及奶列、25行的方式,颜色可选16种。但是字符的质量比较差,只有8X8点阵。在图形方式下,它支持最大为640~200分辨率,但只有黑、白两种颜色。此外,它还支持320~200的分辨率,每个像素点可以有四种颜色。CGA卡有16K的显示缓冲区,用于显示字符及属性或图形方式下的图形数据。

4.EGA卡

EGA卡(Enhanced GraphicsAdapter——增强型图形显示卡)的字符显示能力和图形显示能力都比CGA卡有了较大的提高,显示分辨率达到640~350,最高分辨率图形方式的颜色达到了16种。EGA卡的显示模式也比CGA卡丰富,并且兼容CGA卡及MDA卡的显示模式。

5.VGA卡

VGA卡(Video GraphicsArray一一视频图形阵列)是一种功能十分强大、颜色丰富的显示卡。VGA的标准分辨率可达到640~480,并且具有16种颜色。一些兼容的VGA卡(如TVGA卡、EVGA卡)的分辨率可达640~480(256种颜色)、800~600(16种颜色)或1024~768(16种颜色)。VGA卡兼容MDA卡、CGA卡、EGA卡的所有显示模式。

随着显示技术的发展,目前的显示卡的分辨率一般都可以达到1024X768,显示32位真彩(232种颜色)。

视频BIOS 视频BIOS(BasicI/OSystem基本输入/输出系统)是与显示卡配套的一个重要组成部分。用户通过调用它可以完成一些与显示有关的控制功能。对于要用到显示系统的一般程序设计都可以通过调用视频BIOs或视频函数库来完成。但要想获得更高性能的显示程序,还需要对显示卡的寄存器和显示内存直接进行编程。 显示模式

显示模式按功能可以分为字符模式和图形模式两大类。

字符模式也称为字母数字模式,即A/N模式(A1phaNumbermode)。在这种模式下,显示缓冲区中存放的是显示字符的代码和属性,而显示屏幕被分为若干个字符显示行和列。图形模式(Graphics mode)也称为APA模式(A1l Points Addreablemode)。在这种模式下,显示缓冲区中存放的是显示器屏幕上的每个像素点的颜色或灰度值,而显示屏幕被划分为像素行和像素列。

由于显示卡的种类很多,其中有些显示模式在不同类型的显示卡及不同厂家的显示卡之间是通用的,这类显示模式称为标准模式。还有些模式是专用的,称为非标准模式。通常,显示模式号小于14H的是标准模式;其他则为非标准模式。 图形模式的初始化

不同的显示器适配器有不同的图形分辨率。即使是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器的种类将显示器设置成为某种图形模式。在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。

设置屏幕为图形模式,可用下列图形初始化函数:

void far initgraph (int far* gdriver,int far *gmode,char *path);

其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。图形驱动程序由TurboC出版商提供,文件扩展名为.BGI。根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、VGA图形适配器的图形驱动程序为EGAVGA.BGI。

有时编程者并不知道所用的图形显示器适配器种类,而且我们为了将编写的程序可以用于不同图形驱动器,增强程序的通用性,我们通常不指定图形显示器适配器种类,而使用Turbo C提供了一个自动检测显示器硬件的函数,其调用格式为:

void far detectgraph ( int *gdriver, *gmode);

其中gdriver和gmode意义同上。

例1:自动进行硬件测试后进行图形初始化

#include "graphics.h"

main( )

{

int gdriver, gmode;

detectgraph(&gdriver, &gmode);

/*自动测试硬件*/

printf("driver is %d, mode is %d\n", gdriver,gmode);

/*输出结果*/

getch();

initgraph(&gdriver, &gmode, "");

/* 根据测试结果初始化图形*/

circle(320,240,50);

circle(320,240,80);

circle(320,240,110);

getch();

closegraph();

} 上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置。其中,closegraph()为退出图形状态的函数,其调用格式为:voidfarclosegraph(void);调用该函数后可退出图形状态而进入文本方式,并释放用于保存图形驱动程序和字体的系统内存。同时TurboC提供了一种更简单的初始化图形的方法,即用gdriver=DETECT语句后再跟initgraph()函数就行了。比如,上例可改为例2的样子。 例2:

#include "graphics.h"

main()

{

int gdriver=DETECT, gmode;

initgraph(&gdriver, &gmode, "");

circle(320,240,50);

circle(320,240,80);

circle(320,240,110);

getch();

closegraph();

} 屏幕颜色的设置

对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo c中分别使用以下两个函数:

void far setbkcolor (int color); 设置背景色

void far setcolor (int color); 设置作图色

其中color为图形方式下颜色的规定数值,符号常数及数值如下所示。 符号常数

数值

含义

字符或背景 BLACK

0

两者均可 BLUE

两者均可 GREEN

绿

两者均可 CYAN

两者均可 RED

两者均可

MAGENTA

洋红

两者均可 BROWN

两者均可

LIGHTGRAY

淡灰

两者均可 DARKGRAY

深灰

只用于字符 LIGHTBLUE

淡兰

只用于字符 LIGHTGREEN

淡绿

只用于字符 LIGHTCYAN

淡青

只用于字符 LIGHTRED

淡红

只用于字符

LIGHTMAGENTA

淡洋红

只用于字符 YELLOW

只用于字符 WHITE

只用于字符 BLINK

128

闪烁

只用于字符

清除图形屏幕内容使用清屏函数,其调用格式如下 void far cleardevice(void); 有关颜色设置、清屏函数的使用请看例3。 例3:

#include "stdio.h"

#include "graphics.h"

main()

{

int gdriver, gmode, i,j;

gdriver=DETECT;

initgraph(&gdriver, &gmode, ""); /*图形初始化*/

setbkcolor(0);

/*设置图形背景*/

cleardevice();

for(i=0; i

{

setcolor(i);

/*设置不同作图色*/

circle(319, 239, 20+i*15);

/*画半径不同的圆*/

delay(3000);

/*延迟3000毫秒*/

}

for(i=0; i

{

setbkcolor(i);

/*设置不同背景色*/

cleardevice();

for(j=0; j

{

setcolor(j);

/*设置不同作图色*/

circle(319, 239, 20+j*15);

/*画半径不同的圆*/

delay(3000);

}

}

getch();

closegraph();

}

另外,TURBO C也提供了几个获得现行颜色设置情况的函数。

int far getbkcolor(void); 返回现行背景颜色值。

int far getcolor(void); 返回现行作图颜色值。

int far getmaxcolor(void); 返回最高可用的颜色值。 基本图形函数

基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。

画点

1.画点函数 void far putpixel(int x, int y, int color);该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从上表中获得而对x,y是指图形象元的坐标。在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。关于点的另外一个函数是: int fargetpixel(int x, int y); 它获得当前点(x, y)的颜色值。

2.有关坐标位置的函数

int far getmaxx(void); 返回x轴的最大值。

int far getmaxy(void); 返回y轴的最大值。

int far getx(void); 返回游标在x轴的位置。

void far gety(void); 返回游标有y轴的位置。

void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。

void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。

画线与线型设定

1.画线函数

TURBO C提供了一系列画线函数,下面分别叙述:

void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。

void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。

void far linerel(int dx, int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。

void far circle(int x, int y, int radius); 以(x, y)为圆心,radius为半径,画一个圆。

voidfar arc(int x, int y, int stangle, int endangle,int radius);以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。在TURBO C中规定x轴正向为0度,逆时针方向旋转一周, 依次为90,180, 270和360度(其它有关函数也按此规定不再重述)。

voidellipse(int x, int y, int stangle, int endangle,int xradius,intyradius);以(x, y)为中心,xradius,yradius为x轴和y轴半径,从角stangle开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时, 画出一个完整的椭圆。

void far rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。

voidfar drawpoly(int numpoints, int far *polypoints);画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。

2.设定线型函数

在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。

void far setlinestyle(intlinestyle,unsigned upattern,int thickne); 该函数用来设置线的有关信息,其中linestyle是线形状的规定, 见下表:

有关线的形状(linestyle) ━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义

─────────────────────────

SOLID_LINE 0 实线 DOTTED_LINE 1 点线 CENTER_LINE 2 中心线 DASHED_LINE 3 点画线

USERBIT_LINE 4 用户定义线

━━━━━━━━━━━━━━━━━━━━━━━━━ 有关线宽(thickne) thickne是线的宽度,见下表。

━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义

─────────────────────────

NORM_WIDTH 1 一点宽 THIC_WIDTH 3 三点宽

━━━━━━━━━━━━━━━━━━━━━━━━━

对于upattern,只有linestyle选USERBIT_LINE 时才有意义 (选其它线型,uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。 void far getlinesettings(struct linesettingstypefar *lineinfo);该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:

struct linesettingstype { int linestyle; unsigned upattern; int thickne; }

例如下面两句程序可以读出当前线的特性 struct linesettingstype *info;getlinesettings(info);void far setwritemode(int mode); 该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息覆盖了(这是TURBO C的默认方式)。如果mode=1,则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有画线。

封闭图形的填充

填充就是用规定的颜色和图模填满一个封闭图形。

1.先画轮廓再填充

TURBO C提供了一些先画出基本图形轮廓, 再按规定图模和颜色填充整个封闭图形的函数。在没有改变填充方式时,TURBO C 以默认方式填充。 下面介绍这些函数。 void far bar(int x1, int y1, int x2, int y2); 确定一个以(x1, y1)为左上角,(x2, y2)为右下角的矩形窗口,再按规定图模和颜色填充。说明:此函数不画出边框,所以填充色为边框。 void far bar3d(int x1, int y1, int x2, int y2,int depthint topflag);当topflag为非0时, 画出一个三维的长方体。当topflag为0时,三维图形不封顶,实际上很少这样使用。说明: bar3d()函数中,长方体第三维的方向不随任何参数而变,即始终为45度的方向。

void far pieslice(int x,int y,int stangle,int endangle,int radius); 画一个以(x, y)为圆心,radius为半径,stangle为起始角度,endangle 为终止角度的扇形,再按规定方式填充。当stangle=0,endangle=360 时变成一个实心圆,并在圆内从圆点沿X轴正向画一条半径。

void far sector(int x, int y,int stanle,intendangle,int xradius, int yradius);画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径,stangle 为起始角,endangle为终止角的椭圆扇形,再按规定方式填充。

2.设定填充方式

TURBO C有四个与填充方式有关的函数。下面分别介绍:

void far setfillstyle(int pattern, int color); color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的符号常数如下表所示。关于填充式样pattern的规定: ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义

─────────────────────────── EMPTY_FILL 0 以背景颜色填充 SOLID_FILL 1 以实填充 LINE_FILL 2 以直线填充

LTSLASH_FILL 3 以斜线填充(阴影线) SLASH_FILL 4 以粗斜线填充(粗阴影线) BKSLASH_FILL 5 以粗反斜线填充(粗阴影线) LTBKSLASH_FILL 6 以反斜线填充(阴影线) HATCH_FILL 7 以直方网格填充 XHATCH_FILL 8 以斜网格填充

INTTERLEAVE_FILL 9 以间隔点填充 WIDE_DOT_FILL 10 以稀疏点填充 CLOSE_DOS_FILL 11 以密集点填充 USER_FILL 12 以用户定义式样填充

━━━━━━━━━━━━━━━━━━━━━━━━━━━

除USER_FILL(用户定义填充式样)以外,其它填充式样均可由setfillstyle() 函数设置。当选用USER_FILL时,该函数对填充图模和颜色不作任何改变。 之所以定义USER_FILL主要因为在获得有关填充信息时用到此项。

void far setfillpattern(char * upattern,int color); 设置用户定义的填充图模的颜色以供对封闭图形填充。其中upattern是一个指向8个字节的指针。这8个字节定义了8x8点阵的图形。每个字节的8位二进制数表示水平8点,8个字节表示8行,然后以此为模型向个封闭区域填充。

void far getfillpattern(char * upattern); 该函数将用户定义的填充图模存入upattern指针指向的内存区域。

void far getfillsetings(struct fillsettingstypefar * fillinfo); 获得现行图模的颜色并将存入结构指针变量fillinfo中。其中fillsettingstype结构定义如下: struct fillsettingstype { int pattern; /* 现行填充模式 * / int color; /* 现行填充模式 * / };

3.任意封闭图形的填充

截止目前为止,我们只能对一些特定形状的封闭图形进行填充,但还不能对任意封闭图形进行填充。为此,TURBO C 提供了一个可对任意封闭图形填充的函数,其调用格式如下: void far floodfill(int x, int y, int border); 其中:x, y为封闭图形内的任意一点。border为边界的颜色,也就是封闭图形轮廓的颜色。调用了该函数后,将用规定的颜色和图模填满整个封闭图形。 注意:

1.如果x或y取在边界上,则不进行填充。

2.如果不是封闭图形则填充会从没有封闭的地方溢出去,填满 其它地方。

3.如果x或y在图形外面,则填充封闭图形外的屏幕区域。

4.由border指定的颜色值必须与图形轮廓的颜色值相同, 但填充色可选任意颜色。下例是有关floodfill()函数的用法,该程序填充了bar3d()所画长方体中其它两个未填充的面。

有关图形窗口和图形屏幕操作函数

1、图形窗口操作

象文本方式下可以设定屏幕窗口一样,图形方式下也可以在屏幕上某一区域设定窗口,只是设定的为图形窗口而已,其后的有关图形操作都将以这个窗口的左上角 (0, 0)作为坐标原点,而且可为通过设置使窗口之外的区域为不可接触。这样,所有的图形操作就被限定在窗口内进行。

void far setviewport(int xl,int yl,int x2, int y2,int clipflag); 设定一个以(xl,yl)象元点为左上角,(x2,y2)象元为右下角的图形窗口,其中x1,y1,x2,y2是相对于整个屏幕的坐标。若 clipflag为非0,则设定的图形以外部分不可接触,若clipflag为0,则图形窗口以外可以接触。

void far clearviewport(void); 清除现行图形窗口的内容。

void far getviewsettings(struct viewporttypefar * viewport); 获得关于现行窗口的信息,并将其存于viewporttype定义的结构变量viewport中,其中viewporttype的结构说明如下: struct viewporttype { int left, top, right, bottom; int cliplag; }; 注明:

①窗口颜色的设置与前面讲过的屏幕颜色设置相同,但屏幕背景色和窗口背景色只能是一种颜色,如果窗口背景色改变,整个屏幕的背景色也将改变这与文本窗口不同。

②可以在同一个屏幕上设置多个窗口,但只能有一个现行窗口工作,要对其它窗口操作,通过将定义那个窗口的setviewport()函数再用一次即可。

③前面讲过图形屏幕操作的函数均适合于对窗口的操作。

2、屏幕操作

除了清屏函数以外,关于屏幕操作还有以下函数:

void far setactivepage(int pagenum); void far setvisualpage(int pagenum);这两个函数只用于EGA,VGA 以及HERCULES图形适配器。 setctivepage()函数是为图形输出选择激活页。所谓激活页是指后续图形的输出被写到函数选定的 pagenum页面,该页面并不一定可见。setvisualpage()函数才使pagenum所指定的页面变成可见页。页面从0开始(Turbo C默认页)。如果先用setactivepage() 函数在不同页面上画出一幅幅图像,再用setvisualpage() 函数交替显示,就可以实现一些动画的效果。

void far getimage(int xl,int yl, int x2,int y2,void far *mapbuf); void far putimge(int x,int,y,void * mapbuf, int op); unsined far imagesize(int xl,int yl,int x2,int y2); 这三个函数用于将屏幕上的图像复制到内存,然后再将内存中的图像送回到屏幕上。首先通过函数imagesize() 测试要保存左上角为(xl,yl),右上角为(x2,y2)的图形屏幕区域内的全部内容需多少个字节,然后再给mapbuf分配一个所测数字节内存空间的指针。通过调用getimage()函数就可将该区域内的图像保存在内存中,需要时可用putimage()函数将该图像输出到左上角为点(x, y)的位置上,其中getimage()函数中的参数op规定如何释放内存中图像。 关于这个参数的定义参见下表: putimage()函数中的op值

━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含 义

────────────────────────── COPY_PUT 0 复制

XOR_PUT 1 与屏幕图像异或的复制 OR_PUT 2 与屏幕图像或后复制 AND_PUT 3 与屏幕图像与后复制 NOT_PUT 4 复制反像的图形 ━━━━━━━━━━━━━━━━━━━━━━━━━━

对于imagesize()函数,只能返回字节数小于64K字节的图像区域,否则将会出错,出错时返回-1。这在图像动画处理、菜单设计技巧中非常有用。 图形模式下的文本输出

在图形模式下,只能用标准输出函数,如printf(),puts(),putchar()函数输出文本到屏幕。除此之外,其它输出函数(如窗口输出函数)不能使用,即是可以输出的标准函数,也只以前景色为白色,按80列,25行的文本方式输出。

Turbo C2.0也提供了一些专门用于在图形显示模式下的文本输出函数。下面将分别进行介绍。

1.文本输出函数 void far outtext(char far *textstring); 该函数输出字符串指针textstring所指的文本在现行位置。

void far outtextxy(int x, int y, char far *textstring);该函数输出字符串指针textstring所指的文本在规定的(x, y)位置。其中x和y为象元坐标。 说明:

这两个函数都是输出字符串,但经常会遇到输出数值或其它类型的数据,此时就必须使用格式化输出函数sprintf()。sprintf()函数的调用格式为: int sprintf(char *str, char *format, variable-list); 它与printf()函数不同之处是将按格式化规定的内容写入str 指向的字符串中,返回值等于写入的字符个数。

例如:

'C110F1sprintf(s, "your TOEFL score is %d", mark);这里s应是字符串指针或数组,mark为整型变量。

2.有关文本字体、字型和输出方式的设置

有关图形方式下的文本输出函数,可以通过setcolor()函数设置输出文本的颜色。另外,也可以改变文本字体大小以及选择是水平方向输出还是垂直方向输出。

void far settexjustify(int horiz, int vert); 该函数用于定位输出字符串。

对使用outtextxy(int x, int y, char far *str textstring)函数所输出的字符串,其中哪个点对应于定位坐标(x,y)在TurboC2.0中是有规定的。如果把一个字符串看成一个长方形的图形,在水平方向显示时,字符串长方形按垂直方向可分为顶部,中部和底部三个位置,水平方向可分为左,中,右三个位置,两者结合就有9个位置。

settextjustify()函数的第一个参数horiz 指出水平方向三个位置中的一个,第二个参数vert指出垂直方向三个位置中的一个,二者就确定了其中一个位置。当规定了这个位置后,用outtextxy () 函数输出字符串时,字符串长方形的这个规定位置就对准函数中的(x,y)位置。而对用outtext()函数输出字符串时,这个规定的位置就位于现行游标的位置。有关参数 horiz和vert的取值参见下表: 参数horiz和vert的取值

━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 用于

────────────────────────

LEFT_TEXT 0 水平RIGHT_TEXT 2 水平BOTTOM_TEXT 0 垂直 TOP_TEXT 2 垂直

CENTER_TEXT 1 水平或垂直

━━━━━━━━━━━━━━━━━━━━━━━━ void far settextstyle(int font, int direction,int charsize); 该函数用来设置输出字符的字形(由font确定)、输出方向(由direction确定)和字符大小(由charsize确定)等特性。

Turbo C2.0对函数中各个参数的规定见下列各表所示: font的取值

━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义

────────────────────────

DEFAULT_FONT 0 8*8点阵字(缺省值) TRIPLEX_FONT 1 三倍笔划字体 SMALL_FONT 2 小号笔划字体

SANSSERIF_FONT 3 无衬线笔划字体 GOTHIC_FONT 4 黑体笔划字

━━━━━━━━━━━━━━━━━━━━━━━━ direction的取值

━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义

────────────────────────

HORIZ_DIR 0 从左到右 VERT_DIR 1 从底到顶

━━━━━━━━━━━━━━━━━━━━━━━━ charsize的取值

━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数或数值 含义

────────────────────────

1 8*8点阵 2 16*16点阵 3 24*24点阵 4 32*32点阵 5 40*40点阵 6 48*48点阵 7 56*56点阵 8 64*64点阵 9 72*72点阵 10 80*80点阵

USER_CHAR_SIZE=0 用户定义的字符大小

━━━━━━━━━━━━━━━━━━━━━━━━

3.用户对文本字符大小的设置

前面介绍的settextstyle()函数,可以设定图形方式下输出文本字符这字体和大小但对于笔划型字体(除8*8点阵字以个的字体),只能在水平和垂直方向以相同的放大倍数放大。为此Turbo C2.0又提供了另外一个setusercharsize() 函数,对笔划字体可以分别设置水平和垂直方向的放大倍数。该函数的调用格式为:

void far setusercharsize(int mulx, int divx,int muly, int divy); 该函数用来设置笔划型字和放大系数,它只有在settextstyle()函数中的charsize为0(或USER_CHAR_SIZE)时才起作用,并且字体为函数settextstyle()规定的字体。调用函数setusercharsize()后,每个显示在屏幕上的字符都以其缺省大小乘以 mulx/divx为输出字符宽,乘以muly/divy为输出字符高。 小结

这一讲我们首先介绍了PC机的图形显示结构和原理,然后介绍了图形初始化,然后讲了一些图形处理函数。

这一讲我们共举了三个例子,对于图形处理函数由于时间原因不能举太多的例子了,希望大家自己实际操作一下,会有很大收获的

第12篇:高级程序设计教学大纲

高级程序设计

Advanced Programming Languages

课程编码:05305100 学分:2.5 课程类别:专业方向课(必修) 计划学时:48 其中讲课:32 实验或实践:0 上机:16 适用专业:电子商务

推荐教材:王路群《JAVA高级程序设计》,中国水利水电出版社,2006年。

参考书目:陈静,杨青,郑世珏,《高级语言程序设计与应用教程》,清华大学出版社,2006年。

王浩,《高级语言程序设计》,武汉理工大学出版社,2006年。

课程的教学目的与任务

通过本课程的讲授,使学生在已有JAVA基础上,进一步深入的学习,为今后从事信息系统开发与研究奠定程序基础。该课程围绕着JAVA开发的整个过程,系统地讲解JAVA基础知识基础上,对更难的部分进行学习,如AWT编程、Swing编程、JAVA中流传输的语法、技巧和应用,并对数据库访问进行讲述,对网络编程等高层次的程序进行了深入研究,涉及很多J2EE方面的知识。其目的是扩大学生的程序学习及写作技巧,以提高未来应对不同类型信息系统开发的能力。

课程的基本要求

1、JAVA语言的基本特点及基本语法。

2、异常处理基本原则。

3、AWT和Swing、Applet应用。

4、多线程机制、流传输、数据库访问

5、网络编程。

6、JAVA中API的介绍,JAVABEAN的简单使用。

各章节授课内容、教学方法及学时分配建议(含课内实验)

第一章 JAVA基础知识回顾 建议学时:2 [教学目的与要求]

回顾JAVA的基本写法,完成程序要求。 [教学重点与难点] 如何写一个完整的、标准的程序。

[授 课 方 法] 以课堂讲授为主,课堂讨论和课下自我调试为辅。 [授 课 内 容] 第一节 JAVA语言基础

一、JAVA语言特点、开发平台、两种程序类型

二、标识符、关键字、常量与变量、数组 第二节 运算符、表达式

一、运算符、表达式

二、流程控制语句

三、随机数产生、数的处理(例1:水仙花数;例2:随机数产生并排序) 第三节 类、对象、接口

第二章 异常 建议学时:4 [教学目的与要求] 异常处理方法。

[教学重点与难点] try…catch,throws与finally使用。 [授 课 方 法]

以课堂讲授为主,课堂讨论和课下自学为辅。 [授 课 内 容] 第一节 什么是异常

一、异常处理基础

二、JAVA异常处理机理 第二节 异常常用方法

一、JAVA内置异常

二、聊天室的异常处理

第三章 用户界面GUI 建议学时:6 [教学目的与要求] AWT组件、常用组件使用方法、JAVA2D、JAVA3D [教学重点与难点] Graphics类、布局设计、Component组件。 [授 课 方 法]

以课堂讲授为主,课堂讨论和课下自学为辅。 [授 课 内 容] 第一节 AWT组件工具集 第二节 GUI组件上的图形操作

一、Graphics类

二、组件重绘

三、绘制基本图形

四、建立字体

第三节 常用的AWT组件

一、文本框和文本区

二、画板和画布

三、Component类使用方法 第四节 Dialog类

第四章 Swing 建议学时:8 [教学目的与要求] Swing使用、框架、图标标签。

[教学重点与难点] 各种组件使用、JButton、JCheckBox、JRadioButton等等。 [授 课 方 法]

以课堂讲授为主,课堂讨论和课下自学为辅。 [授 课 内 容] 第一节 从AWT到Swing

一、Swing框架

二、Jframe、JDialog、JApplet 第二节 图标与标签 第三节 各种组件

一、Jbutton

二、JcheckBox

三、Jtextfield、Jmenu、JtoolBar

四、Jtree 第五章 I/O输入输出流 建议学时:8 [教学目的与要求] I/O输入输出流。

[教学重点与难点] 流的概念、字节流、字符流、预定义流、File类。 [授 课 方 法]

以课堂讲授为主,课堂讨论和课下自学为辅。 [授 课 内 容] 第一节 流的概念

第二节 字节流、字符流、预定义流

一、字节流

二、字符流

三、预定义流 第三节 File类

一、InputStream和outStream

二、FileInputStream和FileOutStream

三、Reader和Writer

四、RangdomAcceFile 第六章 JAVA数据库连接 [教学目的与要求] JDBC原理、配置、程序。 [教学重点与难点] 配置、数据存储、读取。

[授 课 方 法]

以课堂讲授为主,课堂讨论和课下自学为辅。 [授 课 内 容] 第一节 JDBC原理

一、JDBC概述

二、JDBC体系结构

三、JDBC连接步骤 第二节 JDBC编程

一、配置数据库

二、查询

三、更新、添加、删除

第七章 JAVA网络编程 [教学目的与要求] 网络编程基础知识、JAVA提供的网络类与接口。 [教学重点与难点] JAVA套接字、网络类、接口。

[授 课 方 法]

以课堂讲授为主,课堂讨论和课下自学为辅。 [授 课 内 容]

建议学时:8

建议学时:6 第一节 网络编程基础

一、URL

二、Internet编址与端口号

三、客户/服务器模式

四、代理服务器

五、Tcp/IP和Udp协议 第二节 JAVA和网络

一、网络类与接口

二、InetAddre类

三、URL类

四、URLConnection类 第三节 JAVA编写TCP网络程序

一、套接字概述

二、客户套接字

三、服务器套接字

第八章 JAVA API 建议学时:6 [教学目的与要求] 掌握API常用的数学的方法,JAVA.Lang包中的系统类。 [教学重点与难点] JAVA.Util中的实用工具集。

[授 课 方 法]

以课堂讲授为主,课堂讨论和课下自学为辅。 [授 课 内 容] 第一节 理解API概念 第二节 数据类型类

一、java.Lang包

二、Number及其子类 第三节 字符串处理

一、java.lang.String

二、java.lang.StringBuffer 第四节 java.lang 包 第五节 java.util包

撰稿人:马金柱 审核人:徐伟

第13篇:高级程序设计教学大纲

华中科技大学文华学院 《高级程序设计》课程教学大纲

一、课程名称:高级程序设计 Senior Program Design

二、课程编码:

三、学时与学分:32/2

四、先修课程:C语言程序设计

五、课程性质:必修

六、课程教学目标及要求 高级程序设计是计算机相关类本科生的一门专业必修课,是在程序设计基础( C 语言)后的一门重要的后续课程,它是为学生掌握当前最基本的程序设计方法而设置的。高级程序设计对降低软件的复杂性,改善其重用性和可维护性,提高软件的生产率,有着十分重要的意义。通过本课程的学习,使学生理解面向对象程序设计思想,掌握面向对象程序设计的基本概念和技术。由于程序设计思想、概念和技术离开了具体的实现语言会显得太抽象,本课程选择 C++ 作为面向对象程序设计的实现语言。

通过本课程的学习,学生对面向对象的程序设计思想、概念和技术有较好的理解。通过面向对象思维的训练,使学生逐渐掌握现代编程能力,为今后的软件开发和各种信息处理打下良好的基础。

七、适用学科专业

计算机相关专业

八、基本教学内容与学时安排

第一章 面向对象程序设计基本概念(2学时)

【内容】

面向对象程序的主要结构特点、对象与类、对象的状态、对象的交互、数据的抽象和分装、继承与封装、多态与重载的基本概念。

【基本要求】

要求能用 C++ 语言编写结构和类、并实现类的抽象与封装,分清类与对象的

不同,并初步掌握多态与重载。

【重点与难点】

重点:类、封装、继承、多态的概念;

难点:多态与重载。

第二章 C++ 面向对象技术特点和概述(4学时)

【内容】

I/O 流、变量说明与作用域、函数声明与参数传递、结构、联合与类的比较、const 修饰符、inline 关键字、函数重载、作用域运算符、类型转换、new 和 delete、指针和应用。

【基本要求】

要求能用 C++ 语言编写含有 I/O 流输入输出的程序 , 理解 inline 关键字的作用,能用 new 和 delete 实现对象的内存管理,掌握和理解 this 指针。

【重点与难点】

重点:内存管理;

难点:this指针。

第三章 类和对象的基本概念(2学时)

【内容】

结构与类、类的声明、私有成员和公有成员、成员函数和数据成员的定义、对象的定义及引用、构造函数与析构函数、带缺省参数的构造函数、构造函数重载、拷贝构造函数、对象数组和对象指针、向函数传递对象、静态成员、友员成员、类对象成员。

【基本要求】

要求能用 C++ 语言编写程序,进一步掌握私有成员和公有成员的概念,定义成员函数和数据成员,掌握对象的定义和引用,自定义和重载构造和析构函数,灵活运用静态成员、友员成员、类对象成员和正确使用对象数组和对象指针。

【重点与难点】

重点:构造函数、析构函数;

难点:友元、对象数组和指针。

第四章 派生类与继承(2学时)

【内容】

继承、派生类声明、公有派生和私有派生、保护成员、派生类的构造与析构、多重继承、多重继承的构造与析构、多重继承的二义性和虚基类。

【基本要求】

要求能用 C++ 语言编写结构和类、并实现类的抽象与封装,分清类与对象的不同,并初步掌握多态与重载。

【重点与难点】

重点:多重继承;

难点:虚基类。

第五章 多态性(2学时)

【内容】

编译时的多态性和运行时的多态性、函数重载、运算符重载 ( 成员和友员、单目和双目 )、++ 和 — 的重载 (++ 在前和在后 )、+ 和 - 的重载、= 和 []() 重载、类型转换、虚函数、纯虚函数和抽象类。

【基本要求】

要求能用 C++ 语言编写程序,着重掌握运算符的重载,正确使用成员函数重载和友员函数重载,掌握类型转换、虚函数和抽象类。

【重点与难点】

重点:运算符的重载,虚函数;

难点:抽象类。

第六章 面向对象程序设计基本概念(2学时)

【内容】

面向对象程序的主要结构特点、对象与类、对象的状态、对象的交互、数据的抽象和分装、继承与封装、多态与重载的基本概念。

【基本要求】

要求能用 C++ 语言编写程序并掌握函数模板和类模板的使用。 【重点与难点】

重点:类、封装、继承、多态的概念;

难点:多态与重载。

第七章 模板(2学时)

【内容】

函数模板与模板函数、函数模板的异常处理、类模板与模板类。

【基本要求】

要求能用 C++ 语言编写程序并掌握函数模板和类模板的使用。 【重点与难点】

重点:函数模板;

难点:类模板。

第八章C++ 的输入输出流(2学时)

【内容】

C++ 流、流类库、输入输出格式控制、文件输入输出、输入输出流运算符 >的重载。

【基本要求】

要求理解 C++ 的流技术,能使用 Cin、Cout 实现 C++ 语言的输入输出 ( 包括文件 ) ,掌握 >运算符的重载。

【重点与难点】

重点:输入输出方式;

难点:运算符重载

第九章 可视化的面向对象编程技术(2学时)

【内容】

可视化编程基本概念、属性方法和事件、可视类和非可视类、容器类和非容器类、控件 / 类和对象、控件和类的封装、自定义控件、控件的继承和重载、软件重用概念。

【基本要求】

要求初步掌握可视化编程的基本概念,理解可视化技术是面向对象编程技术发展的结果,进一步掌握面向对象技术的特点和概念。

【重点与难点】

重点:可视化编程概念;

难点:控件的掌握。

九、使用教材与参考资料

教 材:《C++面向对象程序设计》 谭浩强,清华大学出版社,2006 1版

十、课程考试

考核方式:笔试(闭卷)

评分方式:平时成绩占30%,考试占70%

修订人:吕植成 审定人:

年 月 日

第14篇:华工网络教育,《高级语言程序设计C++》作业

一、分析程序,写输出结果

1. #include #include void main() {int m, k, i ; for( m=1; m

i=3,m%i等于0为假,无输出 结果为: 7 9 2. #include void fun(); void main() {int i; for(i=1;i

输出4

6 8

10

3. #include int fun(int n) { if(n==0) return 1; return 2*fun(n-1); } void main() { int a=5; cout

答:fun是递归函数如果是0就返回1,如果不是0就返回2*f(n-1),展开就是求2的n次方

结果为: 32

4. #include void main() { char *cp=\"word\"; for (int i=0 ; i

二、.根据程序功能填空。

1.程序把10个数存储到一维数组a中,并求该数组中最大值。

#include void main() { int max; int a[10]={76,55,95,87,85,83,65,90,77,85}; int *p= a ;

max=*p; for( ; p

if( *p>max ) max= *p ;

cout

#include void main() { int n, k=1, s=0, m; for(n=1; n

} while( m>0 ) { k*=m%10; s+=m%10; m=m/10 ; } if(k>s) cout void main() {double s; int i, n; cout>n; s = 0; for (i=1; i

struct node{int data; node * next;}; create(

node *head

) {node *p, *q; p=new node; cin>>p->data; q=p; while(

p->data

) {if(head==NULL) head=p; else q->next=p

; q=p;

p=new node

; cin>>p->data; } q->next=NULL; delete p; } 5.以下程序求方程的全部整数解: 3x + 2y1, t;

while (a (cout,””)); cout(cout,””)); }

7.数组a包含50个整数,把a中所有的后项除以前项之商取整后存入数组b(即b[i]=a[i]/a[i-1],并且b[50]=a[20]/a[1]),最后按每行5个元素的格式输出数组b。

答:

#include void main() { int a[50],b[50]; int i,j=0;//j用来控制换行 for(i=1;i>a[i]; } for(i=1;i

#include void main() { int i; long text(int i);//判断i的i^2是不是回文数的函数 for(i=4;i0) { sum1=sum1*10+k%10 k=k/10; } if(sum1==sum) return i*i; else return 0; } 9.编写程序,打印如下杨辉三角。

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 答:

#include #include using namespace std;

void main() { const int m = 5; int a[m][m];

for(int i = 0; i

a[i][0] = 1;

a[i][i] = 1; } for(int j = 2; j

for(int k = 1; k

a[j][k] = a[j-1][k-1] + a[j-1][k]; } for(int i = 0; i

cout

for(int j = 0; j

cout

cout

count(a,k,ave,num); 其中a是数组名,k是数组元素个数,ave返回的平均值,num返回大于平均值的元素个数。

答:

void count(a,k,&ave,&num) { int count = 0,sum = 0; int i; for(i = 0; i ave) count++; } num = count; }

第15篇:C语言程序设计

1.Problem A: Hello world! Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。

Input 无

Output 请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming!

Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!

HINT 请注意换行符

Append Code #include int main() {

printf("Hello Da_min,\n");

printf("Hello Er_min,\n");

printf("Hello Xiao_ming!\n"); } 2. Problem B: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。

Input 输入一个浮点型数据,有效数字不会超过十进制的6位。

Output 输出为两行。

第一行为圆的面积,第二行为圆的周长,格式见sample。

Sample Input 3

Sample Output Area: 28.260000 Perimeter: 18.840000

HINT 了解浮点类型的输入、输出和算术运算符

Append Code 法一

#include int main() { double r,p,s; scanf("%lf",&r); p=2*3.14*r; s=3.14*r*r; printf("Area: %lf\n",s); printf("Perimeter: %lf\n",p); } 法二

#include #define pi 3.14 int main() {

double r;

scanf("%d",&r);

printf("Area: %lf\n",pi*r*r);

printf("Perimeter: %lf\n",2*pi*r);

}

3.

Problem C:平均值 Description 求3个数的平均值。

Input 输入只有一行,为3个较小的整数。

Output 输出为这3个整数的平均值,保留3位小数。

Sample Input 1 2 3 Sample Output 2.000

HINT 注意除法运算对整型数据和浮点型数据是不一样的。

Append Code #include int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%.3lf",(a+b+c)/3.0); }

4.Problem D: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。

Input 输入为3个字符。

Output 输出为3行。

每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。

Sample Input 0 A

Sample Output 048 060 030 032 040 020 065 101 041

HINT 了解字符值的存储和整型的关系。

Append Code #include int main() { char a,b,c; scanf("%c%c%c",&a,&b,&c); printf("%.3d %.3o %.3x\n",a,a,a); printf("%.3d %.3o %.3x\n",b,b,b); printf("%.3d %.3o %.3x\n",c,c,c); }

5.

Problem A: 最简单的程序 Description 输出一行“Hello world!”。

Input 无

Output Hello world!

Sample Input Sample Output Hello world!

HINT Append Code #include int main() {

printf("Hello world!"); }

6. Problem B: 算术基本运算 Description 计算两整数x和y(0

Input 输入只有一行,格式见sample。

Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample

Sample Input x = 11, y = 3

Sample Output x + y : 14 xy : %d\n",x-y);

printf("x * y : %d\n",x*y);

printf("x / y quotient: %d, remainder: %d\n",x/y,x%y);

printf("x ^ 2 : %d\n",x*x);

printf("y ^ 3 : %d\n",y*y*y); } 7.Problem C: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。

编写一个程序:对输入的一个整数a,输出a++、a--、++a、--a的值。

Input 一个整数a,a是很小的整数。

Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。

5行输出纵向a要对齐,“:”对齐,“:”前后各一个空格,后面的数值不用对齐。每行行尾都有回车。

Sample Input 0

Sample Output a : 0 --a : -1 a-- : 0 a++ : 0 ++a : 1

HINT Append Code #include int main() { int a,x; scanf("%d\n",&x); a=x; printf(" a

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

: %d\n",--a); a=x; printf(" a-- : %d\n",a--); a=x; printf(" a++ : %d\n",a++); a=x; printf("++a

: %d\n",++a); }

8. Problem F: 绝对值 Description 求整型数据和浮点型数据的绝对值。

Input 输入两个数,第一个是整数,第二个是浮点数。

Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。

Sample Input -1 1

Sample Output 1 1

HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人!

Append Code #include //#include int main(){

int n;

float m;

scanf("%d%f",&n,&m);

//n=abs(n);

//m=fabs(m);

if(n

{

n=-n;

}

if(m

{

m=-m;

}

printf("%d\n",n);

printf("%g",m);

return 0; }

9. Problem A: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。

Input 输入只有一行,为一个100以内的正整数。

Output 输出为一行。

若输入为偶数则输出“even”,奇数输出“odd”。 Sample Input 30

Sample Output even

HINT 用整数运算可以解决,练习“?:”表达式。

Append Code #include int main(){

int n;

scanf("%d",&n);

if(n>=0&&n

if(n%2==0)printf("even\n");

else printf("odd\n");

}

return 0; }

10.Problem B: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。

Input 输入只有一行,三个整数m、n和x,且0

Sample Input 95 300 4

Sample Output 334.40

HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。

Append Code #include int main() {

int m,x,n,a;

float b;

scanf("%d%d%d",&m,&n,&x);

0

x

m

a=m*x;

if(a>n)

b=0.88*a;

else

b=a;

printf("%.2f\n",b);

}

11. Problem C: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。

Input 输入只有一行,为一个10000以内的正整数。

Output 输出为一行。

若输入为闰年偶数则输出“Yes”,否则输出“No”。

Sample Input 2010

Sample Output No

HINT 了解逻辑运算符和关系运算符。

Append Code #include int main() {

int x;

scanf("%d",&x);

if(x>0&&x

{

if(x%4==0&&x%100!=0)

printf("Yes\n");

else if(x%400==0)

printf("Yes\n");

else

printf("No\n");

}

else

printf("error"); }

12.Problem D: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。

Input 一个整数x,100

Output x是水仙花数,则输出“YES”,否则为“NO”。

Sample Input 153

Sample Output YES

HINT Append Code #include int main() {

int a,b,c,x;

scanf("%d",&x);

a=x/100;

b=x/10%10;

c=x%10;

if(x==a*a*a+b*b*b+c*c*c)

printf("Yes");

else

printf("No"); }

13.Problem E: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。

Input 输入只有一行,为三个整数。

Output 按从小到大输出这三个数。

Sample Input 15 10 20

Sample Output 10 15 20

HINT 用if语句判断各种情况可以解决这个问题。

Append Code #include int main() {

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

if(a>=b)

{

if(b>=c)

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

else if(c>=a)

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

else

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

}

else

{

if(a>=c)

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

else if(b>=c)

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

else

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

} }

14.Problem F: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中;

如果这个数字是奇数,则将大于该数的最小偶数累加到和中。

Input 三个正整数,均在100以内。

Output 一个和。

Sample Input 2 3 5

Sample Output 12

HINT 如果不会使用分支语句, 可使用条件运算符判断到底将哪个数累积到和中。

Append Code #include int main() {

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

if(a%2!=0)a++;

if(b%2!=0)b++;

if(c%2!=0)c++;

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

}

15.Problem G: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。

Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。

Sample Input 70 80 70 240 80 80 82

Sample Output congratulations

HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。

Append Code #include int main() {

int a,b,c,d,e,f,g,h;

scanf("%d %d %d %d\n%d %d %d",&a,&b,&c,&d,&e,&f,&g);

h=e+f+g;

if(e>=a&&f>=b&&g>=c&&h>=d)

printf("congratulations");

else

printf("sorry"); } 16.Problem I: A+B Problem (II) : Input/Output

Practice Description 计算a+b,0

Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的和,顺序与输入对应。

Sample Input 2 1 2 10 20

Sample Output 3 30

HINT N给出了测试样例数,用for循环处理方便。

Append Code #include int main() {

int n,a,b,i; Scanf(“%d”,&n); For(i=0;i

17.

Problem H: A+B Problem Description 计算a+b,0

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的值,顺序与输入对应。

Sample Input 1 2 10 20

Sample Output 3 30

HINT OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。 Append Code #include int main(){

int a,b;

while(scanf("%d%d",&a,&b)!=EOF){

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

}

return 0; }

18.Problem A: 判断是否是元音字母 Description 输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U

Input 输入一个英文字母

Output 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。

Sample Input A

Sample Output yes

HINT Append Code #include void main() {

char ch;

scanf("%c",&ch);

if(ch>='A'&&ch

ch=ch+32;

if(ch=='a')

printf("yes");

else if(ch=='e')

printf("yes");

else if(ch=='i')

printf("yes");

else if(ch=='o')

printf("yes");

else if(ch=='u')

printf("yes");

else

printf("no");

}

19.Problem B: 按顺序输出三个数 Description 对于输入的3个整数,按照从小到大的顺序输出。

Input 输入3个int类型内的整数,两两之间用一个空格隔开。

Output 按照从小到大的顺序输出上述三个数,两两之间用一个空格隔开。

Sample Input 2 1 3 Sample Output 1 2 3

HINT Append Code #include void main() {

int a,b,c,temp;

scanf("%d%d%d",&a,&b,&c);

if(a

{

temp=a;

a=b;

b=temp;

}

if(a

{

temp=a;

a=c;

c=temp;

}

if(b

{

temp=b;

b=c;

c=temp;

}

printf("%d %d %d\n",c,b,a); }

20.Problem E: Description 判断输入整数的奇偶性。

判断奇偶数 Input 输入为一个整数。

Output 输出只有一行,代表判断结果。如果输入的整数n是一个偶数,输出: n is an even number.否则输出:

n is an odd number.见样例。

Sample Input 12

Sample Output 12 is an even number.

HINT Append Code #include int main() {

int a;

scanf("%d",&a);

if(a%2==0)

printf("%d is an even number.",a);

else

printf("%d is an odd number.",a); }

21.Problem A: 判断两个整数的大小关系 Description 输入2个整数a和b,如果a>b,则输出1,否则输出0。

Input 两个整数a和b,均不超过int类型的表示范围。

Output 表示a>b的结果:如果a>b,则输出1,否则输出0。

Sample Input 3 4

Sample Output 0

HINT

Append Code #include int main() { int a,b; scanf("%d %d",&a,&b); if (a>b)

printf("1");

else

printf("0"); return 0; } 22.Problem D: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pa 0~59:Failing

不在0~100之间的输入是非法数据,输出“Error”。

Input 输入多行,每行一个整数。

Output 输入所对应的成绩等级。

Sample Input -1 81 92 35 68 72 100

Sample Output Error Good Excellent Failing Pa Average Excellent HINT 用switch语句解决这个问题比较方便。

Append Code #include int main() {

int score;

while(scanf("%d",&score)!=EOF)

{

if (score100)

printf("Error\n");

else

{

switch (score/10)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5:printf("Failing\n");break;

case 6:printf("Pa\n");break;

case 7:printf("Average\n");break;

case 8:printf("Good\n");break;

case 9:

case 10:printf("Excellent\n");break;

}

}

}

return 0; }

23.Problem E: 输出是m的倍数或n的倍数、但不是

m和n的公倍数的数 Description 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1

Input 输入三个整数,依次为k、m、n。

Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。

Sample Input 15 2 3

Sample Output 2 3 4 8 9 10 14 15

HINT 难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。

Append Code #include int main() { int k,m,n,a,i=1; scanf("%d %d %d",&k,&m,&n); if(m

a=m; else

a=n; printf("%d",a); for(i=a+1;i

}

if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0))

printf(" %d",i); } return 0;

24.Problem B: 两整数相加减 Description 计算a+b和a-b。

Input 输入为一对整数a和b。a,b用空格分开。

Output 输出a+b和a-b的计算结果,各占一行。

Sample Input 1 2

Sample Output 3 -1

HINT Append Code #include int main() { int a,b; scanf("%d %d",&a,&b);

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

printf("%d\n",a-b); } 25 Problem C: 它满足条件吗? Description 需要判断给定的一个整数是否同时满足如下三个条件: 1.它是一个完全平方数。 2.它是一个偶数。 3.它是一个正数。

注:若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。例如:

0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一个int范围内的整数。

Output 如果输入的数字满足条件,则输出yes,否则输出no。

Sample Input 100

Sample Output yes

HINT 注意逻辑表达式判断三个条件的顺序。 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。

库函数sqrt()可以用于求一个数的平方根。

Append Code #include #include int main() { int a; scanf("%d",&a);

if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0)

printf("yes");

else

printf("no"); }

26.Problem F: 多路分支 Description 编写一个完整的程序,运行时向用户提问"你考试考了多少分?(0-100)"接受输入后判断其等级并显示出来等级: 优:90

Input 输入任意一个整数分数值,显示等级; 再输入任意一个整数分数值,显示等级; ....直到测试数据较充分,可输入-1止。

Output 对任意输入的分数值,输出对应的等级,直到输入的数为-1时才退出运行.Sample Input 102 100 90 80 70 60 50 0 -80 -1

Sample Output grad must between 0 and 100 优

grad must between 0 and 100 grad must between 0 and 100

HINT Append Code #include int main() {

int x;

while(scanf("%d",&x)!=EOF)

{

if (x100)

printf("grad must between 0 and 100\n");

else if(x>=90)

printf("优\n");

else if(x>=80)

printf("良\n");

else if(x>=60)

printf("中\n");

else if(x>=0)

printf("差\n");

}

return 0; }

27 Problem D: 有多少人? Description 学校举行运动会,如果全体学生按照3人一队列队,则多了1个人;如果按照4人一队列队,则多了2个人;如果按照5人一队排队,则多了3个人。请问这个学校有多少学生?

Input 一个int类型的正整数N,是学生人数的上界,即:该校学生数不超过N。

Output 所有可能的学生数,每个数占一行。

Sample Input 200

Sample Output 58 118 178

HINT Append Code #include #include int main() {

int n,i;

scanf("%d",&n);

for(i==1;i

printf("%d\n",i); }

return 0; }

28 Problem C: 正负数各有几个? Description 输入若干个整数,求其中正数、负数的个数。

Input 输入分为2行:第一行是一个数字N>0,表示下面有N个整数。第2行是N个整数,都是int类型的。

Output 输出所输入的N个整数的正数个数和负数个数,并用空格分开2个输出。 Sample Input 10

1 2 3 4 5 -1 -2 -3 -4 -5

Sample Output 5 5

HINT 貌似还有一种叫做0的数。

Append Code #include int main() {

int n,a,i,num1=0,num2=0;

scanf("%d",&n); for(i=0;i

{

scanf("%d",&a);

if(a>0)

num1++ ;

else if(a

num2++;

}

printf("%d %d\n",num1,num2);

return 0; }

29 Problem A: A+B Problem (III) : Input/Output

Practice Description 计算a+b,0

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。

Output 每行输出一个a+b的值,顺序与输入对应。

Sample Input 1 2 10 20 0 0

Sample Output 3 30

HINT 练习break的使用。

Append Code #include int main() { int a,b; while(scanf("%d %d",&a,&b)!=EOF)

{

if(a!=0||b!=0)

}

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

else

break;

return 0; } 30 Problem B: A+B Problem (IV) : Input/Output

Practice Description 计算a+b,0

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。

Sample Input 1 2 10 20 15 35

Sample Output 3 30 50

HINT 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头或者结尾。

Append Code #include int main() { int a,b,n=0; while (scanf("%d %d",&a,&b)!=EOF) {

n++;

if(n==1)

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

else

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

}

return 0; }

31 Problem C: n个数的最大值和最小值 Description 找出n个数中最大的数和最小的数,并将它们的值输出出来。

Input 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。 输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。

Output 输出为两行,格式见sample。

Sample Input 3 0 1 -1

Sample Output The maximum number is 1. The minimum number is -1.

HINT 分隔符是空格还是回车都是空白符,对scanf("%d")来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。

Append Code #include int main() {

int n,i,max,min;

scanf("%d",&n);

int a[n];

for(i=0; i

scanf("%d",&a[i]);

max=a[0];

min=a[0];

for(i=0; i

{

if(max

max=a[i];

if(min>a[i])

min=a[i];

}

printf("The maximum number is %d.\n",max);

printf("The minimum number is %d.",min);

return 0; } 32.Problem D: 求100以内的素数 Description 素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。

Input 输入为两个整数m和n,满足0

Output 从大到小输出m~n之间的所有素数,一个素数一行。如果m~n之间没有素数,则不输出任何数。

输出的所有数在两行“=====”之间。

Sample Input 2 12

Sample Output ===== 11 7 5 3 2 =====

HINT 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。

Append Code #include #include int main() { int m,n,i,j,k,t; scanf("%d %d",&m,&n); printf("=====\n"); for(i=n;i>=m;i--) {

t=0;

for(j=2;j

if(i%j==0)

t=1;

if(t==0&&i>1)

printf("%d\n",i); } printf("====="); return 0; } 33.Problem E: 是否构成三角形? Description 给出三个整数,代表三条边的长度,判断这三条边的长度是否能构成一个三角形?

Input 第一行是n(1

接下来有n行,每一行包含三个整数,表示三个边长(1

Output 如果三条边能构成三角形,输出YES,否则输出NO

Sample Input 3 1 2 3 2 8 7 20 20 1

Sample Output NO YES YES

HINT Append Code #include int main() { int a,b,c,n,i; scanf("%d",&n); for(i=0;i

{scanf("%d%d%d",&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a)

printf("YES\n"); else printf("NO\n"); }

return 0; } 34.Problem C: 简单的整数排序 Description 对给出的若干整数按从小到大排序。

Input 输入的第一个数为n(n

Output 按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。

Sample Input 10 3 9 1 5 2 8 5 6 7 3

Sample Output 1 2 3 3 5 5 6 7 8 9

HINT 排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序算法运行处结果来。

Append Code #include int main() {

int c,i,n,j;

int a[1000];

scanf("%d",&n);

for (i=0;i

scanf("%d",&a[i]);

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

c=a[j];

a[j]=a[j+1];

a[j+1]=c;

}

}

}

printf("%d",a[0]);

for(i=1;i

printf(" %d",a[i]);

return 0; }

35.Problem A: Description

购物的路程 Saya和Kudo一起去购物。假定她们逛的街是一条直线,而商铺是这条直线上的一些点。她们将车停在该直线最左端的店铺处,然后从左向右开始逛每一个店铺,然后从最右边的店铺再返回到停车处。你的任务是计算她们走了多少路。

Input 输入有多组。每一组的第一行是N(0

Output 对每组输入,输出她们走的路长。

Sample Input 4

24 13 89 37 6 7 30 41 14 39 42 0

Sample Output 152 70

HINT Append Code #include int main() {

int n,i,max,min,a[100001];

while(scanf("%d",&n)&&n!=0)

{

scanf("%d",&a[0]);

min=max=a[0];

for(i=1;i

{

scanf("%d",&a[i]);

if(a[i]>max)

max=a[i];

if(a[i]

min=a[i];

}

printf("%d\n",(max-min)*2);

}

return 0; } 36.Problem B: 求累加和 Description 编程求min~max的累加和(含min和max),其中max>=min>0。部分程序已经给出,请填充其中的空白语句,并提交填充后的完整程序。

Input 输入为多行。第一行是一个整数N>0,表示后面有N个测试用例。后面有N行,每行包含2个整数,分别是min和max。

Output 输出为N行,每个测试用例的计算结果占据一行。每行的格式为: case i:sum=s.

其中i表示测试用例的编号(从1开始),s是该测试用例对应的累加和(设不超过int的表示范围)。

Sample Input 3 1 10 1 100 1 1

Sample Output case 1:sum=55. case 2:sum=5050. case 3:sum=1.

HINT Append Code #include int main() {

int n,i,j,max,min,sum;

scanf("%d",&n);

for(i=0;i

{ sum=0;

scanf("%d%d",&min,&max);

if(max==min)

printf("case %d:sum=%d.\n",i+1,min);

else

{

for(j=min;j

sum=sum+j;

printf("case %d:sum=%d.\n",i+1,sum);

}

} return 0; } 37.Problem G: 顺序输出字母 Description 按字母顺序输出两个字母st和ed之间的所有字母,但不包括st和ed。不输出逆序。

Input 两个字母st和ed,都是大写字母,用一个空格分开。

Output 在一行内按顺序输出st和ed之间的所有字母,但不包括st和ed。 例如:

输入为A和E,则输出为BCD;

输入为A和B,则什么字母也不输出,只有一个空行; 输入为E和A,也是什么字母也不输出, 只有一个空行。 最后要输出一行(行尾不回车): ***END***

Sample Input A C

Sample Output B

***END***

HINT Append Code #include int main() {

char st,ed,a;

int i;

scanf("%c%c%c",&st,&a,&ed);

{

for(i=st+1;i

printf("%c",i);

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

}

return 0; } 38.Problem F: 单字母变换 Description Tom和Jack是密码学爱好者,他们在聊天时经常使用一些暗语。他们使用的一种最简单的暗语是:将要说的每句话里面的英文字母变成这个字母之后的某个字母。现在要求你写一个程序,将一个字母变成它之后的某个字母。

Input 输入有2个:一个大写字母c和一个正整数d(0

Output 输出字母c之后的第d个字母。大小写与c一致。如果c之后的某个字母已经超出'Z',则再从字母'A'开始计数。

如:c='A',d=3,则输出应为:D。 若:c='Y',d=3,则输出应为:B。

Sample Input A 3

Sample Output D

HINT Append Code #include int main() {

char c;

int d;

scanf("%c%d",&c,&d);

if(c+d

printf("%c",c+d);

else

printf("%c",c+d-26);

return 0; }

39.Problem B: 登录密码验证 Description 编写一个程序,模拟用户登录系统的密码验证过程。系统提供给用户的密码长度最长为20个字符,若密码输入错误可以再次输入。但为了保证用户密码安全,若连续输入密码错误超过5次就会锁定账号一段时间。

Input 输入为若干个串,至EOF结束。输入的第一个串是用户的正确密码,后面的串为模拟用户登录时的输入的密码。

Output 每次输入错误的密码,输出一个“Wrong!”,若输入的密码为正确的,输出一个“Welcome!”,并结束密码测试。若前5次输入的密码都是错误的,则后面的输入中不管是否有正确的密码都输出“Out of limited!”。

Sample Input abcdefg

123456 kkkkkkkk abcdefg

Sample Output Wrong! Wrong! Welcome!

HINT 输入可以用scanf("%s")处理,密码比较用字符串的比较可以完成。

Append Code #include #include int main() {

char a[20],b[20];

int i,j=1;

scanf("%s",a);

while(scanf("%s",b)!=EOF)

{

if(j

{

if((strcmp(a,b)==0))

{

printf("Welcome!\n");

break;

}

else

printf("Wrong!\n");

j++;

}

else printf("Out of limited!\n");

} } 40.Problem C: 兔子的繁殖问题 Description 假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)?

这个问题是意大利数学家菲波那契(Fibonacci)在他1202年出版的《算盘全书》中提出来的,从第一对刚出生的小兔开始每月的兔子数被乘坐菲波那契序列。

Input 输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m

Output 输出为n行,每行为第m个月后的兔子总数。

第16篇:C 语言程序设计

《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。

本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。

2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。

2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!

2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。

第17篇:1032C语言程序设计

1032]《C语言程序设计》

选择题 [单选题]

12.关于C语言程序描述正确的是(

)

A:每个函数必须要有return语句

B:主函数必须位于程序的开头

C:程序中每行只能写一条语句

D:一个程序中只能有一个主函数

参考答案:D [单选题]

3.正确的实型常数是()

A:0 B:e2 C:0.871

D:3e-1.5

参考答案:C [单选题]

18.变量定义并初始化正确的是(

A:int a=l,*p=a;

B:int a=2,p=*a;

C:int a=3,p=&a;

D:int a=4,*p=&a;

参考答案:D

)[单选题]

19.设struct{int age;int num;}stu,*p=&stu;对结构型变量stu的成员age引用错误的是(

)

A:stu.age

B:p->age

C:*p.age

D:(*p).age

参考答案:C

[单选题] 当调用函数时,实参是一个数组名,则想函数传递的是(

A:数组长度

B:数组每一个元素的地址

C:数组的首地址

D:数组中每个元素的值

参考答案:C [单选题]

25.循环语句\"for(i=-1;i

)次

A:3 B:4 C:5 D:6

参考答案:C [单选题]

27、从循环体内某一层跳出,继续执行循环外的语句是:(

A:break 语句

B:return 语句

C:continue 语句

D:空语句

参考答案:A [单选题]

29、设char s[2*5]=\"12345678\";,数组s的长度是()

A:10 B:9 C:8 D:7

参考答案:C [单选题]

20.设int a[10];,对数组元素引用正确的是(

)

A:a[10]

B:a[′0′]

C:a(6)

D:a[10-10]

参考答案:D [单选题]

30、设变量b是int,c为float,则表达式b+c之值的数据类型是(

A:int B:float

C:double

D:不确定

参考答案:C

[单选题]4.设float a,b,c;,函数调用语句f(((a,b),a+c),5);中参数的个数是()

A:1 B:2 C:3 D:4

参考答案:B [单选题]

5.设intm[]={5,4,3,2,l},i=2;,其值为l的数组元素是()

A:m[i+2]

B:m[i+3]

C:m[i-l]

D:m[m[i]]

参考答案:A

[单选题]6.下列叙述正确的是()

A:while语句中的循环体至少被执行一次

B:do-while语句中的循环体至少被执行一次

C:switch语句中每个case后必须有break语句

D:continue和break在循环语句中的作用是相同的

参考答案:B [单选题] 7.设chars[2*5]=\"1234567\";,数组s的长度是()

A:10 B:9 C:8 D:7

参考答案:A [单选题]

8.下列二维数组定义并初始化正确的是( )

A:int a[3][3]=[0,3];

B:int a[2][]={{3,4},{5,6}};

C:int a[2,3]={2,3,4,5,6,7,8,9};

D:int a[][4]={{l,2,4,5},{2,3},{3,4,9}};

参考答案:D [单选题]

9.设chars1[20]=\"China\",s2[10]=\"Beijing\";,执行下列语句后的输出结果是()

strcat(sl,s2); print f(\"%s, %d\\n\",s1,strlen(s1));

A:China,5

B:Beijing,7

C:ChinaBeijing,12

D:BeijingChina,12

参考答案:C [单选题]10.设变量A是int,f为float,则表达式a+f之值的数据类型是( )

A:int B:float

C:double

D:不确定

参考答案:C [单选题]

11.用户自定义标识符正确的是(

)

A:2abC B:float C:aa2_a

D:sin(x)

参考答案:C [单选题]

14.设int a[][2]={1,2,3,4,5,6,7,8};,其中缺省的行长度是(

A:2 B:3 C:4 D:5

参考答案:C [单选题]

15.设int x=6;,执行语句x+=x-=x*x;后,x的值是(

)

A:-60

) B:0 C:6 D:36

参考答案:A [单选题]

16.下列为C语言保留字的是(

)

A:Double B:long C:FLOAT

D:integer

参考答案:B [单选题]

17.设int a=3,b=8,c=10;,表达式(a,b),(c,10)的值是(

)

A:2 B:6 C:8 D:10

参考答案:D [单选题]

21.若已定义:int a[9],*p=a;,并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( )。

A:p+1 B:a+1 C:a++ D:++p

参考答案:D [单选题]

22.定义一个具有10个元素的整型数组,应该使用语句( )。

A:int a[10];

B:int a[2,5];

C:int a[];

D:int *a[10]

参考答案:A [单选题]

23.在宏定义#define PI 3.1415926中,用宏名PI代替一个(

)。

A:单精度数

B:双精度数

C:常量

D:字符串

参考答案:D [单选题]

26、C语言程序的三种最基本结构是(

)结构、选择结构和循环结构。

A:顺序

B: 递归

C:转移 D:嵌套

参考答案:A [单选题]

28、设int m[]={5,4,3,2,l},i=2;,其值为2的数组元素是()

A:m[i+1]

B:m[i+2]

C:m[i-l]

D:m[m[i+1]]

参考答案:A [单选题]

1.正确的自定义标识符是()

A:2C B:x#y C:case

D:Word_2

参考答案:D [单选题]

2.设int a=2,b=3,c;,正确的赋值语句是()

A:(a+b)++

B:b=a%2.5

C:a+=b+=5

D:c=a+b=5

参考答案:C [单选题]

13.设int i=2,a,b;double x=2.12,y=1.2;,正确的表达式是(

)

A:a+=(b=3)*(a=5)

B:a=a*5=3

C:x%(-5)+y**4

D:y=double(i)

参考答案:A 问答题 [论述题]

1. 什么是算法?算法的特点是什么?请画出求s=1+2+3+…+n之值的算法流程图。

参考答案:

1.算法是求解问题的方法或步骤

算法的特点:确定性、有效性、有穷性、有0个或一个以上输入、有一个或多个输出

s=1+2+3+…+n之值的算法流程图(略)

[论述题]

3.程序的基本结构有哪些?请画出这些基本结构的流程图。

参考答案:

3.程序基本结构包括顺序结构、分支结构、循环结构 三种基本结构的流程图见书18页

[论述题] 2. 结构程序设计方法的基本思想是什么?程序包括哪三种基本结构?请画出求100以内能够被7整除的数的算法流程图。

参考答案:

2.结构程序设计方法的基本思想是自顶向下,逐步求精、模块化的方法 程序包括顺序结构、分支结构、循环结构

请画出求100以内能够被7整除的数的算法流程图。

填空题 [填空题]

16.设char s[3]=\"AB\",*p=s;,则*(p+2)的值是_______。

17.在VC环境下,编译C语言的源程序文件f1.cpp时出现的错误是__________。18.一个C语言函数由函数的首部和__________组成。

19.设float a,b,c;,函数调用语句f(((a,b),a+c),5);中参数的个数是

20.设int a[][3]={1,2,3,4,5,6};,其中缺省的行长度是

21、设int x=6;,执行语句x+=x-=x*x;后,x的值是

。 22.设int a=3,b=8,c=10;,表达式(a,b),(c,10)的值是

。 23.设int a,b;,与a+=5-b;等价的赋值语句是__________。

24.设int n=657;,执行语句printf(\"%d",n/10%10);后的输出结果是_______。

25、设int x=4,y=2;,表达式x

26、执行语句for(i=8;i>0;i--,);后,变量i的值是___________。

参考答案: 16.设char s[3]=\"AB\",*p=s;,则*(p+2)的值是____0___。

17.在VC环境下,编译C语言的源程序文件f1.cpp时出现的错误是____语法错误______。

18.一个C语言函数由函数的首部和___函数体______组成。19.设float a,b,c;,函数调用语句f(((a,b),a+c),5);中参数的个数是 2

20.设int a[][3]={1,2,3,4,5,6};,其中缺省的行长度是 2 。

21、设int x=6;,执行语句x+=x-=x*x;后,x的值是( -60 ) 22.设int a=3,b=8,c=10;,表达式(a,b),(c,10)的值是( 10 ) 23.设int a,b;,与a+=5-b;等价的赋值语句是_____a=a+(5-b)______。 24.设int n=657;,执行语句printf(\"%d",n/10%10);后的输出结果是__5___。

25、设int x=4,y=2;,表达式x

26、执行语句for(i=8;i>0;i--,);后,变量i的值是____0___。

[填空题]

27.计算1!+2!+3!的值并输出,请完善程序。#include int f(int n) {int c=1,i;

for(i=1;i

);

} void main() {int i, k=0;

for(i=1;i

; printf(\"

\\n\",k); }

参考答案:

27.计算1!+2!+3!的值并输出,请完善程序。

① c

② f(i) ;

③ %d

[填空题]

1.设float x,y,z;, 式是__________。

的C语言算术表达2.设int a,b;,与a*=5-b;等价的赋值语句是__________。 3.系统函数sqrt()应使用的文件包含命令是__________。 4.在C语言中,表示逻辑\"假”的值是__________。

5.设int n=123;,执行语句printf(\"%d",n/10%10);后的输出结果是__________。

6.在C语言中,将圆周率(PI=3.1415926)定义为常量的宏定义命令是__________。

7.一个C程序由一个或多个__________组成。8.在VC环境下,对一个C语言的源程序文件f1.cpp进行编译链接后生成的可行文件名是__________。

9.x=(a=1),(b=2),(a+b);执行该语句后,变量x的值为

。 10.(int)2.56被转换后为

11.代数表达式 言表达式是_______。

对应的C语12.设int a,b;,表达式(a=2)*(b=5)的值是__________。 13.设int x=4,y=2;,表达式x

14.执行语句for(i=10;i>0;i--,);后,变量i的值是___________。 15.若函数内定义变量的存储类别是static,该变量被称为___________静态变量。

参考答案:

1.____2*a(x+y)______。2.____a=a*(5-b)______。

3.__#include \"math.h\"或#include ________。 4.___0_______。 4.__a,97________。 5.___2_______。

6._#define PI 3.1415926___。 7.____函数______。 8.在VC环境下,对一个C语言的源程序文件f1.cpp进行编译链接后生成的可行文件名是___f1.exe_______。 9.

3 .10.

2 .

11._(-b+sqrt(b*b-4*a*c))/(2*a)______。

12.设int a,b;,表达式(a=2)*(b=5)的值是__10________。 13.设int x=4,y=2;,表达式x

14.执行语句for(i=10;i>0;i--,);后,变量i的值是______0_____。 15.若函数内定义变量的存储类别是static,该变量被称为___局部____静态变量。

[填空题]

29.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。void main( ) { int i,j;

int a[3][4],max, min, sum=0; for(i=0;i

for(j =0 ;j

); max=min=a[0][0]; for(i=0;i

(2)

;

if(a[i] [j]>max) max=a[i] [j]; if(a[i] [j]

printf(\"max=%d,min=%d,sum=%d\\n\", (3) );

}

参考答案:

29.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。(1)&a[i][j]

(2) sum+= a[i][j]

(3) max,min,sum

[填空题]

30.程序的功能是从键盘上任意输入一个正整数,求各位数字之和。请用模块化方法改写下列程序,功能不变。

#include \"stdio.h” void main() {int n;

intr,s=0;

scanf(\"(1)”,&n);

do{r=(2) ;

s+=r; n=n/10;

}while((3)); printf(\"%d”, s);

}

参考答案:

30.(1) n%10 (2) %d

(3) n>0

[填空题]

28.以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 main()

{float x[1000],sum=0.0,ave,score; int n=0,i;

printf(\"Enter mark:\n”);scanf(\"%f”,& score); while(

① )

{sum_

_;x[n]= score ;n++; scanf(\"%f”,& score);}

ave=_ ③ __;

printf(\"Output:\n”);

printf(\"ave=%f\n”,ave);

for(i=0;i

参考答案:

28.

① score>=0

② =sum+ score ;

③ sum/n

程序分析 [论述题]

1.#include void main() { char op; int a=10,b=20;

for(op=\'a\';op

{case\'a\':printf(\"a+b=%d\\n\",a+b);break; case\'b\':printf(\"a-b=%d\\n\",a-b);break; case\'c\':printf(\"a*b=%d\\n\",a*b);break; case\'d\':printf(\"a/b=%d\\n\",a/b);break; } }

参考答案:

1. a+b=30 a*b=200

[论述题]

2.#include \"stdio.h\" void sort(int x[],int n)

{int i,j,k,t;

for(i=0;i

for(j=i+1;j

if(x[k]>x[j])k=j;

if(i!=k)

{t=x[k];x[k]=x[i];x[i]=t;} } }

void main( )

{inta[10]={34,50,89,67,102,11,75,30,125,145},i;

sort(a,10);

for(i=0;i

}

参考答案: 2.11 30

34 50

67

75

89 102

125

145

[论述题]

6.#include \"stdio.h” fun(int x,int y,int z) { z=x*x+y*x;} Void main() { Int a=31; fun(5,2,a); printf(\"%d”,a); }

参考答案:

6.31

[论述题]

4.#include #include int f(int x) {int i;

for(i=2;i

if(x%i==0) return 0;

return 1;

}

void main()

{int a[10]={34,50,89,67,102,11,75,30,125,145}; int i,n=0,j,t;

for(i=0;i

if(f(a[i]))

printf(\"%d \",a[i]); }

参考答案:

4.89 6711 [论述题]

5、#include &stdio.h>

void main ()

{ int x ,*p;

x=55;

p=&x;

printf(\"%d,%u\\n\", x, *p) ;

*p=65;

printf(\"%d,%u\",x, *p) ;

}

参考答案: 5. 55,55

65,65 [论述题]

3.#include \"stdio.h\" int fun(int num) {int k=1;

do

{k*=num%10;

num/=10; }while(num);

return k; }

void main() {int x=651,y=123;

printf(\"%d,%d\",fun(x),fun(y)); }

参考答案:

3. 30 6

程序设计 [论述题] 1.从键盘上输入x,依据公式 算y的 值。要求有输入输出提示,计算结果精度为3。

计2.从键盘输入一个正整数n,若能同时被3和5整除,则输出\"Yes”,否则输出\"No”。 3.编一程序找出所有三位整数的\"水仙花数”并输出结果。其中\"水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一\"水仙花数”,因为153=13+53+33。

4.编写程序找出200以内能够被9整除的所有整数,并输出结果。5.利用循环结构输出下列图形。

A BBB CCCCC DDDDDD

6.依据下列计算公式,编写一个程序将输入的华氏温度转换为对应的摄氏温度。要求有输入输出提示,计算结果精度为2。

7.编一程序求:s=1+(1+2)+(1+2+3)+……+(1+2+3+……+10)

8.从键盘上输入三条边a、b和c,若能构成三角形则输出其面积,否则输出不能构成三

角形的提示信息\"No triangle”。 三角形面积计算公式 其中:s=(a+b+c)/2。 9.从键盘上任意输入一个正整数,求各位数字之和。 10.编写程序打印下列图形

11.从键盘输入一个正整数n,若能同时被2和3整除,则输出\"OK”,否则输出\"No”。

12.编写程序找出100以内能够被7整除的所有整数,并输出。

第18篇:高级语言

高级语言百科名片

由于汇编语言依赖于硬件体系,且助记符量太难记,于是人们又发明了更加易用的所谓高级语言。在这种语言下,其语法和结构更类似普通英文,且由于远离对硬件的直接操作,使得一般人经过学习之后都可以编程。高级语言通常按其基本类型、代系、实现方式、应用范围等分类。简介

计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。 高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如目前流行的c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言(其中C/C++属于中低级语言)等等,这些语言的语法、命令格式都不相同。

低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。

高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言。

高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。类型

程序设计语言的类型:

1.命令式语言。这种语言的语义基础是模拟“数据存储/数据操作”的图灵机可计算模型,十分符合现代计算机体系结构的自然实现方式。其中产生操作的主要途径是依赖语句或命令产生的副作用。现代流行的大多数语言都是这一类型,比如Fortran、Pascal、Cobol、C、C++、Basic、Ada、Java、C#等,各种脚本语言也被看作是此种类型。2.函数式语言。这种语言的语义基础是基于数学函数概念的值映射的λ算子可计算模型。这种语言非常适合于进行人工智能等工作的计算。典型的函数式语言如Lisp、Haskell、ML、Scheme、F#等。

3.逻辑式语言。这种语言的语义基础是基于一组已知规则的形式逻辑系统。这种语言主要用在专家系统的实现中。最著名的逻辑式语言是Prolog。

4.面向对象语言。现代语言中的大多数都提供面向对象的支持,但有些语言是直接建立在面向对象基本模型上的,语言的语法形式的语义就是基本对象操作。主要的纯面向对象语言是Smalltalk。 虽然各种语言属于不同的类型,但它们各自都不同程度地对其他类型的运算模式有所支持。好处 程序设计语言从机器语言到高级语言的抽象,带来的主要好处是:

1.高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;

2.高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;

3.高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;

4.由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。

第19篇:高级语言程序设计(VB)实验评分方法及注意事项

高级语言程序设计(VB)实验评分方法及注意事项

1.高级语言程序设计(VB)综合性实验包括预习和实验两部分,相应提交预习报告和实验报告。实验报告成绩以百分制给出。预习报告成绩占实验成绩的20分,实验报告成绩占实验成绩的80分。 2.预习报告主要包括:

(1)界面设计和属性设置(5分)

包括所需对象的名称、数量、在窗体上的布局、属性名和属性值等。属性设置情况要求用表格进行填写。 (2)预编程序代码(15分)

程序流程图不作硬性要求,如有且正确可在5分以内适当加分。预编程序代码必须手写。

3.实验报告主要包括:

(1)实验目的(已在实验报告模板中给出) (2)实验内容(已在实验报告模板中给出) (3)实验要求(已在实验报告模板中给出) (4)界面设计和属性设置(5分) (5)源程序代码(60分)

(6)调试和运行结果(要求取截图)(5分) (7)实验中存在的问题(5分) (8)体会和思考(5分)

以上内容要求在A4纸上打印。

5.做实验项目之前,要求学生提前预习,做好实验前的准备工作。

6.学生做完实验后,要按实验要求写出实验报告(连同预习报告一并打印左侧装订),交班长并由班长收齐后按学号排好序交给实验指导教师。

第20篇:c语言程序设计基础

《c语言程序设计基础》重修试卷

一、选择题(2’*20=40’)

1、c程序由构成。

A.函数B.命令C.程序D.表达式

2、以下选项中合法的变量名是

A.#y2B.a

3、设有说明:int x;float y;double z;则表达式x+z-y值的数据类型为

A.floatB.charC.intD.double

4、在我们使用的turboC中,一个int型数据在内存中占个字节

A.0B.1C.2D.4

5、若有定义:int a=8,b=5,c;执行语句c=a\\b+0.4后c=

A.1.4B.1C.2.0D.2

6、在c语言中,char型数据在内存中的存储形式是

A.补码B.ASSCIIC.原码D.反码

7、若运行时给变量x输入

高级语言程序设计
《高级语言程序设计.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档