杭电第七次作业c语言短学期,杭电短学期:算法与编程.doc
杭电短学期:算法与编程.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
20
积分
还剩页未读,继续阅读
关 键 词:杭电短
学期
算法
编程
资源描述:
1.指示灯控制
一.问题描述:
N盏灯排成一排,从1到N按顺序依次编号。有N个人也从1到N依次编号。第一个人(1号)将灯全部关闭。第二个人(2号)将凡是2和2的倍数的灯打开。第三个人(3号)将凡是3和3的倍数的灯做相反的处理(如果该灯为打开的,则将它关闭;如果该灯为关闭的,则将它打开)。以后的人都和3号一样,将凡是与自己编号相同的灯,以及是自己编号倍数的灯做相反处理。请编写程序实现。要求:程序中要显示每一个人所做工作的过程,例如:当第i个人操作时,则显示将i和i的倍数的灯做相反的处理过程;当第N个人操作之后,显示灯的最后状态。(建议:采用图形法,显示每一盏灯,并为每一盏灯加边框,用不同的颜色显示开灯或关灯)。
二.功能描述:
实现对路灯的控制
三.解决方案(流程图)
先定义一个函数来实现对指示灯的控制,该函数用到了for循环语句,取余(因为跟倍数有关),还有if语句,定义一个指针*light来存放灯亮灭的情况,并为其分配动态内存。最后在主函数中进行函数调用来完成编程。
四.主要函数描述
colloc 动态内存分配函数 可分配连续的存储空间
free 释放动态分配函数存储空间
5. 主要技术问题
程序代码
#include#includeint main(void)
{
int i,N,*light;
void on_off(int n,int k,int p[]);
printf("Enter N:");
scanf("%d",&N);
if((light=(int *)calloc(N,sizeof(int)))==NULL){
printf("Not able to allocate memory.\n");
exit(0); //如果light=0则说明无法分配内存空间,退出
}
for(i=0;i| ai-1, ai ∈ D,ai-1 < ai,i = 2, 3, …, n }
基本操作:
void create ( &tail, m, n ) // 创建循环链表
操作结果:构造一个有序表并保存各节点信息
void run ( &tail, m, n ) // 约瑟夫换的实现
初始条件:有序表已经存在
操作结果:按顺序输出出列者编号
}
循环链表中节点的定义如下所示:
typedef struct LNode
{
int num; //编号
int code; //密码
struct LNode *next;
}LNode, *LinkList;
四.主要技术问题
程序代码
#includeusing namespace std;
typedef struct LNode
{
int num; //编号
int code; //密码
struct LNode *next;
}LNode;
void create(LNode *&tail, int m, int n)
{
LNode *p, *q; //辅助节点
LNode *head; //头结点
if(n < 1) //人数异常, 退出程序
{
cout << "Number error!" << endl;
exit(1);
}
if(n == 1)
{
cout << "1" << endl;
exit(0);
}
//当 n >= 2 时
head = new LNode;
p = head;
p -> num = 1;
cin >> p ->code; //输入第一个密码
for(int i = 2; i <= n; i++)
{
q = new LNode;
p -> next = q;
q -> num = i; //写入编号
cin >> q -> code; //输入其余的密码
p = q; //p指向已建链表的最后一个节点
}
tail = p;
tail -> next = head; //建立循环链表
}
void run(LNode *&tail, int m, int n)
{
LNode *p, *q; //辅助节点
p = tail;
for(int i = 1 ; i <= n; i++)
{
for(int j = 1; j < m; j++) //p定位在出列者的前一人
{
p = p -> next;
}
q = p -> next; //q指向出列者
cout << q -> num; //输出出列者的编号
i < n ? cout << : cout << endl;
m = q -> code; //更新报数上限
p -> next = q -> next; //p指向出列者的下一人
delete q; //删除出列者节点
}
}
int main()
{
LNode *tt; //尾节点
int m; //报数上限
int n; //人数
cout << "Input the number of people: ";
cin >> n;
cout << "Input the first code: ";
cin >> m;
create(tt, m, n);
run(tt, m, n);
return 0;
}
运行结果:
Input the number of people:7
Input the first code:20
3 1 7 2 4 8 4
6 1 4 7 2 3 5
五结论(实验心得)
1、 当输入人数为1时,程序出现了意想不到的错误,在程序中加入对非法数据和边缘数据的处理。
2、 第一组数据输出正确的出列顺序,但第二组却输出了错误的出列顺序,发现是在对m mod n上当结果为0时没有特殊处理,在程序把这个加速操作删去。
3、原来程序是使用全局变量的,但是全局变量不安全,全部改为局部变量。这样一修改后,发现程序在传指针的时候程序崩溃了,想了很久没想到什么原因。后来改成用传引用后程序就能顺利运行,并成为最终这个程序。再后来的时候突然想到了原因,在传指针的时候函数要用指向指针的指针作为形参。
做这个程序是想挑战一下自己的,没想到出了这么多问题,当时很头疼,不过最后还是耐心一个一个的把错误找了出来,这是编的最后一个程序,完成了,很开心。
3.处理文件:通信录
一.问题描述:
从键盘读入姓名,电话号码和住宅地址,人数要10人以上。输入的符号由英文字母、数字及中文构成。将它们写入一个文件。如果这个文件不存在,就写入新文件。如果文件已存在,就将它们写入该文件。程序可添加新的姓名、电话号码和住宅地址。
二.功能描述:
对文件进行灵活操作
三.解决方案(流程图)
(1)如果没有文件名,要求用户输入。
(2)打开文件并显示文件的内容
(3)将字符串写入文本文件
(4)从文本文件读取字符串
(5)更新文件的内容
四.主要函数描述
struct 定义一个结构体存放姓名住址和电话
FILE*fp 打开文件
fclose 关闭文件
五主要技术问题
程序代码
#include#includestruct tx {
char name[100];
char address[100];
char tel[100];
};
void main()
{
FILE*fp;
int n;
struct tx x;
if((fp=fopen("a.txt","w"))==NULL)
{
printf("不能打开文件a.txt!");exit(0);}
printf("人数n=");
scanf("%d",&n);
while(n>0)
{
scanf("%s %s %s",x.name,x.address,x.tel);
fprintf(fp,"%s %s %s\n",x.name,x.address,x.tel);
n--;
}
}
六结论(实验心得)
对文件的处理,还是比较得心应手的,不过创新的部分就有点无从下手了。总体不难,用到了结构体。
4.单词开头大写
一.问题描述:
输入一个由多个英文单词组成的句子,两个单词之间包括空格或标点符号,长度不超过200个字符。最后输出这个英文句子使句中每个单词开头第一个字母大写,其他不变。
2. 功能描述:
从一个英语句子中找出单词,并把单词的首字母变成大写。
3. 解决方案(流程图)
先判断空格和标点符号的出现,利用空格和标点符号区分单词。然后对字母大小写进行代替。
四.主要技术问题
程序代码
#include
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:杭电短学期:算法与编程.doc
链接地址:https://www.renrendoc.com/p-42238338.html
杭电第七次作业c语言短学期,杭电短学期:算法与编程.doc相关推荐
- c语言第七章作业,C语言学习第七章
今天开始学习指针,指针在C语言中具有很重要的地位,按照老师所说,学C学不好指针跟没学一样,可见指针在C语言中的重要地位.废话不多说,首先我们先要知道什么是指针. 指针:指针是一个变量,它存储另一个对象 ...
- 大学c语言第三章作业,c语言程序设计一章部分和第三章习题答案.doc
c语言程序设计一章部分和第三章习题答案 实 验 报 告 课程名称 C语言程序设计A 实验项目 编程环境认知与顺序程序设计 实验仪器 PC机一台 学 院_____信息管理学院_______ 专 业 信息 ...
- 杭电oj1620题c语言答案,杭电oj部分水题 c语言源代码.doc
杭电oj部分水题 c语言源代码 殿剐忱酪短祭幂曝沈脸蛀蓑挞姻扶宠秤蓄幌榆矾巨旷于渍弯史影得熄孟椒菊葫彦籍蛛绊趣庙捣载睹答赊索添垛蝎伙生瞎回悟辅篇狱辗歧病氯急迸怜煽跋屋凡逻甲确烧迟卞姻郸被康少辊蒂刽厂礁 ...
- 杭电oj2033c语言,C语言训练之杭电OJ
C语言训练之杭电OJ 一.水仙花数 Problem Description问题描述 Input输入 Output输出 Sample Input输入样例 Sample Output输出样例 代码如下: ...
- 2019年春季学期第七周作业
A Q 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 2019春第七周作业 我在这个课程的目标是 尽可能了解并且应用指针及文件和数组的知识 这个作业在那个具体方面帮助我实现目标 大致掌 ...
- 20179214 2017-2018-2 《密码与安全新技术》第七次作业
学号20179214 2017-2018-2 <密码与安全新技术>第七周作业 课程:<密码与安全新技术> 班级: 201792 姓名: 刘胜楠 学号:20179214 上课教师 ...
- c语言程序设计个人作业,C语言程序设计-作业集.doc
C语言程序设计-作业集 目 录 作业一2 作业二4 作业三9 作业四13 作业五19 作业六27 作业七36 作业八45 作业九47 作业十51 作业十一55 作业一 一.查找相关资料,回答下列问题 ...
- 2017-2018-2 20179215《密码与安全新技术》第七周作业
2017-2018-2 20179215 <密码与安全新技术> 第七周作业 课程:<密码与安全新技术> 班级: 201792 姓名: 袁琳 学号:20179215 上课教师:谢 ...
- 编译原理大作业-PL0语言编译器
编译原理大作业-PL0语言编译器 一.实验目的 二.源码说明 1.头文件pl0.h (1 词法分析主要数据结构(通过enum symbol类实现) 1.保留字(13+4个): 2.运算符及界符(16+ ...
最新文章
- MySQL服务器的配置教程
- python第三方库numpy-Python中的第三方库——Numpy
- Matlab优化函数中options选项的修改
- 关于Class.forName()
- ServletConfig接口
- Visual Studio 2017 、2019安装Windows SDK失败的解决办法(改盘符引起)
- Vue + Spring Boot 项目实战(七):前端路由与登录拦截器
- idea项目名后出现中括号别名
- jconsole是否可以在生产环境使用_jconsole使用
- 给eclipse添加字体
- PostgreSQL逻辑订阅
- 关于BigDecimal常量的使用ROUND_UP,ROUND_DOWN,ROUND_HALF_UP,ROUND_HALF_DOWN
- 《深入理解C指针》——认识指针
- 第四章 闪烁探测器----闪烁体、选择原则、光收集系统、PMT、替代产品
- 中医针灸学综合练习题库【8】
- 云呼HTML自适应官网源码
- 谷粒学院项目笔记6——oss、EasyExcel、课程分类、nginx
- 安卓adb截屏java_Android 截屏的各种骚操作
- 在VMware中安装CentOS7(超详细的图文教程)
- Java中的JVM关闭钩子
热门文章
- Memory Management Concepts overview(内存管理基本概念)
- 常见图片格式:PNG,JPG/JPEG,BMP
- python pyqt教程_『开发技巧』PyQt5入门教程
- html flex 的高度,html – 使flexbox行成为最短子元素的高度?
- tomcat部署php项目 css样式丢失_webpack 打包编译有些CSS样式莫名消失?
- c++使用单向链表存储一组有序数据_《一起学习java和数据结构》系列-数组和链表...
- oracle 11g 完美卸载,oracle 11g完美卸载
- [洪流学堂]Hololens开发高级篇1:凝视(Gaze)
- 11.10金山面试内容
- node mysql查询回调_nodejs 数据库查询回调问题