[C语言课程设计题目](丁海军)

合集下载

C语言课程设计报告书样本

C语言课程设计报告书样本

海南大学三亚学院《C语言程序设计》课程设计题目:学生成绩管理系统专业:电子信息工程班级:电信1001班姓名:刘孝逢学号:1010720057指导老师:刘小飞设计时间:2011年7月4日~2011年7月8日目录《C语言程序设计》课程设计 (1)1. 程序分析与设计 (3)2.流程图 (3)3. 源程序清单 (4)4.调试过程 (4)5.程序有待改进的地方 (5)6. 本次实习的收获和建议 (5)参考文献 (5)附录 (5)学生成绩管理系统1. 程序分析与设计(正文内容使用宋体小4号字。

打印版面上空2.5cm,下空2cm,左空2.5cm,右空2cm(左装订),固定行距,24磅。

页眉和页脚用宋体,小5号字居中标明)利用循环使每个学生的三门功课的成绩相加,然后再把和除以三就得到了平均成绩。

接着用冒泡法利用平均分的高低排出名次。

最后用将每个学生的信息输出学号导论离散 c语言英语数学1 45 78 90 67 562 76 87 89 96 663 77 83 67 45 744 55 67 66 87 515 67 78 98 64 356 66 78 93 76 65各科平均: 64.33333333 78.5 83.83333333 72.5 57.83333333各科最高: 77 87 98 96 74各分数段人数:90-100 80-90 70-80 60-70 60-0导论离散英语数学查找:各科在平均分以上的人的学号2.流程图3. 源程序清单(此部分采用小五号宋体,行间距-固定值14)#include<stdio.h>struct ave_cou{float ave_couM;float ave_couE;float ave_couC;}ave_c;void input(ave_c [],int n)void input(student s[],int n)//输入以及求总分{int sum=0;for(int i=0;i<n;i++){printf("输入第%d个学生的姓名:\n",i+1);gets(s[i].name);printf("输入第%d个学生的学号:\n",i+1);scanf("%d",&s[i].num);printf("输入第%d个学生的英语成绩:\n",i+1);scanf("%d",&s[i].eng);printf("输入第%d个学生的程序设计成绩:\n",i+1);scanf("%d",&s[i].pro);printf("输入第%d个学生的数学成绩:\n",i+1);scanf("%d",&s[i].maths);sum=s[i].eng+s[i].pro+s[i].maths;printf("总分为:%d\n",sum);4.调试过程在程序运行的过程中,出现了很多的错误。

东北石油大学C实验教案2017年度第3学期

东北石油大学C实验教案2017年度第3学期

的值为 5,b 的值为 1。 5. 输入三角形的三边长,用海伦公式求其面积。
1. 数据类型与输出格式是否可以不一致?
2. 将程序 1 中的输出格式%d 分别改为%3d、%-3d、%03d、%-03d,将

显示什么结果?
考 题
3. 将程序 1 中的输出格式%6.1f 分别改为%-6.1f、%6.3f、%.1f,将显示 什么结果?
实验
学生在计算中心机房进行实验,每个机房都提供高档的奔腾Ⅳ微机,并且安
环境 装了全部的教学用软件,每个学生一台微机,能够满足教学要求。
实验 学期
2016-2017 学年第 3、4 学期
实验名称 顺序结构程序设计 实验次数 第 1 次 是否上交报告 否
实验内容(教学过程)
备注
1. 掌握程序调试的方法。
4. 将某一程序中的一个变量声明删除,会有什么情况发生?
5. 使用 scanf 函数输入数据时。是否可以随意输入?
6. 数学表达式和 C 表达式的表示方式有何区别?
实 验 报 告 要 求
实验名称 选择结构程序设计 实验次数 第 2 次 是否上交报告

实验内容(教学过程)
备注

1.掌握关系运算和逻辑运算的应用。
学位
硕士
是否 主讲

实验条件
每生一台计算机
专业
教材 讲义
应数、统计、信计、 授课班级
给水、土木
应数 161,统计 161, 信计 161-2,给水 161-2,土木 161-2
授课地点
教 材:
《C 程序设计教程》(第 2 版)马瑞民等 清华大学出版社 2015
计算中心机房
实验讲义: 《C 程序设计实验指导与习题集》(第 2 版) 衣治安等 清华大学出版社 2015

华中科技大学自动化学院C语言课设实验报告

华中科技大学自动化学院C语言课设实验报告

华中科技大学自动化学院《C语言程序设计》课程设计实验报告题目:南海军演模拟系统专业:测控班级: 1301学号: U201314492 U201314494姓名:柳焜剑杨渊超成绩:指导教师:周凯波完成日期:2014年11 月 1 日一系统功能结构模块及程序结构二各模块的功能1、maine();/*这个函数将第一张欢迎图片展示出来*/2、void init();/*画图初始化*/3、process0();process00();process01();process02();process03();process03A();process03B();/*实现各个界面的功能,通过if语句来执行不同的界面切换*/4、abc();form();bfjj1();bfjj2();bfjj3();help();/*画图函数以及返回mouse函数,通过返回到达不同界面下的不同按钮效果*/5、end/*结束函数 */6、outhz ()/*汉字和输入函数*7、menue();/*菜单函数,显示主菜单,四个按钮*/8 ……三试验结果1、主菜单页面2、军舰指导3、军演开始一、体会这是我们第一次做这么大型的且比较复杂的一个C程序,从暑假开始边看书边慢慢尝试到如今全部做出来花费了许多时间与精力。

以前接触到的C程序设计都是最简单、最基本的编程,就连最后的期末考试也只是一些小程序,并不像课程设计这样庞大复杂。

小程序是考察我们对基本概念的熟识,而这种大程序则是考察了我们对整体构架的设计以及各种小程序的拼接,看似不难,实则会遇到许多意想不到的困难,当然,这过程当中我们学到了许多。

后来经过网上的搜索资料以及和其他同学的讨论,对这个军演系统进行一些列分块,拆成几个部分,然后再逐个突破,这样显得有条理且方便。

接下来是真正开始动手写程序,随之而来的是一些列的问题,其中最困扰我的是内存模式。

在所有内核做好之后,接下来就是界面的问题,最开始的时候我考虑做图形界面,但是由于时间比较紧迫,不得不放弃,只好做了一个简易菜单,菜单设计容易,可是将界面和程序结合起来却又是一个难题。

C语言课程设计报告(约瑟夫环)胡存夫

C语言课程设计报告(约瑟夫环)胡存夫

C语言课程设计报告(约瑟夫环)胡存夫沈阳航空航天大学课程设计报告课程设计名称:C语言课程设计课程设计题目:约瑟夫环院:计算机学院专业:计算机科学与技术班级:3410301学号:2013040103023姓名:胡存夫指导教师:丁一军沈阳航空航天大学课程设计报告目录 1 课程设计介绍............................................................... ............................................. 1 课程设计内容及要求............................................................... ............................. 1 系统需求............................................................... ................................................. 1 2 课程设计原理............................................................... ............................................. 3 课设题目粗略分析............................................................... ................................. 3 功能模块图............................................................... ...................................... 5 流程图分析............................................................... ...................................... 5 3 调试与分析............................................................... ............................................... 10 调试过程............................................................... .. (10)沈阳航空航天大学课程设计报告原理图介绍第三步:第二次,1号出列 1 3 1 2 约瑟夫环原理演示图 3 4 5 6 7 7 2 4 8 4 第一步:给第一个人赋初始密码为:20则从它开始向下走20次,到6第四步:第三次,4号出列最后排序后的密码序列:第二部:第一次停下的位置,此时6号出列,并将他的值作为新的m值,即:新的m=8;从7好开始继续向下走8次,到18 6 3 1 2 4 4 7 1 2 7 3 4 5 图约瑟夫环原理演示图 4 沈阳航空航天大学课程设计报告功能模块图Case 1:一个简单的输出函数,用于说明约瑟夫环;void instruction() Case 2:建立的约瑟夫环,并输出已建立的约瑟夫环:createList(LNode **ppHead,int n) 输出该约瑟夫环的每个人的出列顺序: jose(LNode *ppHead,int Case 0:default : 输入0,退出exit(0);主函数调用函数;main() 菜单函数;void menu() 图约瑟夫环函数调用关系图流程图分析 5 沈阳航空航天大学课程设计报告1. Main()函createList; 创建储存玩家密码的循环单链表的方法从主函数中获取玩家信息n 如果n>0 是否退出创建循环单链表,储存各个玩家密码创建链表完成返回主函数main() 图创建链表函数的数据流程图 2.6 沈阳航空航天大学课程设计报告Main()函jose();出队函数出队处理的方法从循环链表中按初始密码依次扫描,找出对应的玩家序列输出其持有的密码i=ppHead->pwd; j=ppHead->num; 移动浮标指针m_pwd=ppHead->pwd; 输出密码后,删除相应的结点,并释放所占的储存空间free(ppHead); ppHead=p->next; 图出队函数的数据流程图 3. void instruction() {printf(\\\n\ printf(\约瑟夫环:\\n\ printf(\ 编号为1,2,3,4?,n的n个人按顺时针方向围坐一圈,每人持有一个密\\n\ 执行完后返回主函数7 沈阳航空航天大学课程设计报告printf(\码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始\\n\ printf(\按顺时针方向自1开始顺序报数,报到时停止.报m的人出列,将他的密码\\n\ printf(\作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,\\n\ printf(\直到所有人全部出列为止.编程打印出列顺序.\\n\ printf(\ return 0; } 4菜单模块void menu(){ printf(\约瑟夫环*****************************\\n\ printf(\\\n\ printf(\[1]约瑟夫环问题的阐述\\n\ printf(\[2]按要求求解约瑟夫环\\n\ printf(\ [0]退出\\n\ printf(\欢迎使用!****************************\\n\} 8沈阳航空航天大学课程设计报告 5. 9 沈阳航空航天大学课程设计报告Main()开Menu()功能菜单选择要执行的操作功能1:约瑟夫环说明功能2:按要求求解约瑟夫环输入总人数n 输入开始上线数:功能3:退出系统输入每个玩家的密码调用:createList(&ppHead,n); jose(ppHead,m);函数求解所需的密码序列图主函数数据流程图程序运行完,自动返回到功能菜单 3 调试与分析调试过程在调试程序是主要遇到一下几类问题:这是一个使用循环链表的经典问题。

《C语言程序设计》课程整体设计

《C语言程序设计》课程整体设计

第35卷第4期 福 建 电 脑 Vol. 35 No.42019年4月Journal of Fujian ComputerApr. 2019———————————————周军强,男, 1979年生,主要研究领域为软件工程。

E-mail: professorzhou@ 。

《C 语言程序设计》课程整体设计周军强(宁波职业技术学院 浙江 宁波 315000)摘 要 计算机应用的发展日新月异,对程序员的需求量非常大,因此高职院校的计算机软件类专业都开设了软件开发类课程,C 语言作为程序设计入门的课程尤为重要。

而学生刚开始往往是零基础,如何让学生有效的掌握好这门课程,课程的设计非常关键,本文主要对《C 语言程序设计》课程进行整体设计,从而实现课堂的有效教学。

关键词 有效课堂;C 语言;课程设计中图法分类号TP399 DOI:10.16707/ki.fjpc.2019.04.055Integral Design of the C Fundamentals of Programming CourseZHOU Junqiang(Ningbo Polytechnic, Ningbo, China, 315800)1引言程序设计和编程是计算机科学与软件类学生必须掌握的一项技能。

从事软件开发的课程有很多,PHP 、移动APP 、JA V A 等。

这些课程都是学生以后从事IT 开发领域需要学习的重要课程。

《C 语言程序设计》这门课以C 语言作为教学语言,是以后学习其他软件开发课程的基础。

程序设计基础的学习涉及到最基本语言的结构,包括程序的设计方法、顺序结构、选择结构、循环结构、数组等等基础的概念都是以后程序开发的基础[1]。

所以学好《C 语言程序设计》课程可以为以后程序设计开发的学习打下良好的基础。

2学习者分析及应对措施在知识方面,该课程开设在大一上学期。

部分学生在高中的时候接触过程序VB ,有一定的编程相关的概念基础;但仍有部分学生没接触过程序,编程基础相对比较差。

C语言程序设计报告-南海军演模拟系统

C语言程序设计报告-南海军演模拟系统

《C语言程序设计》课程设计实验报告南海军演模拟系统题目:南海军演模拟系统班级:组员:指导教师:上交日期:2015.11.10目录1 引言 (3)1.1背景 (3)1.2编写目的 (3)1.3任务概述 (4)2 需求分析 (4)2.1需求分析 (4)2.2运行环境 (4)3 系统设计 (5)3.1功能需求描述 (5)3.2程序流程图 (5)3.3功能和操作简介(界面) (6)3.4模块划分 (10)3.5结构定义 (10)4算法分析 (10)4.1算法分析 (10)5程序总结 (11)5.1编程过程中的疑难点处理 (11)5.2程序不足之处 (11)6组员分工 (11)7参考资料 (11)8源代码 (12)一. 引言1.1背景南海北靠中国大陆和台湾岛,东接菲律宾群岛,南邻加里曼丹岛和苏门答腊岛,西接中南半岛和马来半岛。

南海是联系中国与世界各地非常重要的海上通道,同时也是太平洋和印度洋之间的海上走廊。

从军事战略上而言,控制了南海岛礁,就意味着直接或间接的控制了从马六甲海峡到日本、从新加坡到香港、从中国广东到菲律宾马尼拉,甚至从东亚到西亚、非洲和欧洲的多数海上通道。

南海岛礁附近海域拥有丰富的资源,渔业资源、航道资源,特别是石油、天然气资源。

从航道上来讲,每年大约有4万多艘船只经过南海海域。

日本、韩国和中国台湾省,90%以上的石油输入要依赖南海这个航道;经过南海航道运输的液化天然气,占世界总贸易额的三分之二。

就中国来讲,通往国外的近40条航线中,超过一半以上的航线经过南海海域。

南海自古以来就是中国领土不可分割的一部分,在1949年前,国际上公认南海主权属于中国;80年代后期,随着南海油气田大规模的勘测和中国的崛起,周边国家纷纷插足南海,以美国为首的日本等国更是以调解者自居,罔顾事实,不断在南海搅局,南海问题越来越多边化、复杂化。

1.2编写目的以南海军演问题为对象,建立简单的军演模型,通过简单的动画模拟出军演中飞机、军舰、潜艇的移动与攻击。

C语言程序设计实例教程(第2版)丁爱萍第4章 选择结构程序设计_百度文库

C语言程序设计实例教程(第2版)丁爱萍第4章 选择结构程序设计_百度文库

本文由xjsir2010贡献 ppt文档可能在WAP端浏览体验不佳。

建议您优先选择TXT,或下载源文件到本机查看。

第4章 选择结构程序设计 章 第4章 选择结构程序设计 章 4.1 关系运算符及其表达式 4.2 逻辑运算符及其表达式 4.3 条件运算符 4.4 单条件选择if语句 单条件选择 语句 4.5 开关分支 开关分支switch语句 语句 习题4 第4章 选择结构程序设计 章 4.1 关系运算符及其表达式 关系表达式是由关系运算符连接表达式构成的。

 1. 关系运算符 1) 关系运算符 关系运算符都是双目运算符,共有如下6种: >,<,>=,<=,==,!= 分别是大于、小于、大于或等于、小于或等于、 等于和不等于。

第4章 选择结构程序设计 章 2) 运算符的优先级和结合性 前4种关系运算符的优先级别相同,后2种也相同,前4 种高于后2种。

关系运算符具有自左至右的结合性。

 关系运算符、算术运算符和赋值运算符之间的优先级次序 为:算术运算符优先级最高,关系运算符次之,赋值运算 符最低。

 2. 关系表达式 1) 关系表达式 由关系运算符组成的表达式称为关系表达式。

 关系运算符两边的运算对象可以是C语言中任意合法 的表达式。

例如,x>y,(x=5)<=y,x==y等。

第4章 选择结构程序设计 章 2) 关系表达式的值 关系表达式的值是整数0(代表结果为逻辑假)或 1(代表结果为逻辑真),在C语言中不存在专门的“逻 辑值”,此处请读者务必清楚。

例如,关系表达式 (x=3)>(y=4)的值为0。

 关系表达式常用在条件语句和循环语句中。

 3) 举例 一般情况下,关系表达式用在选择结构或循环结 构的关系判断中,并不需要输出关系表达式的值,这 里我们为了了解关系表达式的内部运行机制,在例4-1 中可以看到关系表达式的值只能是0或1。

第4章 选择结构程序设计 章 【例4-1】关系表达式示例。

 #include "stdio.h" main( ) { char x='m' , y='n' ; int n ; n=x<y ; printf("%d\n" , n) ; n=x==y-1 ; printf("%d\n" , n) ; n=('y'!='Y')+(5<3)+(y-x==1) ; printf("%d\n" , n) ; } 第4章 选择结构程序设计 章 运行结果: 1 1 2 通过上面的程序可以看出:关系运算的结果为 “真”时,值等于1;结果为“假”时,值等于0。

[C语言课程设计题目](丁海军)

[C语言课程设计题目](丁海军)

C语言课程设计设计题丁海军本手册提供的设计题大致可分为为3类:第一类侧重于算法设计与实现;第二类侧重于文件操作。

(一)算法设计类题目1. Fibonacci数列。

Fibonacci数列的计算公式如下:fib(1) = 1;fib(2) = 1;fib(n) = fib(n-1) + fib(n-2); //对大于等于3的任意n(1)简单变量“数据平移”方法计算Fibonacci数列的第n项(正整数n通过键盘输入):说明变量old1=1,old2=1,newItem;新的Fibonacci项newItem总是“距它最近”的前两项(old1与old2)的累加和。

而后通过“old1=old2; old2=newItem;”进行所谓的“数据平移”。

接着计算另一个新的Fibonacci项newItem,依次循环,直到求出数列的第n项时为止。

(2)使用数组求出Fibonacci数列的第n项(正整数n通过键盘输入)并显示在屏幕上:说明数组f用来存放Fibonacci数列的各项之值,且仅初始化前两个元素f[0]=1,f[1]=1,而后通过f[i]=f[i-2]+f[i-1];依次计算出f[2]到f[n-1](注意f[n-1]恰为所要求出的第n项)并将该值显示在屏幕上。

2.编程序,循环进行如下的处理过程:由计算机生成简单的四则运算题;用户给出答案;计算机判断对错。

直到用户回答说不再继续做了时结束程序。

提示:可让用户选择指定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题;而后通过使用“rand()%10”或“rand()%100”来获得一个0到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题。

还可进一步对用户所做算术题的对错次数进行记录,结束程序时给出一个某种形式的成绩。

3.数的进制转换(1)将输入的2进制数(一个非“0”即“1”的字符串)化为10进制数。

提示:用字符数组a盛放所输入的二进制数;而后从后往前逐一计算每一位的“位权”w (2的0次方、2的1次方、...),再计算“位权”乘以“位值”并累加到一个初值为0的变量value 上,最后输出该value。

动态规划策略

动态规划策略
f[i][j]ma{gx[i][k]f[i1][jk]} 0kj
初始条f件 [1][j: ]g[1][j]
i1,2,...m,, j1,2,n...,
f[m][n]就是所需要的最大利润。
实际编程时,还缺少一个东西?每个项目到底分配到多少资源量 ?
定义数组a[i][j]
a[i][j] 表示前i个项目分配资源量为j的情况下 ,使得前i个项目利润最时,第i个项目分配的资源 量为。
三、进一步的例子
例3: (矩阵链乘)给定n个矩阵{A12,…} , 其中与1 是可乘的(1,2,3,…1)。考察这n个矩阵的连乘积

A1A2A3…
由于矩阵乘法满足结合律,所以计算矩阵的连乘可 以有许多不同的计算次序。这种计算次序可以用加
括号的方式来确定。
若一个矩阵连乘积的计算次序完全确定,也就是说 该连乘积已完全加括号,则可以依此次序反复调用
动态规划
河海大学计算机信息学院 丁海军
一、导言
[例1]:求出从顶点1点到顶点7点的最短路径
方法?
最优性原理
根据穷举法,(1,3,5,7)为优化解。
优化原理指:相对于初始决策1->3造成的问题状 态,(3,5,7)必须是3到7的最短路。否则(1, 3,5,7)也不可能是优化的。
无论第一步决策取{2,3,4}中那一节点,其后的决 策序列必须是该节点到目的节点的最短路
a [i]j] [ am rg { g [ia ]k ] [ x f[i 1 ]j[ k ]}
0 k j
求的a[i][j]之后,就可以求的每个项目分的资源量: ; (>=1){
x[i][i][j]; [i]; }
二、动态规划问题的设计方法
1.动态规划的特点 最优值 递归(递推)公式 重复子问题 自顶向下递归实现 存在问题:大量重复计算 解决办法:备忘录 自底向上递推实现 根据问题递推公式性质,循环递推即可

11级《C程序设计》课程设计任务书

11级《C程序设计》课程设计任务书

11级《C程序设计》课程设计任务书(软件工程及网络专业)一、课程设计的目的与教学要求1.教学目的通过对基本数据类型、语句、数组、函数、结构、指针以及文件等的操作,使学生全面掌握结构化程序设计的基本方法。

2.教学要求从课程设计的目的出发,通过课程设计的各个环节,达到以下教学要求:(1)进一步掌握C语言程序设计的基本思想和方法;(2)掌握结构化程序设计的基本原理及应用;二、课程设计选题与任务要求1.程序设计题目的选择通过完成一个较完整的程序设计实例,使学生融会贯通本课程所学专业理论知识,加深对所学基础知识的理解与应用。

培养学生综合运用已学知识来解决具体问题的能力,以及全面分析问题、解决问题的方法。

2、选题原则(1)按学号规律从以下题中选择指定题目完成(详见选题表)(2)模块化程序设计(3)锯齿型程序书写格式(4)必须上机调试通过3、报告格式与要求设计报告格式:1)设计目的2)总体设计(程序设计组成框图、流程图)3)详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)4)调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施5)源程序清单和执行结果:清单中应有足够的注释三、课程设计考核方案1、考核原则1)每个人必须有程序运行结果2)每个人必须交《C语言课程设计报告》和设计程序清单3)课程设计任务必须由个人独立完成,禁止相互抄袭,如有发现,严肃处理2、打分标准1)根据平时上机考勤;注重平时上机成绩,教师要不定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机,占40%2)根据程序运行结果,占30%3)根据《C语言课程设计报告》,学生能对自己的程序面对教师提问并能熟练地解释清楚,占30%以上三项缺一不可,由于课程设计各题目的难度不一,所以成绩的评定将根据各人完成题目的难度和完成情况的不同,分别评定成绩,如未能完成任何题目,则以不及格计算。

附件一:具体选题及任务要求1《学籍管理系统》设计任务(1)输入功能:输入30名学生的学号、姓名和五门课的考试成绩。

C语言程序设计第2讲+基本数据类型

C语言程序设计第2讲+基本数据类型

取值范围
-128 — 127( -27——27-1 ) 0 — 255(0 — 28-1)
-32768 — 32767(-215——215-1) 0 — 65535( 0 — 216-1 ) -231——231-1 0 — 232-1 -231 — 231-1 0 — 232-1 -263 — 263-1 0 — 264-1
1. 整型常量的三种进制 (1)十进制。如123,-123 (2)八进制,以0开头。如0123,-0123 (3)十六进制,以0x或0X开头,如0x123,-0x123
补充知识:二进制、八进制、十六进制和十进制 之间的相互转换。
《 C 语言程序设计》,主讲:丁智勇(dzy_sys@)
《 C 语言程序设计》,主讲:丁智勇(dzy_sys@)
2.1 数据类型介绍
数据类型反映数据的存储方式、取值范围、存储空间大 小及运算方式。不同类型的数据在内存中的存储方式、取值 范围、存储空间大小及运算方式是不同的。C程序中常量、变 量、表达式的值和函数值等数据都有明确的类型。
几个重要的概念: (1)数据的存储方式。 (2)数据的取值范围。 (3)数据的存储空间大小。 (4)数据的运算方式和类型转换。
《 C 语言程序设计》,主讲:丁智勇(dzy_sys@)
2.2 整型数据 整型型数据类型分类
数据类型
关键字
有符号字符型 无符号字符型 有符号短整型 无符号短整型 有符号基本整型 无符号基本整型 有符号长整型 无符号长整型 有符号双长整型 无符号双长整型
[signed]char unsigned char [signed] short [int] unsigned short [int]
发出铃声 代表一个反斜杠字符 \ 代表一个单撇号字符 ’ 代表一个双撇号字符 ” 1-3位八进制数代表的字符 1-2位十六进制数代表的字符

丁海玲的C语言课件第五章 文件

丁海玲的C语言课件第五章 文件

2013年7月13日星期六
文件定位函数 文件位置指针 位置指针指向当前读写的位置
2013年7月13日星期六
每次读写文件,位置指针都会相应移动 可以通过相关函数强制修改位置指针
文件定位函数
设置文件位置指针
2013年7月13日星期六
int fseek( FILE *fp, long offset, int base); base为起始点,取stdio.h中定义的宏之一 SEEK_SET SEEK_CUR SEEK_END 0 1 2
文件的读字符串和写字符串函数
函数原型 char *fgets(char *s, int n,FILE *fp); 功能
2013年7月13日星期六
从fp指向的文件读取一个长度为n-1的字符串,存 入起始地址为s的空间。若在读出n-1个字符前遇到 换行符,或者文件结束符,则读操作结束。在读入
的最多n-1个字符后面加上一个字符串结束标
2013年7月13日星期六
每个字节存放一个ASCII码,代表一个字符 可以用任何文本编辑器打开,如记事本
二进制文件
内存中的数据,按照它在内存中的存储形式写到文 件中 能够节省外存空间和转换时间
数值 ASCII 文件 二进制 文件 1
0011 0001
2
0011 0010
3
4
5
6
0011 0011 0011 0100 0011 0101 0011 0110
文件的格式化读写函数
函数原型:
2013年7月13日星期六
int fprintf(FILE *fp , char *fomat, arg1,……, argn) ; 功能 按照format给出的控制符格式,将变元 arg1,……,argn的值写入到fp所指向的文件中去。 返回值:若写入成功,则返回实际写入的数据的个 数;若出错,则返回负数。 例如: fprintf (fp,”%d,%d”,x,y);

C语言程序设计(第二版)课后答案 丁亚涛

C语言程序设计(第二版)课后答案  丁亚涛

习题二一、选择题二、填空题1.182.int float double3.10 114.8 16 105.%三、阅读题1. 10,10,9,102. j=1, i=2k=3,i=3i=3,i=2k=1,i=1习题三一、选择题二、填空题1. 从键盘上读入一个字符在屏幕上输出一个字符 #include<stdio.h>2. 按十进制整数形式输出,有符号按16进制整数形式输出,没有符号按十进制小数形式输出,输出的数据长度为7位,有2位小数按字符形式输出一个字符3. 按十进制整数形式输入数据按十进制整数形式输入三位数据跳过3位十进制数据按字符形式输入一个字符4. 分程序;;5. 大写字母L6. -1三、阅读题1. 6 6 6.00 6.002. x=127,x= 127,x=177,x=7fy=123.4567,y= 123.46,y=123,456703. 2,14. 12345. 4,36. -6,-6习题四一、选择题二、填空题1. 非0 0 、2. k==03. n%7==0&&n%==0 else三、阅读题1. a=1,b=02. c=1习题五一、选择题二、填空题1. for语句 do-while 语句 while 语句2. a=14,y=263. k=14,n=-14. 395. s=196. 222227. 108. 79. 810. 5,5三、改错题1. for( i=0;i<5;i++);for控制部分用分号分隔2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环3. int s=1,i=1;while(i<5){s*=i;i++;}两条语句需要加上花括号4. while(j<10);(分号不能少)5. continue改为break习题六一、选择题二、填空题1. 20 0 192. 数组名3. 越界4. 65. j==k a[j][k]=1; a[j][k]=0;三、阅读题1. 6 5 43 2 12. aaabbbccc ddd3. 2,2,1习题七一、选择题二、填空题1. 整个函数体内局部2. 整型3. k<=breturn y;4. x[i]return(ave)fun(a,20)5. 1;add(n-1);add(n);6. n*f(n-1)0;f(i)三、阅读题1. 10,20,302. 643. 84. hlo5. sum=55习题八一、选择题二、填空题1. 指向取地址2. 2 +23. 284. 4 a[2][0]5. 6 a[3]6. *(p+5)7. ABCD A三、阅读题1. 102. 103. 04. 3,65. 1 2 3 46. 6385四、程序填空题1. a,b,c或者&x,&y,&z max=*b或者max=y max=*c或者max=z2. ++ =*q ++ ++3. a[0] a[i],min min4. int *a,int*b b[j]=a[i] b[i++]5. *str+=3 *str>'Z'&&*str<'a'||*str>'z'6. else 0 t[2*j+1]习题九一、选择题二、填空题1. 结构体成员结构体指针指向2. 343. 224. ex5. (*int)6. {Jan=1,Feb,Mar,Apr,May,Jun,Aug,Sep,Oct,Nov,Dec}7. DDBBCC三、阅读题1. 92. 10,x3. 134. 36 40 415. 06. 38397. 48四、程序填空题1. struct studuent strcmp(stu[i].name,str)==0 break2. a.real+b.real a.virtual+b.virtuala.real*b.real-a.virtual*b.virtuala.real*b.virtual+a.virtual*b.real3. mai=i min=i stu[max].name,stu[max].scorestu[min].name,stu[min].score4. p count++ p->next5. *link struct node top p top。

计算机技术基础(c语言)课程设计-潜艇大战

计算机技术基础(c语言)课程设计-潜艇大战

计算机技术基础课程设计C语言设计报告题目:简单潜艇大战一、选题背景:随着人们生活水平的提高,人们对精神生活的要求也随之提高了,当然,娱乐也成了人们生活中必不可少的一部分,为此,我用C语言编辑了一个简单的简单潜艇大战游戏程序。

它操作起来简单方便,运行速度快。

二、设计思想:简单潜艇大战就是玩家和电脑对战的游戏,玩家在确保本身不被敌人击中的情况下击中敌人则得分,若被敌人击中游戏结束。

此程序利用了if,for,while等多种语句进行了编译,而且多次使用了for语句进行了循环,用if语句进行操作,if语句是用来处理条件选择的一种语句。

此游戏可以任意移动玩家的位置。

三、程序流程图四、程序清单#include <graphics.h>#include <stdlib.h>#include <dos.h>#include <graphics.h>#define KEY_ESC 0x01#define KEY_SPACE 0x39#define KEY_LEFT 0x4b#define KEY_RIGHT 0x4dint speed=10000;char key_state[128],key_pressed[128];/*键盘操作用的变量*/ int score=0;/*得分*/char scorestr[10];/*输出分数的变量*/struct Fire/*子弹的结构体*/{int x;int y;int start;/*是否发射炮弹*/}amyfire[6];/*屏幕上最多有5个敌人可以发子弹*/struct Play/*玩家的结构体*/int x;int y;struct Fire fire[6];life;}play;struct Amy/*敌人的结构体*/{int x;int y;int speed;/*敌人的速度*/int color;int direction;life;}amy[6];void InitGraph(void);/*图形初始化*/void CloseGraph(void);/*图形结束*/void GamePlay(void);/*具体玩游戏*/void DrawPlay(void);/*画玩家*/void DrawAmy(int i);/*画敌人*/void DrawFire(int x,int y,int n);/*画子弹,0去除,1显示*/ void DrawAmyFire(int x,int y,int n);/*画子弹,0去除,1显示*/ void DrawBlack(int x,int y,int color);/*去除原来地方的物体*/ void PrScore();/*输出得分*/int GetKey(int ScanCode);/*这里开始都是按键函数*/void interrupt far (*OldInt9Handler)();void far interrupt NewInt9();void InstallKeyboard();void ShutDownKeyboard();void main(void)InitGraph();/*图形初始化*/GamePlay();/*具体玩游戏*/CloseGraph();/*图形结束*/}void InitGraph(void)/*图形初始化*/{int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();InstallKeyboard();}void DrawPlay(void)/*画玩家*/{setfillstyle(SOLID_FILL,6);bar(play.x-20,play.y-10,play.x+20,play.y);setfillstyle(SOLID_FILL,4);bar(play.x-20,play.y-10,play.x-10,play.y);}void DrawAmy(int i)/*画敌人*/{setfillstyle(SOLID_FILL,amy[i].color);bar(amy[i].x-20,amy[i].y-10,amy[i].x+20,amy[i].y); setfillstyle(SOLID_FILL,GREEN);if(amy[i].direction==1)bar(amy[i].x-20,amy[i].y-10,amy[i].x-10,amy[i].y);elsebar(amy[i].x+10,amy[i].y-10,amy[i].x+20,amy[i].y);}void DrawBlack(int x,int y,int color)/*去除原来地方的物体*/setfillstyle(SOLID_FILL,color);bar(x-20,y-10,x+20,y);}void DrawFire(int x,int y,int n)/*画子弹,0去除,1显示*/ {if(n==0)setfillstyle(SOLID_FILL,BLUE);elsesetfillstyle(SOLID_FILL,0);setcolor(BLUE);fillellipse(x,y,5,5);}void DrawAmyFire(int x,int y,int n)/*画子弹,0去除,1显示*/ {if(n==0)setfillstyle(SOLID_FILL,BLUE);elsesetfillstyle(SOLID_FILL,YELLOW);/*敌人的炮弹是黄的*/ setcolor(BLUE);fillellipse(x,y,3,3);}void PrScore()/*输出得分*/{setfillstyle(SOLID_FILL,8);/*把原来分数去除*/bar(30,0,200,40);setcolor(11);/*输出新得分*/settextstyle(0,0,2);sprintf(scorestr,"%d",score);outtextxy(30,20,scorestr);void GamePlay(void)/*具体玩游戏*/{int i,j;setfillstyle(SOLID_FILL,BLUE);bar(0,100,640,480);setfillstyle(SOLID_FILL,8);bar(0,0,640,99);play.x=200;play.y=99;/*玩家初始位置*/for(i=0;i<6;i++){play.fire[i].start=0;/*一开始的子弹都为没发射状态*/amyfire[i].start=0;amy[i].life=0;}play.life=1;DrawPlay();/*玩家初始位置*/PrScore();/*输出得分*/randomize();while(1){for(i=0;i<6;i++)/*查找玩家是否有发射的子弹*/{if(play.fire[i].start==1)/*发射的子弹*/{DrawFire(play.fire[i].x,play.fire[i].y,0);/*去除原来子弹位置*/play.fire[i].y+=3;DrawFire(play.fire[i].x,play.fire[i].y,1);/*显示新位置*/for(j=0;j<6;j++)/*判断子弹是否击中敌人*/ if(play.fire[i].x>(amy[j].x-22)&&play.fire[i].x<(amy[j].x+22)&&play.fire[i].y>(amy[j].y-14)&&play.fire[i].y<amy[j].y+5)/*击中敌人*/{play.fire[i].start=0;/*子弹消失*/amy[j].life=0;/*敌人生命结束*/score+=10;/*得分增加*/DrawFire(play.fire[i].x,play.fire[i].y,0);/*去除原来子弹位置*/DrawBlack(amy[j].x,amy[j].y,BLUE);/*去除敌人*/PrScore();}if(play.fire[i].y>480)/*子弹超出屏幕就等于消失*/{play.fire[i].start=0;DrawFire(play.fire[i].x,play.fire[i].y,0);}}}for(i=0;i<6;i++)/*敌人炮弹的产生*/{if(amy[i].life==1&&amy[i].color<14&&amyfire[i].start==0)/*敌人发射炮弹的条件*/{amyfire[i].start=1;amyfire[i].x=amy[i].x;amyfire[i].y=amy[i].y-10;}}for(i=0;i<6;i++)/*敌人炮弹移动以及移动*/{if(amyfire[i].start==1)/*子弹存在*/{DrawAmyFire(amyfire[i].x,amyfire[i].y,0);amyfire[i].y-=2;DrawAmyFire(amyfire[i].x,amyfire[i].y,1);/*画敌人炮弹新位置*/}if(amyfire[i].x>(play.x-14)&&amyfire[i].x<(play.x+14)&&(amyfire[i].y+3 )<100)/*击中玩家*/{play.life=0;amyfire[i].start=0;DrawAmyFire(amyfire[i].x,amyfire[i].y,0);DrawBlack(play.x,play.y,8);/*去除玩家*/break;}if(amyfire[i].y<96)/*敌人炮弹超出海洋就消失*/{amyfire[i].start=0;setfillstyle(SOLID_FILL,8);setcolor(8);fillellipse(amyfire[i].x,amyfire[i].y,3,3);}}delay(speed);/*间隔时间可以自己定*/if(play.life!=1)/*玩家被击中*/break;for(i=0;i<6;i++){if(amy[i].life==0)/*出现一个敌人后就跳出循环*/{amy[i].life=1;amy[i].color=rand()%4+10;/*敌人的颜色*/amy[i].y=rand()%300+130;/*高度随机*/amy[i].speed=2+rand()%10;/*敌人的移动速度随机*/amy[i].direction=rand()%2;/*敌人的移动方向,0左边,1右边出来*/ if(amy[i].direction==0)amy[i].x=-20;elseamy[i].x=660;break;}}if(GetKey(KEY_ESC))/*退出键*/break;if(GetKey(KEY_SPACE))/*发射*/{for(i=0;i<6;i++)if(play.fire[i].start==0)/*发射一颗子弹后跳出循环*/{play.fire[i].x=play.x;play.fire[i].y=105;play.fire[i].start=1;break;}}if(GetKey(KEY_RIGHT)&&play.x<620)/*右键盘的控制*/{DrawBlack(play.x,play.y,8);play.x+=10;DrawPlay();}if(GetKey(KEY_LEFT)&&play.x>20)/*左键的控制*/{DrawBlack(play.x,play.y,8);play.x-=10;DrawPlay();}for(i=0;i<6;i++)/*显示敌人*/{if(amy[i].life==1)/*如果敌人存在*/{DrawBlack(amy[i].x,amy[i].y,BLUE);/*原来位置输出海洋颜色*/ if(amy[i].direction==0)amy[i].x+=amy[i].speed;/*敌人横坐标的变化*/elseamy[i].x-=amy[i].speed;DrawAmy(i);/*画敌人*/if(amy[i].x>660||amy[i].x<-20)/*敌人超出屏幕范围就消失*/ amy[i].life=0;}}}if(play.life==0)/*被击中失败的话*/{setcolor(6);settextstyle(0,0,3);outtextxy(250,40,"GAME OVER");}while(1){if(GetKey(KEY_ESC))/*结束游戏按ESC*/}}void CloseGraph(void)/*图形结束*/ {ShutDownKeyboard();closegraph();}void far interrupt NewInt9(void) {unsigned char ScanCode,temp; ScanCode=inportb(0x60);temp=inportb(0x61);outportb(0x61,temp | 0x80); outportb(0x61,temp & 0x7f);if(ScanCode&0x80){ScanCode&=0x7f;key_state[ScanCode]=0;}else{key_state[ScanCode]=1;key_pressed[ScanCode]=1;}outportb(0x20,0x20);}void InstallKeyboard(void){for(i=0;i<128;i++)key_state[i]=key_pressed[i]=0;OldInt9Handler=getvect(9); /*中断向量值*/setvect(9,NewInt9); /*中断程序NewInt9地址存入指定的中断向量表中INT 09H*/}void ShutDownKeyboard(void){setvect(9,OldInt9Handler);}int GetKey(int ScanCode){int res;res=key_state[ScanCode]|key_pressed[ScanCode];key_pressed[ScanCode]=0;return res;}五、主要解决问题的方法及技术关键1、主要问题及解决方法(1)用if语句用来处理条件选择(2)用while,for语句进行多次循环2、技术关键(1)循环的嵌套(2) 条件的判断六、设计结果说明1、设计优点:程序运用多种语句的循环嵌套,条件判断巧妙的设计了这个简单的游戏程序,便于理解。

《C语言程序设计》课程设计任务书cs10_05_08

《C语言程序设计》课程设计任务书cs10_05_08

《C语言程序设计》课程设计(CS2010_05_08)第1部分基础部分一、题目及选题规定(1)安全事故信息管理系统(2)自然灾害信息管理系统(3)贪腐案件信息管理系统题目选择的规定:学号尾数(最后一位)为1、4、7、0者自动选择题目(1),即:安全事故信息管理系统;学号尾数为2、5、8者自动选择题目(2),即:自然灾害信息管理系统;学号尾数为3、6、9者自动选择题目(3),即:贪腐案件信息管理系统。

如果有学生希望选做其他更具有挑战性的题目,必须先征得授课教师的同意,原则上另选题目在难度方面必须高于给定的任务。

二、需要处理的基础数据(1)安全事故信息管理系统对全国各省(直辖市、自治区)发生的各类生产安全事故信息进行管理,主要包括所属省份监管信息,安全事故基本信息,及媒体报道基本信息。

安全事故基本信息参考:附加说明:安全生产事故类型限制为触电、火灾、灼烫、淹溺、高处坠落、坍塌、透水、火药爆炸、瓦斯爆炸、锅炉爆炸、其他爆炸、中毒和窒息、其他伤害13种。

(2)自然灾害信息管理系统对全国范围内发生的自然灾害信息进行管理,主要包括自然灾害分类信息,自然灾害基本信息,以及自然灾害捐款信息。

自然灾害捐款信息参考:附加说明:自然灾害分七类。

(1)气象灾害。

包括热带风暴、龙卷风、雷暴大风、干热风、暴雨、寒潮、冷害、霜冻、雹灾及干旱;(2)海洋灾害。

包括风暴潮、海啸、潮灾、赤潮、海水入浸、海平面上升和海水回灌;(3)洪水灾害。

包括洪涝、江河泛滥;(4)地质灾害。

包括崩塌、滑坡、泥石流、地裂缝、火山、地面沉降、土地沙漠化、土地盐碱化、水土流失;(5)地震灾害。

包括与地震引起的各种灾害以及由地震诱发的各种次生灾害,如沙土液化、喷沙冒水、城市大火、河流与水库决堤。

(6)农作物灾害。

包括农作物病虫害、鼠害、农业气象灾害、农业环境灾害;(7)森林灾害。

包括森林病虫害、鼠害、森林火灾。

(3)贪腐案件信息管理系统对全国各省(直辖市、自治区)发生的贪腐案件信息进行管理,主要包括所属省份监管信息,贪腐案件基本信息,及媒体报道基本信息。

全国信息技术应用水平大赛对C语言教学的启示

全国信息技术应用水平大赛对C语言教学的启示

全国信息技术应用水平大赛对C语言教学的启示丁海燕;周小兵【摘要】The national information technology application proficiency contest is a large scale professional skill competition that is held by Education Management Information Center of Ministry of Education in the whole country in order to improve students' information literacy and computer hands-on ability. IT application contest can help students to improve their study enthusiasm and efficiency. This paper introduces the background of IT application contest, and expatiates functions contributing to study C language, and inspiration from C language programming teaching based on IT application contest.%全国信息技术应用水平大赛,是教育部教育管理信息中心在全国大规模举办的以提高学生计算机动手能力和信息素养为目的的就业技能大赛.信息技术大赛有助于提高学生的学习积极性和效率.介绍了信息技术大赛的背景,阐述了大赛对学生学习C语言的促进作用,以及对C语言程序设计教学的启示.【期刊名称】《实验技术与管理》【年(卷),期】2012(029)009【总页数】3页(P132-134)【关键词】信息技术应用水平大赛;C语言;教学改革【作者】丁海燕;周小兵【作者单位】云南大学信息学院,云南昆明650091;云南大学信息学院,云南昆明650091【正文语种】中文【中图分类】G642.0Abstract:The national information technology application proficiency contest is a large scale professional skill competition that is held by Education Management Information Center of Ministry of Education in the whole country in order to improve students’information literacy and computer hands-on ability.IT application contest can help students to improve their study enthusiasm and efficiency.This paper introduces the background of IT application contest,and expatiates functions contributing to study C language,and inspiration from C language programming teaching based on IT application contest.Key words:IT application proficiency contest;C language;teachingreform自2005年到2011年,教育部教育管理信息中心已经在全国举办了6届ITAT (information technology application training,信息技术及应用培训)就业技能大赛。

数字信号处理算法的定点化及其C语言仿真

数字信号处理算法的定点化及其C语言仿真

数字信号处理算法的定点化及其C语言仿真周海军赵阳(南京邮电学院通信工程系)摘要在DSP开发应用中,使用C语言进行算法仿真既可以验证算法的正确性,也可以为今后在实际DSP芯片上调试提供一个参考。

针对定点DSP使用更为普遍的现状,本文介绍了用C语言如何实现DSP定点算法的仿真,提供了将DSP浮点算法定点化的思想和方法。

关键词数字信号处理数字信号处理器定点浮点Abstract Fixed-point digital signal processors are used commonly in many fields. It's quite important to use C language to simulate at PC platform DSP algorithms when developing DSP applications. Based on the author's rich expe rience in DSP software development, this paper concludes the methods of using C language to implement fix-point DSP algorithms, providing the skills of converting floating-point digital signal processing algorithms into fix-point versions.Key words DSP fix-point floating-pointDSP广义上指数字信号处理理论(Digital Signal Processing),狭义上指数字信号处理器(Digital Signal Processor)。

数字信号处理理论广泛应用于语音、图象、遥测数据、电机控制等各个方面。

现代个人通信、互联网、多媒体应用的飞速发展又推动着数字信号处理理论的进一步发展。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计设计题丁海军本手册提供的设计题大致可分为为3类:第一类侧重于算法设计与实现;第二类侧重于文件操作。

(一)算法设计类题目1. Fibonacci数列。

Fibonacci数列的计算公式如下:fib(1) = 1;fib(2) = 1;fib(n) = fib(n-1) + fib(n-2); //对大于等于3的任意n(1)简单变量“数据平移”方法计算Fibonacci数列的第n项(正整数n通过键盘输入):说明变量old1=1,old2=1,newItem;新的Fibonacci项newItem总是“距它最近”的前两项(old1与old2)的累加和。

而后通过“old1=old2; old2=newItem;”进行所谓的“数据平移”。

接着计算另一个新的Fibonacci项newItem,依次循环,直到求出数列的第n项时为止。

(2)使用数组求出Fibonacci数列的第n项(正整数n通过键盘输入)并显示在屏幕上:说明数组f用来存放Fibonacci数列的各项之值,且仅初始化前两个元素f[0]=1,f[1]=1,而后通过f[i]=f[i-2]+f[i-1];依次计算出f[2]到f[n-1](注意f[n-1]恰为所要求出的第n项)并将该值显示在屏幕上。

2.编程序,循环进行如下的处理过程:由计算机生成简单的四则运算题;用户给出答案;计算机判断对错。

直到用户回答说不再继续做了时结束程序。

提示:可让用户选择指定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题;而后通过使用“rand()%10”或“rand()%100”来获得一个0到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题。

还可进一步对用户所做算术题的对错次数进行记录,结束程序时给出一个某种形式的成绩。

3.数的进制转换(1)将输入的2进制数(一个非“0”即“1”的字符串)化为10进制数。

提示:用字符数组a盛放所输入的二进制数;而后从后往前逐一计算每一位的“位权”w (2的0次方、2的1次方、...),再计算“位权”乘以“位值”并累加到一个初值为0的变量value 上,最后输出该value。

(2)如何把8进制数或16进制数化为10进制数。

(3)如何把某一个k进制的数化为10进制数呢?4.编程序,输入正整数m,它代表一个人民币钱数(元数)。

求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。

注意,现在共有7种元以上面值的人民币纸币,分别为:100,50,20,10,5,2,1。

5.在体育、文艺比赛及选举等打分类项目中,为了公平起见,往往n个评委打出分数后,要去掉一个最高分和一个最低分,然后求取平均得分。

当n较大时(本题设为9),则应取掉两个最高分和两个最低分,然后求取平均分。

编程实现该算法。

6.用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。

思考:利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入任意一个年份和一个月份,则程序就应按格式显示出该年那一个月的月历。

7.有n人围坐成一圈(假设他们的编号沿顺时针方向依次为1到n)。

编程序,使用数组来存放各数据(人员编号),而后从1号人员开始数起(沿顺时针方向),当数到k时(其中k>1由用户通过cin输入指定),则该号人员被“淘汰出局”;接着仍沿顺时针方向从被淘汰出局者的下一人员又重新从1开始数起,数到k后,淘汰第2个人;如此继续,直到最后剩下一个人时停止。

请输出先后被“淘汰”的人的编号。

8.编制具有如下原型的函数prime,用来判断整数n是否为素数:bool prime(int n); 而后编制主函数,任意输入一个大于4的偶数d,找出满足d=d1+d2的所有数对,其中要求d1与d2均为素数(通过调用prime来判断素数)。

如偶数18可以分解为11+7以及13+5;而偶数80可以分解为:43+37、61+19、67+13、73+7。

提示:i与d-i的和恰为偶数d,而且只有当i与d-i均为奇数时才有可能成为所求的“数对”。

9.编一通用排序程序,程序可以对任意类型的数值常数或字符串构成的行进行排序,通过人机对话选择程序是按数值进行排序还是按字符顺序进行排序。

排序是针对数据文件的。

例如初始数据为:12,24,9,128,3,76,345按数值大小排序应为:3,9,12,24,76,128,345按字符串大小排序应为:12,128,24,3,345,76,910.编一程序对至少三个排序方法进行比较,比较方法是生成一组数据(≥400),用选定的排序方法进行排序。

输出每种方法数据比较或交换的次数。

最后输出所花费的时间。

注:此题要用到VC++函数库中time()函数time_t time(time_t *timeptr)参数说明:time_t *timeptr 指向存放自格林威治标准时间1970年1月1日00:00:00:至现在经过多少秒数,类型为time_t的指针变量。

功能描述:函数读取当前时间,然后计算自格林威治标准时间1970年1月1日00:00:00:至现在经过多少秒数,结果被放在类型为time_t的指针变量所指向的地址变量中。

函数返回值:返回自格林威治标准时间1970年1月1日00:00:00:至现在经过多少秒数头文件:time.h11.编一函数(过程)集, 可分别将整数、实数、布尔值转换成相应的字串,及将以字串表示的整数、实数、布尔值转换成相应类型的值。

(整数->字串,实数->字串均应规定位宽)。

12.输入一批学生某门课程考试的各题的分数,计算每个人的总分,统计各分数段0~49, 50~59,160~69,70~79, 80~89, 90~100的人数及占总人数的百分比。

要求输入:课程名称,考试日期,学生班号,学生姓名,学号,课程考试得分。

输出要求:课程名称,考试日期,学生班号;各分数段的人数及百分比。

13.验证卡布列克运算任意一个四位数,只要它们各个位置上的数字是不全相同的,就有这样的规律:(1)将组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;(2)将组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位);(3)求两个数之差,得到一个新的四位数。

(4)重复以上过程,最后得到的结果总是6174。

14.100!的末尾有多少个零由于计算机所能表示的整数范围有限,不可能用求出100!之后再数其尾数有多少个零的方法。

必须从数学上分析100!末尾出产生零的条件。

不难看出:一个整数若含有一个5的因子则必然会在求100!时产生一个零。

因此原问题转换为求1到100这100个整数中包含了多少5的因子。

15.高次方数的尾数求13的13次方的尾数。

乘法的规律:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。

16.输出正六边型编写程序输出边长为N的空心正六边型(N由用户输入),其边由’*”组成。

思考:输出边长为N的空心正M边型(N,M由用户输入)。

17. 输出空心圆编写程序在屏幕上输出一个由”*”围成的空心圆。

由于屏幕是25行×80列,故将园心定在屏幕中心40列的位置,将半径定为10行,这样可保证整个图形显示在一屏中。

利用圆的方程X2+Y2=R2(R=10)可求出坐标(X,Y),然后用对称性算出右侧对应点的坐标。

18.横向绘制余弦曲线在屏幕上用”*”横向显示0~360度的cos(x)曲线。

此题关键在于余弦曲线在0~360度的范围内,一行要显示两个点。

考虑到cos的对称性,将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形是左右对称的。

若将图形的总宽度定义为62列,计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度的y点的坐标就应为62-m。

程序中利用反余弦函数acos计算坐标(x,y)的对应关系。

19.绘制余弦曲线和直线在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(x-1)+31的迭加图形。

其中cos图形”*”表示,f(x)用”+”表示,在两个图形交叉点处则用f(x)图形的符号。

图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。

为此,可以先判定图形的交点,再分别控制打印不同的图形。

20.模拟人工洗牌编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。

使用结构card 来描述一张牌,用随机函数来模拟人工洗牌的过程,最后将洗好的52张牌顺2序分别发给四个人。

对每个人的牌要按桥牌的规则输出。

即一个人的牌要先按牌的花色(顺序为梅花、方块、红心和黑桃)进行分类,同一类的牌要再按A、K、Q、J、…、3、2牌的大小顺序排列。

另发牌应按四个人的顺序依次分发。

注:C随机数函数有:void srand(unsigned seed)功能:函数可以设置rand函数所用得到随机数产生算法的种子值。

任何大于1的种子值都会将rand随机数产生函数所产生的虚拟随机数序列重新设置一个起始点。

int rand(void)功能:此函数可以产生介于0到32767间的虚拟随机数,所谓虚拟随机数的意思就是因为当只设置相同的启动种子值,所产生的数值序列都是可预测的。

要产生不可预测的数值序列,必须通过srand函数不断改变随机数的启始种子值,已产生最佳的随机数。

头文件:stdlib.h21.用户猜测藏物位置:计算机在n行n列(行号为0到n-1,列号为0到n-1)的“棋盘”的某一位置处“藏放一物件”(具体位置通过使用“rand()%10”来随机产生);用户通过输入行列号来“寻找”该物件;若没猜对时计算机要告诉用户与藏放物件的位置有多远(取整后的近似距离)。

思考:若没猜对时也可增加告诉用户藏物的方向信息;另外在猜对结束时,还可告诉用户共猜了几次。

22.编写具有如下函数原型的递归与非递归两种函数f,负责判断数组a的前n个元素是否从大到小完全有序了,是则返回true,否则返回false。

并编制主函数对它们进行调用,以验证其正确性。

bool f(int a[], int n);提示:(1)非递归函数中只需逐对地判断各a[i]与a[i+1]是否都已从大到小有序排列(i = 0,1,…,n-2)。

(2)递归函数中将问题分解处理为:若n=1(即只有1个元素时)则返回true而递归出口;n>1时,若最后一对元素不顺序则返回false,否则进行递归调用(传去实参a与 n-1,去判断前n-1个元素的顺序性),并返回递归调用的结果(与前n-1个元素的是否顺序性相同)。

相关文档
最新文档