计算机程序设计训练(东北石油大学)
- 格式:doc
- 大小:550.54 KB
- 文档页数:16
《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卷一.综合考核(共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 概述一、 实验目的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语言程序设计第一册在线作业答案第一次在线作业单选题(共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值的数据类型为()。
东北石油大学之杨若古兰创作实习总结陈述实习类型生产实习实习单位东北石油大学实习基地实习起止时间 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--);}}}。
程序题第六章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的函数体,运行正确后,再将完整的程序复制粘贴到填写答案处。
东北石油大学计算机程序设计训练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); //输出结果}运行截图:题目:题目:海滩上有一堆桃子,五只猴子来分。