实验1 输入输出操作参考答案
c程序设计实验参考答案

main( )
{ float a,b,c;
float s,v;
scanf("%f,%f,%f,%f",&a,&b,&c);
s=a+b+c;
v=s/3.0;
printf("\n%7.1f,%7.1f",s,v);
}
实验五参考答案
一.1、a=10,b=30,c=10
}
2、main()
{int i;
double m=100000,n,s;
n=0.01;
s=0;
for(i=1;i<=30;i++)
{s+=n;
n=n*2;
}
printf("%f %f\n",s,m*30 );
}
实验八参考答案:
一.1、s=12345
2、7,
5,
3,
3、<1,2>=6
二.1、% for(j=k;j>0;j--)
第4行改为scanf("%d",&a[i]);
第12行改为printf("av=%d\n",av);
四.1、分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,取出其中两种作为参考。
方法一:起泡排序
从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比
{ case 10:
case 9: ch='A'; break;
case 8: ch='B'; break;
C语言程序设计实验指导书参考答案_第二版

C 语言程序设计 上机实验指导与习题(第二版) 参考答案(仅供教师内部参考)来自华南农业大学目 录
上机实验 ................................................................................................................................................................... 1 实验 1 C 语言程序初步 .................................................................................................................................... 1 一、实验目的............................................................................................................................................ 1 二、实验内容.................................................................................................................................
实验一 三极管输入输出特性实验报告

三极管输入输出特性姓名:班级:学号:指导老师:1.实验背景输入特性曲线(共射极)i=f(v BE) v CE=const.B(1)当v CE=0V时,相当于发射结的正向伏安特性曲线。
(2)当v CE≥1V时,v CB= v CE - v BE>0,集电结已进入反偏状态,开始收集电子,基区复合减少,同样的v BE下i B减小,特性曲线右移。
图1输出特性曲线(共射极)iC=f(vCE) iB=const.饱和区:vCE很小,iC iB,三极管如同工作于短接状态,一般vCE vBE,此管压降称为饱和压降。
此时,发射结正偏,集电结正偏或反偏电压很小。
截止区:iB=0,iC= iCEO0,三极管如同工作于断开状态,此时, vBE小于死区电压。
放大区: vBE >Vth,vCE反电压大于饱和压降,此时,发射结正偏,集电结反偏。
图22.实验目标1.掌握不同连接时的三极管的伏安特性曲线2.掌握利用PSpice A/D仿真功能中提供直流扫描分析(DC Sweep)以及参数分析(Parametric Analysis)3.实验方法1> 电路图中的参数用花括号括起,如下图中的{VCE}等2> 图中的PARAMETERS: place→part→add library后,添加special.olb3> 双击PARAMETERS:出现property editor,选择New column, name 中写入相应的参数名,例如下图中的VCE,初始值VCE=0V,IB=10uA,IE=1mA4> 仿真过程,需要先进行DC Sweep 设定,然后options中选择parametric sweep, 在sweep varaible栏中选择GLOBAL PARAMETER,在parameter name中将相应的参数名写入。
在sweep type栏中分别写入参数的变化,包括该参数的初始值、终值以及增量值。
输入输出实验报告

一、实验目的1. 熟悉计算机输入输出设备的基本概念和作用。
2. 掌握常用输入输出设备的使用方法。
3. 了解输入输出设备的性能指标及其对计算机系统的影响。
二、实验环境1. 实验室:计算机实验室2. 硬件设备:计算机、键盘、鼠标、显示器、打印机、U盘等3. 软件:Windows操作系统三、实验内容1. 输入设备实验(1)键盘输入实验1)实验步骤:① 打开计算机,进入Windows操作系统;② 连接键盘,确保键盘正常工作;③ 打开记事本,输入一段文字;2)实验结果:成功输入文字,观察键盘布局,了解各个键位的含义;3)实验总结:熟练掌握键盘布局,提高输入速度。
(2)鼠标输入实验1)实验步骤:① 打开计算机,进入Windows操作系统;② 连接鼠标,确保鼠标正常工作;③ 使用鼠标在桌面进行拖动、点击等操作;2)实验结果:成功进行鼠标操作,熟悉鼠标的使用方法;3)实验总结:熟练掌握鼠标操作,提高操作效率。
2. 输出设备实验(1)显示器输出实验1)实验步骤:① 打开计算机,进入Windows操作系统;② 观察显示器显示的桌面背景、图标等信息;2)实验结果:显示器正常工作,显示计算机信息;3)实验总结:了解显示器的作用,熟悉显示器的性能指标。
(2)打印机输出实验1)实验步骤:① 打开计算机,进入Windows操作系统;② 将打印机连接到计算机;③ 打开文档,进行打印设置;④ 点击打印按钮,将文档打印到纸上;2)实验结果:成功将文档打印到纸上;3)实验总结:了解打印机的工作原理,熟悉打印机的性能指标。
3. 存储设备实验(1)U盘存储实验1)实验步骤:① 打开计算机,进入Windows操作系统;② 将U盘插入USB接口;③ 在文件资源管理器中找到U盘,进行文件读写操作;2)实验结果:成功将文件存入U盘,从U盘中读取文件;3)实验总结:了解U盘的工作原理,熟悉U盘的容量、读写速度等性能指标。
四、实验结果与分析1. 输入设备实验通过键盘输入实验,掌握了键盘布局和输入方法,提高了输入速度。
p1口输入输出实验报告

p1口输入输出实验报告p1口输入输出实验报告引言:计算机科学领域的发展使得我们能够使用各种各样的设备与计算机进行交互。
而在这个过程中,输入输出接口的设计和实现显得尤为重要。
本篇文章将围绕p1口输入输出接口展开讨论,介绍其原理、实验过程以及实验结果。
一、p1口输入输出接口的原理p1口是一种通用输入输出接口,它可以连接各种外部设备,如键盘、鼠标、打印机等。
p1口的原理是通过电信号的传输来实现与外部设备的交互。
具体来说,p1口通过发送和接收电压信号来进行通信,从而实现输入输出的功能。
二、实验过程1. 准备工作在进行实验前,我们需要准备一台计算机和一些外部设备,如键盘、鼠标和打印机。
将这些设备连接到计算机的p1口上。
2. 输入实验首先,我们进行输入实验。
在连接好设备后,我们可以通过键盘向计算机输入一些字符。
计算机会将这些字符接收并进行处理。
我们可以通过编写一个简单的程序来实现字符的显示和处理。
在程序中,我们可以使用相应的函数来获取键盘输入,并将其显示在屏幕上。
通过这个实验,我们可以验证p1口的输入功能是否正常工作。
3. 输出实验接下来,我们进行输出实验。
在程序中,我们可以使用相应的函数来控制打印机输出指定的内容。
通过这个实验,我们可以验证p1口的输出功能是否正常工作。
4. 实验结果通过实验,我们可以得出以下结论:- p1口的输入功能正常工作,可以准确地接收键盘输入的字符。
- p1口的输出功能正常工作,可以控制打印机输出指定的内容。
三、实验总结p1口作为一种通用输入输出接口,具有广泛的应用。
通过本次实验,我们对p1口的原理和功能有了更深入的了解。
p1口的输入功能可以使计算机接收外部设备的输入信号,从而实现与用户的交互。
p1口的输出功能可以使计算机控制外部设备进行相应的操作,从而实现对外部环境的影响。
在今后的学习和工作中,我们可以进一步探索p1口的应用,提高计算机与外部设备的交互效率。
结语:通过本次实验,我们对p1口输入输出接口有了更深入的理解。
实验指导(带答案(上)

实验8 数组(二)一、实验目的1.掌握一维数组和二维数组的定义、赋值和输入输出的方法2.掌握字符数组和字符串函数的使用3.掌握与数组相关的算法(排序算法)二、实验内容及步骤1.找出一个二维数组中的鞍点,即该位置上的元素在所在行为最大,在所在列为最小。
如果没有这样的元素,请打印出相应的信息。
(1)画出此题的流程图。
(2)编写程序求矩阵中所有的鞍点并上机调试。
(3)输入的数据和输出的结果要详细记录。
参考程序:#include"stdio.h"void main(){int a[4][4],i,j,min,m,n,max; for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<4;i++){max=a[i][0];for(j=i+1;j<4;j++)if(a[i][j]>max){max=a[i][j];n=j; }min=a[0][i];for(j=i+1;j<4;j++)if(a[j][i]<min){min=a[j][i];m=j;}}if(max==min)printf("%d",a[m][n]); elseprintf("没有鞍点"); }2.统计一个班的学生成绩。
要求程序具有如下功能:(1) 每个学生的学号和四门功课的成绩从键盘读入。
(2) 计算每个学生的总分和平均分。
(3) 按平均成绩进行排序,输出排序后的成绩单(包括学号、四门功课的成绩和平均分),给出名次。
如果分数相同,则名次并列,其他学生名次不变。
提示:调试程序时,可先输入少量学生的成绩作为实验数据。
如可输入3名学生4门课成绩:学号成绩9701 67,72,65,80 9702 75,82,94,95 9703 70,74,80,76参考程序:main(){int i,j,k,n;static int score[1000][7],temp; printf("请输入学生的人数:"); scanf("%d",&n);for(i=1;i<=n;i++){printf("请输入第%d个学生的学号和成绩并按回车(学号和成绩之间用空格隔开,成绩之间用逗号隔开,输完后按回车:",i);scanf("%d%d,%d,%d,%d,",&score[i][0],&sco re[i][1],&score[i][2],&score[i][3],&score[i][4] );score[i][5]=(score[i][1]+score[i][2]+scor e[i][3]+score[i][4])/4;}for(i=1;i<=n-1;i++)for(j=i+1;j<=n;j++)if(score[i][5]<score[j][5])for(k=0;k<6;k++){temp=score[i][k];score[i][k]=score[j][k];score[j][k]=temp;}for(i=1;i<=n;){score[i][6]=i;j=1;while(score[i][5]==score[i+j][5]){score[i+j][6]=i;j++;}i=i+j;}for(i=1;i<=n;i++)printf("第%d名的学生学号为%d,平均成绩为%d\n",score[i][6],score[i][0],score[i][5]); }实验9 函数(一)一、实验目的1.理解和掌握多模块的程序设计与调试的方法2.掌握函数的定义和声明函数的方法3.熟悉调用函数时实参和形参的对应关系,以及“值传递”的方式二、实验内容及步骤1. 用函数实现两个整数交换,设计一个函数swap,实现两个整数的交换。
C语言实验答案

scanf("%f,%f",&a,&b);
if(fabs(a*a+b*b-1)<1e-3)
printf("Y\n");
else printf("N\n");}
}
[题目1017:求数的位数]
由键盘输入一个不多于9位的正整数,要求输出它是几位数。
[第一组自测数据] [第二组自测数据]
}
[题目1020:正负奇偶判断]
由键盘输入非零整数x,判断该数正负,正数输出positive,负数输出negative,接着判断该数的奇
偶性,奇数输出odd,偶数输出even。
[第一组自测数据] negative
[键盘输入] odd
-43↙[第二组自测数据]
[正确输出] [键盘输入]
98↙positive
阅读下面程序,写出运行结果:
void main()
{ float a;
int b, c;
char d, e;
a=3.5;
b=a;
c=330;
d=c;
e='\\';
printf("%f,%d,%d,%c,%c", a,b,c,d,e);
}
运行结果为:
3.500000,3,330,J,\
[提示]赋值语句具有类型转换的功能,但可能会改变数据。
[正确输出] [正确输出]
Y N
[提示] 1)平面上的点与圆的关系分为在圆内、在圆上、在圆外三种,本题要求判断是否在圆上;2)
判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度(本题为0.001)的方法实现。
C语言程序设计 上机实验指导与习题 参考答案(第四版)

C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。
(3)通过运行简单的 C 程序,初步了解 C程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。
includequotstdio.hquotmain printfquotThefirstCProgramnquot具体操作步骤(1)在编辑窗口中输入程序。
(2)保存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
,则该题完成。
4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。
(2)保存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入 15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中介绍的方法进入在线评判系统。
(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。
(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
(教案)实验1 P1口输入输出实验

茂名学院电信工程系教案专业班级:电信06-1,2 授课教师:左敬龙实验一 P1口输入输出实验实验性质:验证性实验时数: 2学时实验目的:1.熟悉单片机开发平台硬件、软件环境2.学习数据存储器不同的读写方法3.学习P1口的使用方法实验要求1.对片内RAM、寄存器编程进行读写和逻辑操作,利用开发平台查看读写结果。
2.P1口做输入口,接八个扭子开关,编写程序读取开关状态,将此状态所代表的数字保存在外部数据存储器6010H单元中。
3.将实验机上74LS273做输出口,编写程序,将6010H单元的内容输出,通过发光二极管的亮灭情况检查输出结果。
实验重点:1.熟悉实验箱操作2.熟悉联机调试软件的操作实验讲义:一、介绍实验目的与要求1、实验目的与要求2、实验电路与连线接线说明:P1.0~P1.7接K1~K8;PO0~PO7接DL1~DL8。
/CS接8300H3、关于P1口的输入输出控制P1口是准双向口。
它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
图1 实验电路二、设计思路1、开关数据的输入因为8个开关KEY是直接通过P1链接到单片机的,所以读取数据时直接使用 MOV A, P1 指令即可。
由于P1口输入需要先置1,所以一般采用:MOV P1, #0FFHMOV A , P12、数据的输出(控制LED灯)如图1所示。
通过芯片 74LS273 扩展 I/O 口,连接到实验箱的 8300 端口,这样对273输出数37H就可以通过以下指令实现:MOV DPTR, #8300HMOV A, #37HMOVX @DPTR, A三、关键问题提示关于程序的调试由于是第一次实验,请大家仔细熟悉调试开发软件的使用方法。
实验数码管,基本输入输出实验

实验报告课程名称:PIC单片机实验任课教师:周燕实验名称:基本输入输出,数码管显示实验年级、专业:10级电子信息科学与技术学号:20101060230姓名:王莹日期:2011 年 4 月11 日云南大学信息学院一、实验目的1.掌握输入、输出口的基本输入、输出功能的操作使用方法;2.掌握B口的弱上拉功能的原理和使用方法;3.看懂电路原理图,掌握将按键和显示电路连接到输入、输出口的连接方法;4.进一步熟练集成开发环境的使用方法;二、实验功能内容一、基本输入/输出实验功能:本实验要求用PIC16F877A的PORTB0-5监控与之相连的六个按键KEY0-KEY5,用PORTD0-5控制与之相连的六个发光二极管LED0-LED5。
每当有按键被按下时就点亮该按键对应的发光二极管,按键被释放后就熄灭所有的发光二极管。
运行程序,不断按击KEY0-KEY5键,看LED变化情况二、数码管显示实验功能:用PIC中档单片机的I/O口控制两位共阴极的数码管,显示小数“2.3”.其中数码管的7个笔段和小数点位分别用一; 个的完整I/O口的8个引脚来控制,两位数码管的位选信号则用另外两个I/O口来控制。
运行程序,观察两只数码管的变化情况三、实现功能用到的硬件电路设计和电路板的链接方法1.基本输入输出实验参看电路原理图说明:将跳线器JP_RB与KEY0-KEY5,JP_RD的LED0-LED7短接。
2.数码管实验参看电路原理图说明:将跳线器JP_RB的KEY0,JP_RD的SEG_A~DP短接四、软件设计流程图设计包含p16f877a.inc定义TEMP为键码转到体1开启内部弱将PORTD设置为转到体0将PORTD读取PORTB按键将3F送W寄存器与TEMP 相与,屏蔽高两将TEMP送到W寄存器TEMP取点亮按键有变化对应的LED子程序返回流程:将p16f877a.inc包含进来定义段码寄存器定义COUNT1寄存器用于延时常数定义COUNT2寄存器用于延时常数定义程序其实空指令跳转到MAIN主程序转到体1将PORTE0设置为输出端口将PORTE1设置为输出端口将PORTD设置为输出端口转到体0将PORTD清零将PORTE0清零将PORTE1清零将2存入W与0FH相与屏蔽高4位调用查表子程序获得笔段码将断码值存入ONE_BIT与80H相加,加入小数点段码送出个位段码关闭小数点后1位选通个位显示位调用延时子程序将3与0FH相与屏蔽高4位调用查表指令获得笔段码送出3的段码关闭个位显示位码和小数点选通小数位显示位码调用延时跳回重复显示3.程序设计和注释基本输入输出;****************************************Copyright(c)***************************************************;** School of Information Science and Engineering,;** Yunnan University;**;**--------------FileInfo-------------------------------------------------------------------------------;** File name: 1.asm;** Last modified Date: 2010-09-15;** Last Version: 1.0;** Descriptions:;**;**------------------------------------------------------------------------------------------------------;** Created by: Zoujin;** Created date: 2010-09-15;** Version: 1.0;** Descriptions: The original version;**;******************************************************************************************* *************;******************************************************************************************* *************;**功能:本实验要求用PIC16F877A的PORTB0~5监控与之相连的六个按键KEY0~KEY5,用PORTD0~5控制与之相连的六个发光; 二极管LED0~LED5。
P1口输入、输出实验

实验一 P1口输入、输出实验一、实验要求1. P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2. P1.0、P1.1作输入口接两个拨动开关,P1.2、P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。
编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。
二、实验目的1. 学习P1口的使用方法。
2. 学习延时子程序的编写和使用。
三、实验连线实验1: P1口循环点亮 实验2: P1口输入输出四、实验说明1. 8051延时子程序的计算延时程序的实现常用两种方法,一种用定时器中断来实现,另一种是用指令循环实现。
在系统时间允许的情况下可以采用后一种方法。
本实验系统晶振频率为6MHz ,执行一个机器周期时间为12/6MHZ=2µS,现在写一个延时0.1S 的程序如下:查指令表可知MOV 需要一个机器周期,DJNZ 指令需用两个机器周期,所以执行该段程序所需时间是:[ 1 + ( 1 + 2 × 200 + 2 ) X ] × 2×10-6= 0.1S 指令(1) (2) (3) (4) 所需时间 所需时间 所需时间 所需时间求出X =124,将X =124代入上式可知实际延时约0.099946≈0.1S 。
2. P1口准双向口它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用为Delay :MOV R6,#X (1) DE1: MOV R7, #200 (2) DE2: DJNZ R7,DE2 (3)DJNZ R6,DE1 (4)输入口时,必须先对它置“1”。
若不先对它置“1”,读入的数据是不正确的。
六、硬件电路1、LED电平显示电路图1:LED电平显示电路2、逻辑电平开关电路实验仪上有8只开关K0―K7,并有与之相对应的K0―K7引线孔为逻辑电平输出端。
开关向上拨相应插孔输出高电平“1”,向下拨相应插孔输出低电平“0”。
微机原理与接口技术输入输出实验

实验一:输入输出实验实验环境PC机+Win 2010+emu8086 实验日期2016.6.3 一.实验内容1.熟悉emu8086仿真系统,清楚调试环境,能熟练的查看8086仿真系统的寄存器、内存、堆栈等相关内容。
2.设计并单步调试实现一位十进制数的加法运算。
例如:屏幕显示效果为3+2=5,其中,加数和被加数为键盘输入,其他为屏幕自动输出。
3.在实现了一位十进制数加法运算的基础上,尝试实现两位十进制加法运算、一位十进制数的四则运算以及十进制多位数运算等扩展要求。
二.理论分析或算法分析1、Emu8086的使用(1)打开桌面上的云端软件,选择微机原理分类,点击Emu8086的图标,,选择【新建】。
(2)选择COM模板,点击【确定】,软件出现源代码编辑器的界面在源代码编辑器的空白区域,编写如下一段小程序:代码编写结束,点击菜单【文件】【另存为……】,将源代码换名保存。
本例将源代码保存为.asm。
:(3)如果源程序无错误,则编译通过单击【单步运行】可以单步调试,程序将每执行一条指令便产生一次中断(建议使用)。
单击【后退一步】可以返回到上一条指令(这个功能也是一般调试器没有的)。
单击【运行】,程序将从第一句直接运行到最后一句。
2、设计并单步调试实现一位十进制数的加法运算。
(1)选择新建一个.COM类型的文件。
(2)在编辑界面中,键入代码。
(3)点击工具栏的【模拟】按钮,进入调试窗口,单步调试并观察寄存器的变化情况。
3、进一步完善上述程序,实现一位十进制数的加法运算。
4、在实现了一位十进制数加法运算的基础上,选择完成如下题目:两位十进制加法运算、一位十进制数的四则运算、十进制多位数运算等。
三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)一位加法:org 100hmov ah, 1int 21hmov bl, al mov ah, 2 mov dl, '+' int 21hmov ah, 1int 21hand bl, 0fh and ax, 0fh add al, bl aaaor ax, 3030h mov bx, ax mov ah, 2 mov dl, '=' int 21h cmp bh, 30hje j1mov ah, 2 mov dl, bhint 21hj1:mov ah, 2 mov dl, blint 21hret 多位加法:org 100hmov ah, 1int 21hmov bh, al int 21hmov bl, al mov ah, 2mov dl, '+'int 21hmov ah, 1int 21hmov ch, al int 21hmov cl, aland bx, 0f0fh and cx, 0f0fh mov ax, cxadd ax, bxaaaor ax, 3030h mov bx, ax mov ah, 2mov dl, '='int 21h cmp bh, 30hje j1mov ah, 2mov dl, bhint 21hj1:mov ah, 2mov dl, blint 21hret一位减、乘、除:mov ah, 1int 21hand al, 0fhmov bl, al mov ah, 1int 21hmov dl, alint 21hand al, 0fhxor ah, ahcmp dl, '+'jne jp1add al, blaaajmp short jp4jp1:cmp dl, '-'jne jp2xchg al, blsub al, blaasjmp short jp4jp2:cmp dl, '*'jne jp3mul blaamjmp short jp4jp3:xchg al, bldiv blaam jp4:mov bx, axmov ah, 2mov dl, '='int 21hor bx, 3030h cmp bh, '1'jc j1mov dl, bhint 21hj1:mov dl, blint 21h四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)一位数加法:多位数加法:一位数减、乘、除法五.结论通过这次实验,我对EMU8086实验模拟环境有相应的了解,熟悉了基本的EMU8086的使用方法,同时也对mov这个指令有了深入的理解,并且知道了各个存储器里面的值得存储过程,为以后的的学习打下了坚实的基础。
小键盘试验一答案

数据传送实验/输入输出实验
<实验目的>了解数据传送指令的执行过程
<实验内容>
模型机作为一个整体来工作的,所有微程序的控制信号由微程序存储器uM 输出,而不是由开关输出。
在做综合实验之前,先用8 芯电缆连接J1 和J2,这样实验仪的监控系统会自动打开uM的输出允许,微程序的各控制信号就会接到各寄存器、运算器的控制端口。
此综合实验使用的指令是模型机的缺省指令/微指令系统。
等做完本综合实验,熟悉了此套指令/微指令后,用户可以自己设计的指令/微指令系统。
1、在存储器MM中输入下表内容
2、在微存储器μM中输入下表内容。
C语言程序设计 上机实验指导与习题 参考答案

C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。
青岛大学C++程序设计实验指导书答案

⑥ 输出时输出税率 r,应交税款 a*r/100,实得奖金额 a*(1-float(r)/100)。 # include <iostream.h> void main() { int a,b,r; cout<<"please Input prize :"; cin>>a;
— 4 —
if (a>=800) r=10; else { b=a/100; switch (b) { case 0: r=0;break; case 1: r=2;break; case 2: case 3: r=4;break; case 4: case 5: case 6: case 7: r=8;break; default :cout<<"Input error!"; } } cout<<"Tax rate:"<<r<<"%"<<endl; cout<<"Tax :"<<a*r/100<<endl; cout<<"Prise:"<<a*(1-float(r)/100)<<endl; } 运行结果: please Input prize :400 Tax rate: 8% Tax: 32 Prise: 368 运行结果: please Input prize :900 Tax rate: 10% Tax: 90 Prise: 810
2
2 1
2n 2n 4 4 2 3 3 5 2 n1 2 n1
其中,n=1、2、3„设计一个程序,求出当 n=1000 时的π 的近似值。 (4) 求出 1~599 中能被 3 整除,且至少有一位数字为 5 的所有整数。如 15、51、513 均是满足条件的整数。
《机电一体化技术》P1口输入和输出实验实验

《机电一体化技术》P1口输入和输出实验实验一、实验目的(1)学习Keil uVision软件的使用;(2)学习P1口的使用;(3)学习单片机与外部设备的连接。
二、设备名称THSMS-C型可编程控制器及单片机高级实验装置GZ-03挂箱;三、实验内容用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
四、实验步骤1、使用单片机最小应用系统模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着新建并添加源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
五、实验结果说明:流水灯能够循环依次点亮六、简要回答问题:1、如果要求发光二极管从左向右点亮,应该如何修改程序?将累加器坐环移改为累加器右环移即将程序中的RL改为RR。
2、如果要求改变发光二极管循环点亮的切换速度,应该如何修改程序?改变延时时间即改变程序中的R2的值即可。
七、总结实验中出现的问题及解决方法:接线过程中线较多出现交叉现象以及接错现象,为解决这种现象我认真反复多次检查并认真修改解决了接错问题同时通过设置导线标签顺利减少了连线的数量。
八、流程图及源程序接线图。
微机接口实验报告-8255并口控制器实验 (1)-基本输入输出实验

姓名院专业班年月日实验内容8255并口控制器实验(1) ——基本输入输出实验指导老师【实验目的】掌握8255 的工作方式及应用编程。
掌握8255的典型应用电路接法。
【试验设备】PC微机一台、TD-PIT+实验系统一套。
【实验内容】基本输入输出实验。
编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就改变。
【实验原理】并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图8-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图8-2所示。
图8-1 8255的内部结构及引脚【实验说明及步骤】本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。
用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
参考程序流程如图8-3所示。
实验步骤如下。
1.确认从PC机引出的两根扁平电缆已经连接在实验平台上。
姓名院专业班年月日实验内容8255并口控制器实验(1) ——基本输入输出实验指导老师2.参考图8-4所示连接实验线路。
3.首先运行CHECK程序,查看I/O空间始地址。
4.利用查出的地址编写程序,然后编译链接。
5.运行程序,拨动开关,看数据灯显示是否正确。
(a)工作方式控制字(b)C口按位置位/复位控制字8-2 8255控制字格式姓名院专业班年月日实验内容8255并口控制器实验(1) ——基本输入输出实验指导老师图8-3 8255并口应用实验(1)参考程序流程图图8-4 8255并口应用实验(1)参考接线图【汇编源程序】CODE SEGMENT姓名院专业班年月日实验内容8255并口控制器实验(1) ——基本输入输出实验指导老师ASSUEM CS:CODESTART:MOV DX,0DC0CHMOV AL,10000010BOUT DX,ALPP:MOV DX,0DC04HIN AL,DXMOV DX,0DC00HOUT DX,ALMOV AH,1INT 16HJZ PPQUIT:MOV AH,4CHINT 21HCODE ENDSEND START【实验结果】在基本的输入输出实验中,A口的工作方式作为输入,接到开关上作为控制输入信号,而B口作为输出端连接到LED灯上可以通过灯的点亮和熄灭来判断输出信号。
实验报告1--GPIO输出按键输入实验

班级学号姓名实验日期室温大气压成绩实验题目:GPIO输出实验——按键输入检测实验一、实验目的:1、通过本实验学会ARM7.0软件的安装及掌握对该软件和EasyJTAG仿真器的使用;2、了解EasyARM2131开发板硬件结构,掌握各引脚功能和接线;3、掌握相关实验的程序,并能作出简单的修改并实现其功能;4、掌握GPIO输出实验---按键输入的检测。
二、实验仪器:EasyARM2131开发板一块及相关导线、计算机一台三、实验原理:下面是工程窗口中的图标介绍:如图4.2所示,当P0口连接GPIO且用于输入时,如用于检测按键的时候,由于P0口作GPIO输入时,内部无上拉内阻,所以需要加10K左右的上拉电阻,把I/O口拉到高电平。
当P0口用于GPIO输入时(如按键输入),内部无上拉电阻,需要加上拉电阻,电路如图4.14图4.14 按键输入原理图实验通过跳线JP8连线KEY3_P0.18,程序检测按键KEY3的状态,控制蜂鸣器BEEP的蜂鸣。
在实验中,需要将按键KEY3输入口P0.18设为输入口,而蜂鸣器控制口P0.7设为输出口。
蜂鸣器电路如图1.11所示,当跳线JP6连线蜂鸣器时,P0.7控制蜂鸣器,低电平时蜂鸣器蜂鸣。
程序首先设置管脚连线寄存器PINSEL0和PINSEL1,设置P0.7为输出。
然后检测端口P0.18的电平,对P0.7进行相应的控制,流程图如图4.15所示,实现程序见程序清单4.7。
四、实验步骤:1、接好开发板与计算机的相关接线2、打开已安装好的H-JTAG和H-Flasher软件,并在H-Flasher软件中选择Flasher Selation→PHILIPS→LPC2318;然后再选择Programming→check。
操作过程中出现的窗口如下图(1)、(2)所示:图(1)图(2)3、Metrowerks CodeWarrior for ARM Developer Suite v1.2软件,点击File选择Open打开GPIO输出实验——按键输入检测实验文件夹,选择GPIO_Leds8-2.mcp文件,双击main.c ,打开主程序,并运行检查是否出现错误,无误后点击Dubeg按钮;操作过程中的窗口如下图(3)、(4)所示:图(3)图(4)4、出的AXD窗口中选择Options,点击configure target后,在跳出的choose target窗口中点击Ok,点击运行按钮(若点击运行按钮,开发板中的LED不会亮)则在PIO_Leds8-a.mcp窗口中点击Run按钮运行,并观察开发板上出现的现象是否符合实验要求窗口如下图(5)所示:图(5)5、程序清单4.7:按键输入程序如下#include "config.h"const uint32 BEEP = 1 << 7; // P0.7控制蜂鸣器const uint32 KEY1 = 1 << 18; // P0.18连接KEY3/************************************************************ ************************************************ 函数名称:main()** 函数功能:GPIO输入实验测试。
C实验报告1参考答案

2+4=6
(2)从键盘输入两个整数,输出这两个整数的差。根据注释信息填写完整程序,以
实现其功能。程序以文件名 sy1_5.c 保存。
#include<stdio.h>
该程序的运行结果:
main()
Input a,b please !20 17
{
20-17=3
int a,b,m;
printf("Input a,b please ! ");
二、实验内容
1.改错题 在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。 (1)下列程序的功能为:已知圆锥半径 r 和高 h,计算圆锥体积 v。纠正程序中存在的错 误,以实现其功能。程序以文件名 sy2_1.c 保存。计算圆锥体积的公式为:
#include stdio.h main();
scanf("%d%d",&a,&b); /*从键盘输入两个整数分别赋予 a 和 b*/
sum=a*a+b*b;
/*赋值语句,把 a2+b2 的结果赋给变量 sum*/
printf("%d*%d+ %d*%d=%d\n",a,a,b,b,sum); /*输出语句*/
}
该程序的运行结果:
Please Input a,b 24 2*2+4*4=20
printf("%c,%d\n",c1,c1); c2=c1+26; printf("%c,%d\n",c2,c2);
c2=c1-32; /* 转换为大写字母 */ /* 输出大写字母及其 ASCII 码值 */
} 2.程序填空题 (1)下列程序的功能为:按给定格式输入数据,按要求格式输出结果。补充完善程序,
第7章输入输出习题参考解答

第7章思考题与习题参考答案1.计算机的I/O系统的功能是什么?它由哪几个部分组成?答:计算机的I/O系统,主要用于解决主机与外部设备间的信息通讯,提供信息通路,使外围设备与主机能够协调一致地工作。
计算机的I/O系统由I/O硬件和I/O软件两大部分组成。
其中I/O硬件包括:系统总线、I/O接口、I/O设备及设备控制器。
I/O软件包括:用户的I/O程序、设备驱动程序、设备控制程序。
2.I/O硬件包括哪几个部分?各部分的作用是什么?答:I/O硬件包括:系统总线、I/O接口、I/O设备及设备控制器。
系统总线的作用是为CPU、主存、I/O设备(通过I/O接口)各大部件之间的信息传输提供通路。
I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的控制软件。
它用于在系统总线和外设之间传输信号,并起缓冲作用,以满足接口两边的时序要求。
I/O设备的作用是为主机与外部世界打交道提供一个工具。
设备控制器用来控制I/O设备的具体动作,不同的I/O设备需要完成的控制功能不同。
3.什么是用户I/O程序?什么是设备驱动程序?什么是设备控制程序?答:用户I/O程序是指用户利用操作系统提供的调用界面编写的具体I/O设备的输入输出程序。
例如用户编写的用打印机输出文本的程序。
设备驱动程序是一种可以使计算机和设备通信的特殊程序。
可以说相当于操作系统与硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。
设备控制程序就是驱动程序中具体对设备进行控制的程序。
设备控制程序通过接口控制逻辑电路,发出控制命令字。
命令字代码各位表达了要求I/O设备执行操作的控制代码,由硬件逻辑解释执行,发出控制外设的有关控制信号。
4.说明设计I/O系统的三个要素的具体内容。
答:设计I/O系统应该考虑如下三个要素:①数据定位: I/O系统必须能够根据主机提出的要求进行设备的选择,并按照数据在设备中的地址找到相应的数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 格式化输入输出操作
一:实验目的
1.熟悉C语言编译环境Turbo C
2.0;
2.熟悉C语言的基本数据类型;
3.熟悉C语言的基本输入及输出函数;
4、使用TC编写简单的程序。
二:实验题目:(请将运行结果截图)
1、(1)在编译环境中输入如下代码并运行查看结果:
main()
{
printf("Hello world!I am Lily.");
}
(2)将Lily改成你的姓名全屏,运行一下程序,看有什么变化?
(3)输入如下源代码查看运行结果并回答“\n”的作用是什么?
#include<stdio.h>
main()
{
printf("Hello world!\nI am Lily.");
}
“\n”的作用是换行。
2、定义一个整型变量a,赋值为65,然后分别以%d,%o,%x,%c 将其输出,然后看看结果是什么?并解释结果出现的原因。
(写出源代码及运行结果截图)提示:
int a =65;
printf("%d,%o,%x,%c\n",a,a,a,a);
参考答案:
#include<stdio.h>
main()
{
int a =65;
printf("%d,%o,%x,%c\n",a,a,a,a);
}
解释:%d,%o,%x,%c分别输出整型,八进制整型,十六进制整型,字符型。
3、运行程序(1)和程序(2)结果截图并回答你得到的结论是什么?
main()
{
int a;
float b;
printf("please input an integer and a decimal:");
scanf("%d%f",&a,&b);
printf("a=%d,b=%f\n",a,b);
}
(2)
#include<stdio.h>
main()
{
int a;
float b;
printf("please input an integer and a decimal:");
scanf("a=%d,b=%f",&a,&b);
printf("%d,%f",a,b);
}
参考答案:用scanf()函数时,除格式控制字符串中格式说明以外的其他字符,都必须原样输入。
4、下面定义好了变量,请按要求输出结果(下面为部分程序,要求上机按要求补充剩下的程序。
请在屏幕上打印出a和b的结果并且要求保留小数点后2位小数。
(提示:对应教材内容P51,读懂程序例3.7)
{
float a,b;
a=10.5555,b=12.6666;
}
参考答案:
#include<stdio.h>
main()
{
float a,b;
a=10.5555,b=12.6666;
printf("%.2f,%.3f",a,b);
}
6、编程题:
设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为benjin 元,试编程计算n年后的本利之和total。
要求定期存款的年利率rate、存款期n和存款本金benjin均由键盘输入。
参考答案:
#include<math.h>
#include<stdio.h>
main() /*主函数首部*/
{
int n; /*存款期变量声明*/
float rate,benjin,total; /*存款年利率,存款本金及本利和变量声明*/
printf("Please enter rate, year, benjin:");/*输出用户输入的提示信息*/
scanf("%f,%d,%f", &rate, &n, &benjin); /*输入数据*/
total = benjin * pow(1+rate, n); /*计算存款利率之和,pow为幂函数*/
printf("total = %f\n", total); /*输出存款利率之和*/
}。