计算机程序设计训练(东北石油大学)
案例教学法在《Visual FoxPro程序设计》教学中的应用与实践
【 姜启源 , 5 1 谢金星 , 叶俊. 数学模型 【 . M1 北京: 高等教 育出版社 ,
20 7. 0
建模论文 的完 成都意味着数学知识 的综合 应用 、实践 与创新 。 也强化 了大学生 的固有知识结构。 通过数学建
学法。具体介 绍 了案例教学法在V P 学中的应用与实践 , 高 了学生的动手 能力和创新能力。 F教 提 关键词 : 案例教 学法; P VF 程序设计 ; 学改革 教 中图分 类号 : 6 2 G 4 文献标 志码 : A 文章编号:6 4 92 (02 0 — 13 0 17 — 3 4 2 1 )4 05 — 2
或座谈形式指导学生 ,让学 生明 白数学建模 的重要 意 义, 如在找工作 中的意 义 , 进一 步学习 中的意义 , 在 在
毕业论 文 、 课程 设计 、 拓杯 、 战杯等环 节的重要 意 开 挑
义。 数学 建模在 申请 国外研究生的优势等 。 指导方式可 采用 团队方式 ,~ 人 组建一个 指导小组 。教练组 成员 23 既有 明确 的分 工 ,又充分发挥各 自优势 ,从而形 成合
二 、 F 教学案例的选择 VP
、
培养 目标和教学 目的要求 , 教师在教学过程 中 , 以案例 作资料等 。第 四, 开展形式 多元 的数学建模课外活 动 , 可以是动画式 、 片式 。第五 , 碎 充分利用数学建模基 地 , 开展常规活动外 , 可聘请名 师讲学 等 。第六 , 建立适合
我们结合学生 的实际情况 , 根据教学 的要求 , 我们 选取 了如下几个典 型的案例作为教学使用[ 3 1 。实例 1由 : 的能力等 ,对其后续 的课程乃至从 事的工 作都有不可 替代 的作用 。同时数学建模竞赛 是一次参赛 ,终身受 益 。2 世纪人才培养 的核心 问题是 如何 培养具有极强 1 应用 、实践与创新能力 的人 才。以数学建模平 台为载 体 ,把数学建模融人 到大学 生的生活 、学习的方方 面 面, 有利 于提升大学生 的应用 、 与仓 新能力 。上述 实践 模式或平 台亦可应用到美 国大学生数学 建模竞赛 当中
中国石油大学《C语言程序的设计》期末复习试题与答案
《C语言程序设计》期末复习题一、选择题1.能将高级语言编写的源程序转换成目标程序的是()A.程序 B. 解释程序 C. 编译程序 D.编辑程序2.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是()。
A. 10<a<15B. a==11||a==12||a==13||a==14C. a>10&&a<15D.!(a<=10)&&!(a>=15)3.当调用函数时,实参是一个数组名,则向函数传送的是( )。
A. 数组的长度B. 数组的首地址C. 数组每一个元素的地址D. 数组每个元素中的值4.执行下面的程序段后,k的值是()int k=1,n=325;do { k*=n%10;n/=10;}while(n);A. 3B. 30C. 523D. 3255.若有以下数组说明,则i=6;a[a[i]]元素数值是()。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.3B.8C.6D.56.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()A. for(i=1,p=1;i<=5;i++) p*=i;B. for(i=1;i<=5;i++){ p=1; p*=i;}C. i=1;p=1;while(i<=5){p*=i; i++;}D. i=1;p=1;do{p*=i; i++; }while(i<=5);7.若有:int a[][3]={{1,2,3},{4,5},{6,7},{8}}; 则数组a的第一维的大小为: ( ) A. 12 B. 3 C. 4 D.无确定值8.设有如下程序段,则执行p=s;语句后,以下叙述正确的是( )。
char s[20]= “Bejing”,*p;p=s;A.可以用*p表示s[0]B.s数组中元素的个数和p所指字符串长度相等C.s和p都是指针变量D.数组s中的容和指针变量p中的容相等9.以下正确的函数定义是( )。
东北大学智慧树知到“计算机科学与技术”《C语言及程序设计》网课测试题答案卷1
东北大学智慧树知到“计算机科学与技术”《C语言及程序设计》网课测试题答案(图片大小可自由调整)第1卷一.综合考核(共10题)1.函数必须有返回值,否则不能使用函数。
()A.正确B.错误2.C语言本身没有输入输出语句。
()A.正确B.错误3.若执行fopen函数时发生错误,则函数的返回值是()。
A.随机值B.1C.NULLD.EOF4.若运行以下程序时,从键盘输入25,13,10回车,则输出结果为()。
main(){int a1,a2,a3;scanf("%d%d%d",a1,a2,a3);printf("a1+a2+a3=%d\n",a1+a2+a3);}A.a1+a2+a3=48B.a1+a2+a3=25C.a1+a2+a3=10D.不确定值5.若运行以下程序时,从键盘输入25,13,10回车,则输出结果为()。
{int a1,a2,a3;scanf("%d%d%d",a1,a2,a3);printf("a1+a2+a3=%d\n",a1+a2+a3);}A.a1+a2+a3=48B.a1+a2+a3=25C.a1+a2+a3=10D.不确定值6.下列程序的输出为()。
#include stdio.h;main(){int m=13;float a=12.6,x;x=m/2+a/2;printf(“%f\n”,x);}A.12B.12.3C.12.8D.12.37.设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是()。
A.0~255B.0~65535C.-32768~+32767D.-256~+2558.以下是正确的C语言标识符是()。
A.#defineB._123C.%dD.\n9.设I和x都是int类型,则对于for循环语句for(i=0,x=0; iA.执行8次B.执行9次C.是无限循环D.循环体一次也不执行10.在C程序中main函数必须位于程序的最前面。
东北石油大学Java程序设计学生实验报告.doc
东北石油大学学生实验报告实验课程名称_______________实验一 java 概述一、 实验目的1. 掌握如何下载Java 安装软件包并了解和使用JDK 环境;2. 熟悉JDK 集成环境的基本命令、功能和基本用法,并学会配置Java 环境变量;3. 简述JDK, JRE 的区别并简述path 和classpath 环境变量的作用;4. 学习并熟练掌握使用JDK 环境进行Java 程序开发的全过程(包括:源程序的编 辑、编译、调试、运行和结果查看);二、实验内容 1. JDK 开发包的下载与安装(JDK 版本可选); 2. 根据要求写出统环境变量的配置; 3. 编写一个JAVA 程序进行调试,掌握在JDK 开发包支持下编译和运行的过程; 三、 实验记录1. JDK 开发包的下载与安装(1)从Oracle 官网下载安装包安装,安装路径:C:\Program Files\Javagpa SE D<*volo|^m<*r>r Kit 8 LJpdRo* 131 (G-4QX 立0 M 丘人E H B I. WRn 皿"MIK ■内毛F. OVW1 您 心 9 MK Mteg *31变星值CV):2.配置系统环境变量path和classpath3. 编写java 程序,并编译、运行: 程序如下:public class Students{public static void main(String[] args){System, out. printin(,z 这是我编写的第一个Java 程序! “);}}运行结果:变里名(N):变重值(V):实验二运算符、流程控制语句}运行结果:2.课堂案例2:键盘录入x的值,计算出y的并输出x>=3, y二2*x +l;-l〈x〈3, y 二 2 *x; x<=-l , y 二 2 * x - 1程序如下:import java. util. Scanner; class ExamplelO{public static void main(String[] args){Scanner sc=ncw Scanner (Systom. in); System, out. print In (〃请输入x 的值:〃);int x二sc. nextlnt ();int y=0;if (x>3) {y二2*x+l;}else if (x>~l){y二2*x;}else {y二2*x-l;}System, out. printIn (〃y二〃+y);}}3.实验题1:编程实现1! +2! +3!+・・・..+10!的结果并输出结果。
中国石油大学《程序设计(C语言)》2021年春季学期在线作业(三)附参考答案
答案:A
A.3
B.4
C.0
D.2
答案:C
11.在一个C程序中( )
A.main函数必须出现在所有函数之前
B.main函数可以在任何地方出现
C.main函数必须出现在所有函数之后
D.main函数必须出现在固定位置
答案:B
12.下面有关for循环的正确描述是( )
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.while(‘\0’)
D.for(;’\0’;)
答案:B
7.已定义c为字符型变量,则下列语句中正确的赋值语句是( )
A.c='66';
B.c="66"
C.c=66;
D.c="B"
答案:C
8.以下非法的赋值语句是( )
A.n=(i=2, i);
B.j ;
C.(i 1);
D.x=j>0;
答案:C
9.以下选项中不能正确赋值的是( )
答案:A
15.在C语言中,下列字符常量中合法的是( )
A.′\084′
B.′\x43′
C.′ab′
D.”\0”
答案:B
16ห้องสมุดไป่ตู้执行int j,i=1; j=-i ; 后j的值是( )
A.-1
B.-2
C.1
D.2
答案:A
17.以下选项中可作为C语言合法整数的是( )
A.10110B
B.0386
C.x2a2
D.0Xffa
答案:D
18.以下选项中合法的用户标识是( )
A.long
B._2Test
C.3Dmax
中国石油大学C语言程序设计第一册在线作业答案
中国石油大学C语言程序设计第一册在线作业答案第一次在线作业单选题(共22道题)收起1.(2.5分)一个c语言程序总是从()开始执行。
a、a.主过程b、b.主函数c、c.子程序d、d.主程序我的答案:b此题得分:2.5分2.(2.5分后)以下描述不恰当的就是:()。
a、a.在c程序中,语句之间必须要用分号\分隔b、b.若a就是实型变量,c程序中a=10就是恰当的,因为实型变量中容许放置整型数c、c.在c程序中,无论是整数还是实数都能够恰当有误地则表示d、d.在c程序中,%就是就可以用作整数运算的运算符我的答案:c此题得分:2.5分3.(2.5分后)以下不恰当的c语言标识符就是()。
a、a.abcb、b.abcc、c.a_bcd、d.ab.c我的答案:d此题罚球:2.5分后4.(2.5分)下列字符串是标识符的是:()。
a、a._hjb、b.9_studentc、c.longd、d.line1我的答案:a此题罚球:2.5分后5.(2.5分)以下说法中正确的是()。
a、a.c语言程序总是从第一个定义的函数已经开始继续执行b、b.在c语言程序中,要调用的函数必须放在main()函数中定义c、c.c语言程序总是从main()函数开始执行d、d.c语言程序中的main()函数必须放到程序的已经开始部分我的答案:c此题得分:2.5分6.(2.5分后)在c语言中,字符型数据在内存中以()形式放置。
a、a.原码b、b.bcd码c、c.反码d、d.ascii码我的答案:d此题罚球:2.5分后7.(2.5分)若有定义:inta=7;floatx=2.5;y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。
a、a.2.500000b、b.2.750000c、c.3.500000d、d.0.000000我的答案:a此题得分:2.5分8.(2.5分)设有说明:charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为()。
单片机课程设计—8个按键控制8个LED自动设定控制流水灯
东北石油大学之杨若古兰创作实习总结陈述实习类型生产实习实习单位东北石油大学实习基地实习起止时间 2018 年 7 月 7 日至 2018 年 7 月 16 日指点教师刘东明、孙鉴所在院(系) 电子科学学院班 级电子科学与技术 15-2先生姓名学 号 1509012402 2018 年 7 月 16 日目录第 1 章 按键控制流水灯设计 1 1.1 实习目的错误!未定义书签。
1.2 实习请求错误!未定义书签。
第 2 章 电路工作道理 22.5 本章小结 6 第 3 章 C 程序设计 73.1 程序设计流程图 73.3 本章小结 9 总结及体会 10 参考文献 11 附录 12第1章 按键控制流水灯设计1.1 实习目的本次实习以 STC89C52 单片机为控制核心.通过它实现对八盏 LED 灯的亮灭进 行设定,并在设定完成以后能够按照之前的设定实现流水灯后果.内部电路为按键 控制流水灯.P0 口控制八盏灯,P1 口控制矩阵键盘,P2 口控制独立按键,程序利 用单片机内部计时器间断实现流水后果.请求流水灯能够自行设定、暂停、复位, 工作波动,可靠性高.生产实习的次要目的是培养理论联系实际的能力,提高实际动手操纵能力.本 专业的生产实习旨在广泛了解实际单片机电子产品工作的全过程,熟悉电子产品 的次要技术管理模式,并在实习的操纵过程中进修把握电子产品的焊接安装调试 的实际操纵技能.巩固和加深理解所学的理论,开阔眼界,提高潜力,为培养高素 质大学本科人才打下须要的基础.透过进修,是理论与实际相结合,能够使先生加 深对所学常识的理解,并为后续专业课的进修带给须要的感性常识,同时直接了 解本业的生产过程和生产材料,为将来走上工作岗位带给须要的实际生产常识.1.2 实习请求1.深入进修单片机开发软件 Keil 的使用,熟悉单片机电路设计,根据实际利 用电路对程序进行调试.2.熟悉单片机硬件开发平台的利用,把握单片机编程器、仿真器的使用,能 检查和分析软硬件故障.3.体会单片机内部资本的功能使用,以单片机开发板现有资本进行利用性设 计.把握单片机经常使用核心器件的使用.4.对去年生产实习焊接的 51 开发板的程序有更深入的了解.第2章 电路工作道理2.1 STC89C52 单片机工作道理单片机(Microcontrollers)是一种集成电路芯片,是采取超大规模集成电路技 术把具无数据处理能力的地方处理器 CPU、随机存储器 RAM、只读存储器 ROM、 多种 I/O 口和间断零碎、定时器/计数器等功能(可能还包含显示驱动电路、脉宽 调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个 小而完美的微型计算机零碎.例如 STC89C52 单片机是通过 32 个输入输出口的高低电平变更来实现对内部 电路的控制,痛过响应的程序实现对 32 个输入输出口的控制,这就是单片机工作 的最基来源根基理.如图 2-1 所示为 STC89C52 单片机工作的最小零碎电路图.图 2-1 STC89C52 最小工作零碎 全部电路使用 5V 直流电源供电,其中复位电路能够使单片机复位;晶振电路 相当于单片机的心脏,为单片机提供 12MHz 的高频脉冲使单片机正常工作; MAX232 是将单片机输出的 TTL 电平转换成 PC 机能接收的 232 电平或将 PC 机输 出的 232 电平转换成单片机能接收的 TTL 电平,实现单片机与 PC 机之间的通信, 以便于下载程序.2.2 LED 工作道理LED(light-emitting diode),即发光二极管,俗称 LED 小灯,51 开发板使用 的是普通贴片发光二极管.这类二极管通常的正导游通电压是 1.8~2.2V 之间,工作 电流普通在 1~20mA 之间.其中当电流在 1~5mA 之间变更时,随着通过 LED 的电 流愈来愈大,肉眼会感觉到这个灯愈来愈亮,而当电流从 5~20mA 变更时,看到 的发光二极管的亮度变更不明显了.当电流超出 20mA 时,LED 就有烧坏的风险. 所以在 51 开发板的使用中须要根据响应的电流参数设计一个与 LED 串联的限流 电阻.如图 2-2 所示为单片机 I/O 口控制 LED 的电路道理图.图 2-2 单片机控制 LED 电路图 图中 PR2 为排阻,在电路中起到限流感化,防止 LED 被烧毁.由于单片机是可 以编程控制的,即 P00~P07 的高低电平也是能够控制的,所以对应的 8 个 LED 的 亮灭形态也是能够控制的,这就达到了单片机控制 LED 的目的.2.3 按键工作道理 2.3.1 独立按键工作道理独立式按键比较简单,它们各自与独立的输入线相连接,如图 2-3 所示.图 2-3 独立式按键道理图 4 条输人线接到单片机的 I/O 口上,当按健 K1 按下时,+5V 通过电阻然后再 通过按键 K1 终极进人 GND 构成一条通路,这条线路的全部电压都加到这个电阻 上,P20 这个引脚就是个低电平.当松开按健后,线路断开,就不会有电值通过, P20 和+5V 就应当是等电位,是个高电平.我们就可以通过 P20 这个 10 口的高低电 平来判断是否有按键按下.2.3.2 矩阵按键工作道理在某一个零碎设计中,如果须要使用很多按键时,做成独立按键会占用大量 I/O 口,是以援用了矩阵键盘的设计.如图 2-4 所示为 51 开发板上的矩阵按键电路 道理图,使用 8 个 I/O 口来实现 16 个按键.图 2-4 矩阵按键道理图 在程序设计平分别用四个 I/O 口扫描 4 行,另外 4 个扫描 4 列,确定了按键在 哪行哪列也就确定了按键的具体地位.2.4 全体电路图如图 2-5 所示为键盘控制 LED 流水灯全体电路图.图 2-5 总电路道理图2.5 本章小结本章次要介绍了单片机最小零碎、LED 工作道理、按键工作道理.并从硬件电 路的设计出发,简单分析单片机控制 LED 的工作过程.理论分析基本完成,接上去 就是具体的程序设计与调试,通过具体的程序来实现响应的功能,这也是单片机 开发中最具技术含量的环节之一.第3章 C 程序设计3.1 程序设计流程图如图 3-1 所示为主程序流程图.开始 开计时器间断K1 是否按下 否是扫描矩阵键盘选 择须要点亮的 LED是K2 是否按下 否K3 是否按下 否是保管选择的数据 择须要点亮的 LED计时器间断程序选择 数据实现 LED 流水灯图 3-1 程序设计框图 主程序由 3 个独立按键控制,K1,K2 和 K3.开始从主函数履行程序语句,不 竭轮回扫描按键,当 K1 按下时,进入选择形态,程序会不竭地扫描矩阵键盘,通 过矩阵键盘选择须要点亮的 LED;选择结束后按下 K2,程序会将选定后的数据送 入间断程序,间断程序根据接收的数据选泽对应的 LED 实现流水灯后果;当按下K3 后程序又会进入矩阵键盘扫描从头选择 LED.3.2 实验结果如图 3-2 所示,当按下 K1 后进入选择定形态.图 3-2 选择 LED 如图 3-2,控制矩阵键盘分别选择了第 1,6,8 盏灯. 再按下 K2 键,让选择的第 1,6,8 盏灯实现流水灯后果.如图 3-3 所示.图 3-3 流水灯 如图 3-3,按下 K2 以后,LED 由之前第 1,6,8 盏灯亮变成第 1,2,7 盏灯 亮,实现了流水灯右移的后果. 当按下 K3 键,实验结果如图 3-4 所示.图3-4回到初始形态由图3-4可知,当按下K3键以后,程序又回到了设定LED的形态.3.3本章小结由实验结果可以看出,本次单片机课程设计已达到预期请求,电路工作波动,满足设计请求.在全部设计过程中,程序设计与调试最为复杂,出现过按键灯不亮,没有出现滚动流水等景象等一系列程序成绩.但终极在不竭地检查、调试以后,成绩也逐步得到解决.终极实现按键控制流水灯的后果.总结及体会本次设计通过对单片机进行编程控制,进而控制内部电路,成功地设计了八个按键控制八盏灯亮灭实现流水灯的后果.深入了解到单片机开发软件Keil的使用,熟悉单片机电路设计,根据实际利用电路对程序进行调试.熟悉单片机硬件开发平台的利用,把握了单片机编程器、仿真器的使用,能检查和分析软硬件故障.体会到单片机内部资本的功能使用,以单片机开发板现有资本进行利用性设计.通过此次实习使我进一步弄懂所学到的课本常识,巩固和深化对单片机的结构、指令零碎、间断零碎、键盘/显示零碎、接口技术、零碎扩展、定时/控制、程序设计、利用开发、等基本理论常识的理解,提高单片机利用于技术的实践操纵技能,把握单片机利用零碎设计、研制的方法,培养利用单片机进行科技革新、开发和创新的基天性力,为结业后从事与单片机相干的工作打下必定的基础.参考文献[1]童诗白,华成英.模拟电子技术基础(第四版)[M].北京:高等教育出版社,2006.[2]阎石.数字电子技术基础(第五版)[M].北京:高等教育出版社,2006.[3]韩建,全星慧,四周.电子技术课程设计指点[M].哈尔滨:哈尔滨工程大学出版社,2014.[4]黎小桃.数字电子电路分析与利用[M].北京:北京理工大学出版社,2014.[5]高吉祥. 电子技术基础实验与课程设计[M].北京:电子工业出版社,2002.[6]陈明义.电子技术课程设计实用教程(第3版) [M]. 长沙:中南大学出版社,2010.[7]程春雨. 模拟电子技术实验与课程设计[M].北京:电子工业出版社,2016.[8]宋雪松,李东明,崔长胜. 手把手教你学51单片机(C说话版)[M]. 北京:清华大学出版社,2014.附录:#include <reg52.h>#include <intrins.h>#define KEY P1sbit k1=P2^0;sbit k2=P2^1;sbit k3=P2^2;sbit k4=P2^3;unsigned char LED=0x00,LED1=0x00;unsigned char x=0;unsigned char KeyValue;unsigned char A1=0x00,A2=0x00,A3=0x00,A4=0x00,A5=0x00,A6=0x00,A7=0x00,A8=0x00;void Delay10ms(unsigned int c);void KeyDown(); //矩阵键盘检测void kongzhil();void kongzhi2();void main(void){ TMOD=0x01; //定时器工作形态为1 TH0=(65536-50000)/256;TL0=(65536-50000)%6;EA=1; //开总间断ET0=1; //开定时器间断TR0=1; //开启定时器while(1){ int n=0;if(k1==0){Delay10ms(1);if(k1==0)n=1;}if(k3==0){Delay10ms(1);if(k3==0)n=3;}if(k4==0){Delay10ms(1);if(k4==0)n=4;}switch(n){case 1:KeyDown();break;case 3:kongzhil();break;case 4:kongzhi2();break;default:break;}}}void KeyDown(void){ int k=1;while(k){char a=0;KEY=0x0f;if(KEY!=0x0f){Delay10ms(1); //延时消抖if(KEY!=0x0f){KEY=0X0F;switch(KEY) //扫描行{case(0X07): KeyValue=0;break;case(0X0b): KeyValue=4;break;case(0X0d): KeyValue=8;break;case(0X0e): KeyValue=12;break;}KEY=0XF0;switch(KEY) //扫描列{case(0X70): KeyValue=KeyValue+3;break;case(0Xb0): KeyValue=KeyValue+2;break;case(0Xd0): KeyValue=KeyValue+1;break;case(0Xe0): KeyValue=KeyValue;break;}while((a<50) && (KEY!=0xf0)) //松手检测{Delay10ms(1);a++;}switch(KeyValue) //选择须要亮的灯{case(0):A1=~A1;break;case(1):A2=~A2;break;case(2):A3=~A3;break;case(3):A4=~A4;break;case(4):A5=~A5;break;case(5):A6=~A6;break;case(6):A7=~A7;break;case(7):A8=~A8;break;default:break;}}}if (A1==0xff) //保管数据(LED1=LED1|0x80);else if(A1==0x00)(LED1=LED1&0x7f);if (A2==0xff)(LED1=LED1|0x40);else if(A2==0x00)(LED1=LED1&0xbf);if (A3==0xff)(LED1=LED1|0x20);else if(A3==0x00)(LED1=LED1&0xdf);if (A4==0xff)(LED1=LED1|0x10);else if(A4==0x00)(LED1=LED1&0xef);if (A5==0xff)(LED1=LED1|0x08);else if(A5==0x00)(LED1=LED1&0xf7);if (A6==0xff)(LED1=LED1|0x04);else if(A6==0x00)(LED1=LED1&0xfb);if (A7==0xff)(LED1=LED1|0x02);else if(A7==0x00)(LED1=LED1&0xfd);if (A8==0xff)(LED1=LED1|0x01);else if(A8==0x00)(LED1=LED1&0xfe);LED=LED1;if(k2==0){Delay10ms(1);if(k2==0){k=0;LED=LED1;};};if(k4==0){Delay10ms(1);if(k4==0){k=0;kongzhi2();};};}}void kongzhil(void){int m=1;LED1=LED,LED=0x00;while(m){if(k3==0){Delay10ms(1);if(k3==0){m=0,LED=LED1;};}}}void kongzhi2(void){LED1=0x00;LED=0x00;A1=0;A2=0;A3=0;A4=0;A5=0;A6=0;A7=0;A8=0;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%6;x++;if(x==6) //6*50MS=300MS{x=0;P0=LED;LED = _crol_(LED,1);//if(++i==8) i=0;}}void Delay10ms(unsigned int c) {unsigned char a, b;for (;c>0;c--){for (b=38;b>0;b--){for (a=130;a>0;a--);}}}。
东北石油大学c语言程序题
程序题第六章1.编写函数,求出能整除x且是偶数的各整数,并按从小到大的顺序依次存放在y数组中,这些数的个数通过函数值返回主调函数。
例如输入60则应输出2 4 6 10 12 20 30 60请将下面的程序复制粘贴到VC中,完善函数fun的函数体,运行正确后,再将完整的程序复制粘贴到填写答案处。
}#include "stdio.h"int fun(int x,int y[]){}main(){ int x,a[100],n,i;scanf("%d",&x);n=fun(x,a);for(i=0;i<n;i++)printf("%10d",a[i]);printf("\n");}我的答案:得分:9.0分#include "stdio.h"int fun(int x,int y[]){int i,j=0;for(i=2;i<=x;i=i+2)if(x%i==0){y[j]=i;j++;}return(j);}main(){ int x,a[100],n,i;scanf("%d",&x);n=fun(x,a);for(i=0;i<n;i++)printf("%10d",a[i]);printf("\n");2.编写函数,求一组数中最大值出现的位置(如果最大值出现多次,求出第一次出现的下标)。
请将下面的程序复制粘贴到VC中,完善函数fun的函数体,运行正确后,再将完整的程序复制粘贴到填写答案处。
#include "stdio.h"int fun(int a[],int n){}main(){ int a[100],n,i;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);printf("%d\n",fun(a,n));}我的答案:得分:7.0分#include "stdio.h"int fun(int a[],int n){int i,max,k;max=a[0];k=0;for(i=1;i<n;i++)if(a[i]>max){max=a[i];k=i;}return(k);}main(){ int a[100],n,i;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);printf("%d\n",fun(a,n));}qwertyuio3则应输出rtyuio请将下面的程序复制粘贴到VC中,完善函数fun的函数体,运行正确后,再将完整的程序复制粘贴到填写答案处。
东北石油大学C实验教案2017年度第3学期
$ $$$ $$$$$ $$$$$$$ $$$$$$$$$
$$$$$ $$$$ $$$ $$ $
$$$$$ $$$$$ $$$$$ $$$$$ $$$$$
实 验 项 目
5. 按如下格式打印直角九九乘法表 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
1. 图形输出的分析步骤为什么? 2. 在使用循环的过程中应注意哪些问题?
思 考 题
一、实验目的 二、实验项目(3、4 题) 三、实验内容(程序)
实 验 报 告 要 求
四、实验结果(运行结果)
实验名称
一维数组
实验次数
第 6 次
是否上交报告
是
备注
实验内容(教学过程) 实 验 目 的
1.掌握一维数组定义、初始化和元素引用的方法。 2.掌握一维数组的输入、输出方法。 3.掌握一维数组存储和移动的方法。 4.掌握一维数组的常用算法。 1.有一数组内放 5 个整数,要求找出第一次出现的最小数和它的下标,然后 把它和数组中最前面的元素即第一个数对换位置。 2.找出含有 10 个元素一维组数中的最大值和最小值,并互换这两个数的位 置。 3.从键盘上输入若干(<20)个学生的成绩,统计计算出平均成绩,并输出 低于平均分的学生成绩,用输入负数结束输入。 4.用数组存储并输出 Fibonacci 数列的前 20 项,按 5 个一行输出 5.一个数列的前三个数是 0、0、1,以后的每个数都是前三个数的和,编程 求改数列的前 20 项,并按每行 4 个数的格式输出。 6.对 n 个整数组成的一维数组按逆序重新存储并输出(n<10) 。 7.一个数组有 8 个元素,将前 3 个元素通过移动串到后 3 个位置上,如果其 初始数据为: 1 2 3 4 5 6 7 8 不增加数组,也不增加数组的存储单元,通 过移动数组元素将数组变化为: 4 5 6 7 8 1 2 3 8.在一维数组中有 10 个整数,求出其中能被 5 整除的所有数的和。 9.将 10 个数中的所有偶数除以 2,所有奇数乘以 2 后输出这些数值。 10.在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序 排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。 11.从键盘上输入 10 元素的值存入一维数组 m 中,然后将下标为(0. 2. 4. 6. 8)的元素值赋值给数组 n,最后输出数组 n 的内容。 12.输入 10 个正整数到 a 数组中,求 a 数组中素数的平均值。 13.输入 10 个无序的整数,用选择法对 10 个整数按升序排序,注意要求只 排 3 轮。 14.对 n 个整数组成的一维数组用顺序法按从小到大排序后输出(4<n<10) , 要求排序只排 3 轮。 1. 使用一维数组时应注意哪些问题? 2. 怎样使随机函数每次运行产生不同组的测试数据? 3. 选择法排序的算法是怎样描述的?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北石油大学计算机程序设计训练2014年6月28日程序设计训练任务书课程C计算机程序设计训练专业测控姓名*** 学号***主要内容:【程序 1】题目:有一个已经排好序的数组。
现输入一个数,要求按原来的规律将它插入数组中。
【程序2】题目:文件操作,要求以二进制方式打开命令行参数中指定的文件,并将二进制方式读取的文件数据(0和1)存储为文本文件,即文件内容是ASCII的0与1方式。
【程序 3】题目:空间直角坐标系变换程序,在空间直角坐标系中,如果保持原点不动,x轴偏转α度,y 轴偏转β度,求z轴偏转的角度以及z轴在原坐标系中XY平面的投影.【程序 4】题目:有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
【程序 5】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
【程序 6】题目:要求设计一个程序对从键盘输入一个字符串str,str长度小于99,然后在屏幕打印出一个新字符串,新字符串的构成为AABB10strXCCDD,其中AABB和CCDD是开始标志和结束标志,第5、6位是字符串str的长度,X是整个字符串的逻辑异或结果。
【程序 7】题目:要求设计一个程序提取程序6的输出字符串中的内容,并打印到屏幕上。
【程序 8】题目:使用递归方式求解hanoi塔问题。
【程序 9】题目:设计两个链表,分别输入2个和3个数据,然后连接两个链表,采用搜索的方式找出链表中最大值与最小值。
【程序10】题目:海滩上有一堆桃子,五只猴子来分。
第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?【程序11】题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。
输入的字符串以!结束。
【程序12】题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。
基本要求:1.至少完成10个程序,程序运行结果正确2.程序可读性好,要有注释3.所有程序完成后,统一保存为.c文件,用winrar压缩后发送到邮箱*************4.撰写训练报告,7月10日交到自动化馆104完成期限201*年7月1**号指导教师***201*年6 月**日目录[程序1] (2)[程序2] (3)[程序3] (4)[程序4] (5)[程序5] (6)[程序6] (7)[程序7] (8)[程序8] (10)[程序9] (11)[程序10] (12)题目:有一个已经排好序的数组。
现输入一个数,要求按原来的规律将它插入数组中。
思路:随机产生一个数组再排好顺序,输入一个数与原数组中的数作比较,符合条件的数后面的数都往后移动一个位置,空出一个位置留给输入的数.再输出.程序:#include<stdio.h>#include<stdlib.h>#include<time.h>main(){int n,a[100],i,j,t;srand(time(0));for(i=0;i<10;i++)a[i]=rand()%100+1; //随机产生十个数for(i=0;i<9;i++) //排序for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i<10;i++)printf("%5d",a[i]); //输出printf("\n");scanf("%d",&n);for(i=0;i<10;i++)if(n<a[i])break; //将n与数组中的数作比较当n小于数组中的数时打断循环for(j=10;j>i;j--) //将大于n的数往后移一个位置a[j]=a[j-1];a[j]=n; //将n插入空位中printf("\n");for(i=0;i<11;i++) //输出printf("%5d",a[i]);printf("\n");}运行截图:题目:有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
思路:先把人数按顺序排好,然后存入数组中,然后将数组中的数据按123循环排列,最后将数组中的3好去处,把最后一位此时的顺序输出。
程序:程序:# include <stdio.h>main(){int n, i, k, m, a[100]; //定义所需变量int *p;p = a;printf("请输入人数:");scanf("%d", &n);for(i = 0; i < n; i++) //在数组a中存放人数a[i] = i + 1;i = 0; k = 0; m = 0;while(m < n-1){if(a[i] != 0) k++; //对数组a中的数以1,2,3循环排列if(k == 3) //将a中为3的去除{a[i] = 0;k = 0;m++;}i++;if(i == n) i = 0;}while(!(*p)) p++;printf("最后留下的是原来第%d号的那位\n",*p);}运行截图:题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
思路:用fun求出字符串的字符个数并作为返回值,在主函数中输入字符串并调用fun。
程序:#include<stdio.h>int fun(char a[]){int i;for(i=0;a[i]!='\0';i++); //计算字符串a中的字符总数return i;}main(){char a[100];int k;gets(a);k=fun(a); //调用函数funprintf("%d\n",k); //输出}运行截图:题目:要求设计一个程序对从键盘输入一个字符串str,str长度小于99,然后在屏幕打印出一个新字符串,新字符串的构成为AABB10strXCCDD,其中AABB和CCDD是开始标志和结束标志,第5、6位是字符串str的长度,X是整个字符串的逻辑异或结果。
思路:先定义字符串,然后将输入数据存放到字符串中,运用循环体函数求出字符串函数中字符的个数程序:#include <stdio.h>#include <string.h>#include <stdlib.h>main(){ char str[99]; //定义字符串int i,n,x;n=0;gets(str);for(i=0;str[i]!='\0';i++) //求出字符串中字符的个数{ n++;x=str[i]^str[i+1]; }printf("AABB%d",n);for(i=0;str[i]!='\0';i++)printf("%c",str[i]);printf("%dCCDD\n",x);}运行截图:题目:要求设计一个程序提取程序6的输出字符串中的内容,并打印到屏幕上。
思路:运用fofen函数将文件以只读方式打开,然后用putchar将字符串输出。
程序:#include <stdio.h>#include <stdlib.h>main(){ char ch;FILE *fp;if((fp=fopen("tca.txt","r"))==NULL){ printf("bu neng da kai tca.txt!\n");exit(0); //验证文件是否能够打开}else printf("cheng gong!\n");ch=fgetc(fp); //读取文件的内容while(ch!=EOF){ putchar(ch);ch=fgetc(fp);} //输出内容putchar('\n');fclose(fp);}运行截图:题目:使用递归方式求解hanoi塔问题。
思路:运用递归法,先将64个盘子转换为63个盘子和一个盘子,再将A塔上的63个圆盘借助C塔,移到B塔上;再将A塔上最后的一个盘子移到C塔上;最后将B塔上的63个盘子,借助A塔,移到C 塔上。
同理,移动63个盘子的问题转化为移动62个盘子的问题,以此类推,直到结束。
程序:#include<stdio.h>main(){void HN(int n,char a,char b,char c);int m;printf("请输入盘子个数:"); //输入数据scanf("%d",&m);printf("%d个盘子移动的步骤如下:\n",m);HN(m,'A','B','C');}void HN(int n,char a,char b,char c){if(n==1)printf("from%c to %c\n",a,c);else{HN(n-1,a,c,b); //借助c将a移到bprintf("from%c to %c\n",a,c);HN(n-1,b,a,c); //借助a将b移到c}}运行截图:题目:设计两个链表,分别输入2个和3个数据,然后连接两个链表,采用搜索的方式找出链表中最大值与最小值。
思路:将两组数据分别存入到两个数组之中,然后将第二个链表的首接到第一个链表的尾,然后比较出最大值与最小值,输出结果。
程序:#include <stdio.h">#include <malloc.h>#define str struct stdstr { int num; str *next; }; //定义结构体函数str *fun(int n){int k;str *p1,*end,*head; //定义列表的头指针,尾指针printf("shu ju:\n");for(k=0;k<n;k++){p1=(str*)malloc(sizeof(str));scanf("%d",&p1->num);p1->next=NULL;if(k==0) { head=p1;end=p1; }else {end->next=p1;end=p1; }}return(head);}main(){str *head,*head1,*head2,*p1,*p2;int n,max,min;head1=fun(2); //调用结构体函数head2=fun(3); //调用结构体函数p1=head1;head=head1;p2=head;while(p1->next!=NULL){ p1=p1->next; p2->next=p1; p2=p1; }p1=head2;p2->next=p1; //将第二个链表的头接到第一个链表的尾部while(p1->next!=NULL){ p1=p1->next;p2->next=p1;p2=p1; }p1=head;max=min=p1->num;while(p1->next!=NULL) //判断新链表中的最大值与最小值{p1=p1->next;if(p1->num<min) min=p1->num;if(p1->num>max) max=p1->num;}printf("max=%d,min=%d\n",max,min); //输出结果}运行截图:题目:题目:海滩上有一堆桃子,五只猴子来分。