试验一 源程序的输入和扫描
实验一-源程序的输入和扫描
湖南农业大学信息科学技术学院学生实验报告printf("#");if(s[j]>= 'a' && s[j]<='z'|| s[j]>='A' && s[j]<='Z')//判断字符串是否是由字母组成的单词{if(s[j]!=' ')printf("%c",s[j]);elseprintf("#%c",s[j]);}if(s[j]=='<'||s[j]=='>'||s[j]=='>='||s[j]=='<='||s[j]==';'||s[j]=='(' ||s[j]==')'||s[j]=='.'||s[j]=='+'||s[j]=='-'||s[j]=='='||s[j]=='*')printf("#%c",s[j]);if(s[j]>='0'&&s[j]<='9')printf("%c",s[j]);elseprintf("#%c",s[j]);}printf("#\n");return 0;}【实验结果和总结】(对实验结果进行相应分析,或总结实验的心得体会,并提出实验的改进意见)1 实验结果记录(截图)2 实验总结遇到的问题所用的时间所用方法和手段以及心得体会通过这次试验我理解了源程序被编译器读取的过程,掌握扫描程序的编写方法,同时也重新熟悉了C 语言的使用。
微机原理及应用实验(题目)
微机原理及应用实验实验一开发环境的使用一、实验目的掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。
二、实验内容在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的30H~7FH 单元清零。
三、实验设备PC机一台。
四、实验步骤用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。
五、实验思考1.如果需把30H-7FH 的内容改为55H,如何修改程序?2.如何把128B的用户RAM全部清零?六、程序清单文件名称:CLEAR.ASMORG 0000HCLEAR: MOV R0,#30H ;30H 送R0寄存器MOV R6,#50H ;50H 送R6寄存器(用作计数器)CLR1: MOV A,#00H ;00 送累加器AMOV @R0,A ;00 送到30H-7FH 单元INC R0 ;R0 加1DJNZ R6,CLR1 ;不到50H个字节,继续WAIT: LJMP WAITEND实验二数据传送一、实验目的掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。
二、实验内容1.编制一段程序,要求程序中包含7中不同寻址方式。
2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。
3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。
4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。
三、实验设备PC机一台。
四、实验步骤逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。
五、实验思考1.如何把片外RAM中1000H~100FH单元中的数传送到片外RAM中2000H~200FH单元中?2.如何把ROM中0200H~0207H单元的数传送至片外RAM0000H~0007H单元中?实验三数码转换一、实验目的掌握采用软件方法进行不同形式数据之间的转换,如十进制数与二进制数的转换、十六进制数与BCD码的转换、BCD数与ASCII码之间的转换、非压缩BCD码与压缩BCD码之间的转换。
编译原理实验报告
编译原理实验报告班级姓名:学号:自我评定:实验一词法分析程序实现一、实验目的与要求通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。
二、实验内容根据教学要求并结合学生自己的兴趣和具体情况,从具有代表性的高级程序设计语言的各类典型单词中,选取一个适当大小的子集。
例如,可以完成无符号常数这一类典型单词的识别后,再完成一个尽可能兼顾到各种常数、关键字、标识符和各种运算符的扫描器的设计和实现。
输入:由符合或不符合所规定的单词类别结构的各类单词组成的源程序。
输出:把单词的字符形式的表示翻译成编译器的内部表示,即确定单词串的输出形式。
例如,所输出的每一单词均按形如(CLASS,VALUE)的二元式编码。
对于变量和常数,CLASS字段为相应的类别码;VALUE字段则是该标识符、常数的具体值或在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串;常数表登记项中则存放该常数的二进制形式)。
对于关键字和运算符,采用一词一类的编码形式;由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE字段则为“空”。
另外,为便于查看由词法分析程序所输出的单词串,要求在CLASS字段上放置单词类别的助记符。
三、实现方法与环境词法分析是编译程序的第一个处理阶段,可以通过两种途径来构造词法分析程序。
其一是根据对语言中各类单词的某种描述或定义(如BNF),用手工的方式(例如可用C语言)构造词法分析程序。
一般地,可以根据文法或状态转换图构造相应的状态矩阵,该状态矩阵同控制程序便组成了编译器的词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。
构造词法分析程序的另外一种途径是所谓的词法分析程序的自动生成,即首先用正规式对语言中的各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程序所应进行的语义处理工作,然后由一个所谓词法分析程序的构造程序对上述信息进行加工。
键盘扫描程序实验报告
一、实验目的1. 理解键盘扫描的基本原理。
2. 掌握使用C语言进行键盘扫描程序设计。
3. 学习键盘矩阵扫描的编程方法。
4. 提高单片机应用系统的编程能力。
二、实验原理键盘扫描是指通过检测键盘矩阵的行列状态,判断按键是否被按下,并获取按键的值。
常见的键盘扫描方法有独立键盘扫描和矩阵键盘扫描。
独立键盘扫描是将每个按键连接到单片机的独立引脚上,通过读取引脚状态来判断按键是否被按下。
矩阵键盘扫描是将多个按键排列成矩阵形式,通过扫描行列线来判断按键是否被按下。
这种方法可以大大减少引脚数量,降低成本。
本实验采用矩阵键盘扫描方法,使用单片机的并行口进行行列扫描。
三、实验设备1. 单片机开发板(如51单片机开发板)2. 键盘(4x4矩阵键盘)3. 连接线4. 调试软件(如Keil)四、实验步骤1. 连接键盘和单片机:将键盘的行列线分别连接到单片机的并行口引脚上。
2. 编写键盘扫描程序:(1)初始化并行口:将并行口设置为输入模式。
(2)编写行列扫描函数:逐行扫描行列线,判断按键是否被按下。
(3)获取按键值:根据行列状态,确定按键值。
(4)主函数:调用行列扫描函数,读取按键值,并根据按键值执行相应的操作。
3. 调试程序:将程序下载到单片机,观察键盘扫描效果。
五、实验程序```c#include <reg51.h>#define ROW P2#define COL P3void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 123; j++);}void scan_key() {unsigned char key_val = 0xFF;ROW = 0xFF; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值}void main() {while (1) {scan_key();if (key_val != 0xFF) {// 执行按键对应的操作}}}```六、实验结果与分析1. 实验结果:程序下载到单片机后,按键按下时,单片机能够正确读取按键值。
《编译原理及实践实验课程》实验一 C++源代码单词扫描程序(词法分析)
院系:计算机学院实验课程:编译原理及实践实验课程实验项目:C++源代码单词扫描程序(词法分析)指导老师:XXX开课时间:XXXX~ XXXX年度第 1学期专业:XXXX班级:XXXX级本X班学生:XXX学号:XXXXXXXX实验一:C++源代码单词扫描程序(词法分析)一、实验题目C++包含了多种符号类型,主要有标识符、数(包括整数、浮点数)、关键字、注释、字符串、特殊符号、运算符号等等。
通过编写一个C++源代码打你扫描程序,实现对扫描文件进行词法分析,并输出分析结果。
二、实验功能1. C++源代码扫描程序识别C++记号C++语言包含了几种类型的记号:标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号等。
2. 打开一个C++源文件,打印出所有以上的记号3. 要求应用程序应为Windows界面4. 选作部分:为了提高C++源程序的可读性,C++程序在书写过程中加入了空行、空格、缩进、注释等。
假设你想牺牲可读性,以节省磁盘空间,那么你可以存贮一个删除了所有不必要空格和注释的C++源程序的压缩文本。
因此,程序中还应该有这样的压缩功能。
5. 选作部分:进一步思考或实现——如何进一步实现减小源文件大小的压缩功能。
6. 应该书写完善的软件文档。
三、实验思路1. 通过文件流方式,实现字符的读取,因此先定义文件流名:FILE *fp; //定义文件名,在文件流使用2. 对于读取出来的字符,进行类型的判断,分别从以下函数实现:(1)当读取的是字符串时,则调用字符串处理函数,声明如下:c har string(char c[]); //字符串处理函数声明(2)当读取的是字母时,则调用字母处理函数,声明如下:char letter(char ch); //字母处理函数声明(3)当读取的是数字时,则调用数字处理函数,声明如下:char number(char ch); //数字处理函数声明(4)当读取的既不是字符串,也不是字母,又不是数字,则调用其他处理函数,声明如下:char other(char ch); //其他处理函数声明3. 为了空格、换行等进行判断识别,调用了头文件为“ctype.h”中的函数isspace( )、isdigit( )、isalnum( )等。
C语言实验报告,实验一和实验二
实验一C语言的运行环境、运行过程和表达式的使用一、目的与要求1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2、了解在该系统上如何编辑、编译、连接和运行一个C程序。
3、通过运行简单的C程序,初步了解C源程序的特点。
4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
5、学会使用C的有关算术运算符,以及包含这些运算符的表达式二、上机实验及运行结果1、例题实验及运行结果例一:#include"stdio.h"void main(){printf("Hello,World!\n");printf("Wolcome to the C language world!\n");printf("Everyone has been waiting for.\n");}运行结果为Hello, world !Welcome to the C language world!Everyone has been waiting for.在第一次输入源程序时,由于粗心在printf(“Hello,world!”)后面忘记输入“;”,在编译中检查出来,修改后编译成功。
例二:#include"stdio.h"void main(){int a,b,sum;a=123;b=456;sum=a+b;printf("sum is %d\n",sum);}运行结果为:sum is 579。
一次编译就成功了。
例三:#include"stdio.h"void main(){int a,b,c;int max(int,int);scanf("%d,%d",&a,,&b);c=max(a,b);printf("max=%d",c);}int max(int x,int y){int z;if (x>y) z=x;else z=y;return(z);}键盘输入“8,9”,屏幕上输出“max=9”例四:#include"stdio.h"void main(){char c1 , c2;c1=97;c2=98;printf("%c %c", c1, c2);}在此基础上1)加一个printf语句,并运行之。
C语言实验报告(实验一)
运行结果:
分析:当对源程序进行编译时,如果屏幕上没有出现“出错信息”,就对其进行运行并得出结果运行结果是会出现如下信息:
得到的运行结果如下:
分析:当写完一个源程序要仔细检查,如果出现错误提醒就按照上面的指示对其进行修改,只有
输入的数为:
运行结果:
分析:如果在输入数时两个数中间用空格符隔开,即
为
当把其改为原来的程序再运行时错误提醒就会消失,并得到和上面的结果一样的结果:
分析:合并后没有出现错误提醒,即这样做是正确的。
输入的三个数为:
分析:在前面的比较两个数中的大数的基础上比较三个数的最大数,只要在输入的源程序没有错。
试验一 源程序的输入和扫描
试验一源程序的输入和扫描试验一源程序的输入和扫描实验一源程序的输入和扫描学时数:2[实验内容]:1、基本建设一个源程序的输出、读取程序,从文件中每次初始化一行至输出缓冲区(可以用字符数组实现);然后从缓冲区中依次取出字符显示在屏幕上。
2、从文件每次初始化一行至输出缓冲区的功能(可以用字符数组同时实现)用一个子程序同时实现。
[实验目的]:1、通过基本建设一个源程序的输出、读取程序,熟识和介绍从文件中初始化数据至输出缓冲区的过程。
[实验步骤]:1、准备工作:用tc、vc++等开发工具;确认被处置的语言的语法特点(初步确认,可以采用非常简单语言如pascal、c等)。
编成不好程序,写下不好实验报告。
2、上机:输出源程序,修正、调试,运转。
编程思想:使用一个子程序同时实现的形式。
(1)程序判断源文件是否为null,如果是,则输出错误提示!如果不是,则进入循环。
(2)调用子程序readbuffer(),每次读入一个字符给字符变量,如果字符变量的内容不是回车符,则把字符变量的内容取走数组buffer(),然后初始化下一字符,再推论再取走数组,直至一行全系列取走数组,然后回到主程序,用输入语句输入刚才取走数组的一行字符;(3)如果没至文件尾,则重复第(2)步,直至文件完结,则选择退出主程序,顺利完成任务![程序要求]:1)在磁盘上创建一个文件a.c,文件内容输出如下一段c语言源程序。
2)运行编制好的输入、扫描程序,要求运行的输出结果与输入的文件内容相同。
本次实验主要熟识用c语言同时实现文件的输出和输入过程,撰写这个程序必须能够同时实现从键盘输入若干行字符并载入文件中,然后从文件中念出字符,按照输出的格式输入在屏幕上。
首先在磁盘上创建a.c文件,文件内容如下:a.c文件内容:main(){inta,b,c;a=10;b=20;c=a+b;}然后撰写源程序并运转和调式,看看输入的文件内容与否和输出的格式一样。
源程序:输入、扫描程序源代码(仅供参考):#include#include#includeinti;file*fp;charbuffer[256];//声明变量intreadbuffer()//念字符子程序已经开始{intj=0;charch;while(j<256){ch=fgetc(fp);if(ch=='\\n')//字符变量的内容就是回车符吗?{i=j;return0;//是回车符,保存字符个数返回0。
C语言程序设计实验报告实验一
修改:在第5、7末加上分号;
在print后加上字母f。
③输出:sum is 579
结果完全正确
6)
①显示:
max=5
②显示:
Exam1_3.exe - 2 error(s), 0 warning(s)
D:\exam\P1_6.c(8) : error C2143: syntax error : missing ';' before 'if'
实验心得
1.在C中标点符号也非常重要,不能漏掉,也不能写成全角符号;
2.C的编译环境应熟练掌握,各种提示的涵义应了解;
3.编程算法是关键。
1)所用的计算机系统已安装了Visual C++,在C:\Program Files\Microsoft Visual Studio\VC98中。
2)点击“开始”->“程序”->”Microsoft Visual Studio6.0”->”Microsoft Visual c++6.0”进入
3)基本熟悉
6)输入并运行一个需要在运行时输入数据的程序;
输入下面的程序:
#include<stdio.h>
void main()
{
int max(int x,int y);
int a,b,c;
printf("input a & b;");
scanf("%d,%d",&a,&b);
【精品】实验一汇编语言源程序的输入70
实验一汇编语言源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置。
2.学习在DEBUG状态下输入汇编源程序的方法。
3.初步掌握调试(在DEBUG状态下)的过程。
二、实验原理1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。
用单步跟踪的方法验证指令的功能。
2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。
注:⑴微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;⑵在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP寄存器原来的值。
三、实验仪器微机一台,软盘一块。
四、实验步骤1.开机和关机操作顺序开机:先打开微机外部设备电源开关,如显示器、打印机,最后打开主机电源开关。
关机:与开机相反,先关掉主机电源开关,然后关闭所有外设的电源开关。
2. 开机之后,把已准备好的PC-DOS系统软盘插入到A驱动器中,等待微机系统自检完成。
若自检无故障,计算机将自动引导A驱动器的DOS操作系统,实现DOS系统的启动,并出现提示符:A >若微机系统带有硬盘驱动器,且PC-DOS操作系统已装入硬盘,机器自检后(A驱动器门应打开),可以在硬盘上直接启动PC-DOS操作系统,此时,出现提示符:C >若计算机启动、自检出现故障,不能启动DOS系统时,可同时按下Ctrl+Alt+Del三个键,再重新启动一次(热启动),或关断主机电源重新送电一次(冷启动),若再失败,说明主机确有故障,应停止上机。
3. 装入DEBUG程序若计算机系统启动正常,可以从磁盘上调用DEBUG程序到内存。
一般C盘上或PC-DOS软盘上装有DEBUG软件,若没有,可以用COPY命令从其它盘拷贝过来,然后从装有DEBUG的磁盘上调用DEBUG程序。
例如:C > DEBUG↙(↙回车符)-(-DEBUG 提示符)或A > DEBUG-当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。
《C++程序设计》实践环节考核规定
《C++程序设计》实践环节考核规定1. 《C++程序设计》实践环节考核大纲一、考核类型上机考核二、目的要求《C++语言程序设计》是计算机科学与应用专业、信息管理专业(本科)的必修课,是培养学生实践动手能力的一门重要专业课程,是为满足计算机应用领域与计算机应用人才的需要而设置的。
C++语言是一种面向对象的编程语言,它集抽象性、封装性、继承性和多态性等面向对象特征于一体,可以帮助人们开发出具有较高数据抽象程度,能够充分体现信息隐蔽、软件重用、易修改、易扩充等特性的大型软件。
《C++程序设计》的实验采用Microsoft Visual C++6.0。
通过上机实践,加深对课程的理解,更好地掌握C++面向对象程序设计的基本方法,增强实际动手能力。
三、考核环境硬件:586以上的PC系列机,主频大于166MHz,内存大于256MB,硬盘空间大于500MB。
软件:中文Windows 2000/NT/XP操作系统,Microsoft Visual C++6.0。
四、考核方法考生抽取试题后,在45分钟内,完成试卷中所要求的全部内容,并作必要的记录。
考核结束后,考生上交试卷。
上机考核成绩由现场老师初评,经考点负责人审核签名,报主考院校核定。
成绩分合格、不合格两类。
五、考核内容●掌握Microsoft Visual C++ 6.0集成开发环境的使用, 新建工程,编辑含有类的C++源文件,存取文件,编译文件,调试程序和运行程序。
●模板。
包括:函数模板、类模板,练习编制函数模板和类模板。
●熟悉面向对象编程思想和多文件编程规范。
●掌握公有继承的赋值兼容性规则、构造函数、复制构造函数和析构函数的设计方法。
●练习使用向量解决实际问题。
●熟悉各类运算符的重载。
●熟悉使用文件的基本方法。
●熟悉继承和包含以及虚函数的多态性。
六、参考书目1.刘振安主编,《C++程序设计》,机械工业出版社2008年2. 薛万鹏译,《C++程序设计教程》,机械工业出版社,2005年3. 钱能,《C++程序设计教程》,清华大学出版社,2006年2 《C++程序设计》上机考核指导《C++语言程序设计》是一门实践性很强的课程,必须通过反复上机练习,深入领悟面向对象程序设计的基本思想。
实验一_源程序的输入和扫描
} //main()结束
实验调试过程及测试结果
输入程序运行调试后实现源程序的输入和扫描:
1、源程序输入如下一段:(可以输入别的任何程序段)
main()
{
int a,b,c;
a = 10;
b=20;
c=a+b;
}
程序运行时输入如下图:
2、源程序扫描又输出上面输入的程序段如下图
i++; //i是统计已写入的字符个数
}
fclose(fp); // 关闭文件句柄
return i;
}
int readbuffer() //子程序开始
{
int flen=0; //定义整形变量flen,初始值为0
int j=0;
char ch;
char *filename="yanan";
//声明变量
printf("2、input o open the file \n");
scanf("%c",&creatflie) ;
if(creatflie=='c')
//printf("\n请输入内容进入你所创建的文件中,输入数字$创建完成\n");
WriteFile(filename);
if(creatflie=='o')
flen++;} //数组指针下移
printf("\n"); //换行
return 1;
} //子程序结束
main() //main()开始
{
char *filename={"yanan"};
源程序的输入和扫描演示教学
湖南农业大学信息科学技术学院学生实验报告
4 关键代码
#include <stdio.h>
int main()
{
freopen("D:\\colin1.txt","r",stdin);//读取实验文件
input();
process();
return 0;
}
【实验结果和总结】(对实验结果进行相应分析,或总结实验的心得体会,并提出实验的改进意见)1 实验结果记录(截图)
实验文件:(截图)
实验结果:(截图)
2 实验总结遇到的问题所用的时间所用方法和手段以及心得体会
这个程序存在很多的不足和漏洞,但是我想这只是我的初步程序,应该花更多的时间去考其他的可能性,尽力的完善它。
所用的时间:程序花费2小时。
遇到的问题;
1. 在处理字母字符和数字字符的时候将每个字符分开输出,比如:#P##R#,#2##3#。
2. 程序里的输入处理语句比较困难,不会用freopen条令。
所用的方法和手段:
1. 设置循环语句,进行判断然后输出。
2. 与同学交流,并上网查询。
源程序的输入及预处理实验报告
实验报告一一、实验题目:源程序的输入及预处理二、实验目的:根据所学知识编写程序使其在预处理之后,将源程序中的注释与空格去掉,并将处理后的源程序输出。
三、实验内容:(1)源代码#include <fstream.h>#include <iostream.h>void pro_process(char *);void main( ) //测试驱动程序{//定义扫描缓冲区char buf[4048]={'\0'}; //缓冲区清0//调用预处理程序pro_process(buf);//在屏幕上显示扫描缓冲区的内容cout<<buf<<endl;}void pro_process(char *buf) //预处理程序{ifstream cinf("source.txt",ios::in);int i=0; //计数器char old_c='\0',cur_c; //前一个字符,当前字符。
bool in_comment=false; //false表示当前字符未处于注释中。
while(cinf.read(&cur_c,sizeof(char))){ //从文件读一个字符switch(in_comment){case false:if((old_c=='/' && cur_c=='*')||(old_c=='/' && cur_c=='/')){ //进入注释i--; //去除已存入扫描缓冲区的字符'/'in_comment=true;}else {if(old_c=='\\' && cur_c=='\n') //发现续行i--; //去除已存入扫描缓冲区的字符'\' else {if(cur_c>='A' && cur_c<='Z')//大写变小写cur_c+=32;if(cur_c =='\t' || cur_c =='\n') //空格取代TAB换行cur_c=' ';buf[i++]=cur_c ;}}break;case true:if((old_c=='*' && cur_c=='/')||cur_c=='\n') //离开注释in_comment=false;}//end of switchold_c= cur_c; //保留前一个字符}//end of whilebuf[i++]='#'; //在源程序尾部添加字符'#'}(2)、运行源代码,将源程序写入source.txt文本中。
输入输出程序设计实验
输入输出程序设计实验
输入输出程序设计实验是一种编程实验,旨在测试和验证程序的输入和输出功能。
以下是输入输出程序设计实验的一些常见任务和要求:
1. 输入验证:确保程序能够正确地读取用户输入的数据,并进行必要的验证,例如检查输入的数据类型、格式和范围是否符合要求。
2. 输出格式化:确保程序能够将结果以适当的格式输出,例如表格、图形或文本。
3. 错误处理:确保程序能够妥善处理错误情况,例如输入数据不正确或异常情况,并给出适当的错误消息。
4. 数据转换:测试程序是否能够将输入数据转换为所需格式或类型,并进行必要的转换处理。
5. 数据排序:测试程序是否能够对输入数据进行排序,例如按照数字大小、字母顺序或时间顺序等。
6. 数据筛选:测试程序是否能够对输入数据进行筛选,例如根据特定条件过滤掉不需要的数据。
7. 数据统计:测试程序是否能够对输入数据进行统计,例如计算平均值、中位数、众数等。
8. 数据可视化:测试程序是否能够将数据以图形或图表的形式呈现,例如柱状图、折线图或饼图等。
在完成输入输出程序设计实验时,需要注意以下几点:
1. 确定实验目的和要求,并制定详细的实验计划和步骤。
2. 选择适当的编程语言和工具,并熟悉相关语法和库函数。
3. 设计合理的输入和输出方案,并进行充分的测试和验证。
4. 记录实验过程和结果,并进行总结和分析。
5. 根据实验结果进行优化和改进,以提高程序的性能和稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一源程序的输入和扫描
学时数:2
[实验内容]:
1、编制一个源程序的输入、扫描程序,从文件中每次读入一行到输入缓冲区(可以用
字符数组实现);然后从缓冲区中依次取出字符显示在屏幕上。
2、从文件每次读入一行到输入缓冲区的功能(可以用字符数组实现)用一个子程序实现。
[实验目的]:
1、通过编制一个源程序的输入、扫描程序,熟悉和了解从文件中读入数据到输入缓冲区的过程。
[实验步骤]:
1、准备:用TC、VC++等开发工具;确定被处理的语言的语法特点(初步确定,可使用现成语言如Pascal、C等)。
编好程序,写好实验报告。
2、上机:输入源程序,修改、调试,运行。
编程思想:
采用一个子程序实现的形式。
(1)程序判断源文件是否为NULL,如果是,则输出错误提示!如果不是,则进入循环。
(2)调用子程序readbuffer(),每次读入一个字符给字符变量,如果字符变量的内容不是回车符,则把字符变量的内容存入数组buffer(),然后读入下一字符,再判断再存入数组,直到一行全存入数组,然后返回主程序,用输出语句输出刚才存入数组的一行字符;(3)如果没有到文件尾,则重复第(2)步,直到文件结束,则退出主程序,完成任务!
[程序要求]:
1)在磁盘上建立一个文件A.c,文件内容输入如下一段C语言源程序。
2)运行编制好的输入、扫描程序,要求运行的输出结果与输入的文件内容相同。
本次实验主要熟悉用C语言实现文件的输入和输出过程,编写这个程序要能实现从键盘输入若干行字符并写入文件中,然后从文件中读出字符,按照输入的格式输出在屏幕上。
首先在磁盘上建立A.c文件,文件内容如下:
A.c文件内容:
main()
{ int a,b ,c;
a = 10; b=20;
c=a+b;
}
然后编写源程序并运行和调式,看输出的文件内容是否和输入的格式一样。
源程序:输入、扫描程序源代码(仅供参考):
# include<stdio.h>
# include<stdlib.h>
# include<conio.h>
int i;
FILE *fp;
char buffer[256];
//声明变量
int readbuffer() //读字符子程序开始
{
int j=0;
char ch;
while(j<256)
{
ch=fgetc(fp);
if (ch=='\n') //字符变量的内容是回车符吗?
{
i=j;return 0; //是回车符,保存字符个数返回0。
} // if
buffer[j]=ch; //不是回车符,把字符变量的内容存入数组buffer(),字符个数加1。
++j;
} // While
return 1;
} //子程序结束
main() //main()开始
{
if((fp=fopen("d:\\a.c","r"))==NULL) //文件是否为NULL,这里的路径必须用两个斜
杠’\\’,其中一个是C语言中的格式符。
{
printf("THE FILE DOESN’T OPEN!"); //如果是,则输出错误提示。
exit(0);
}
while(!feof(fp)) //到文件尾否,到文件尾feof()函数则返回非零值,循环结束。
{
int j;
j=0;
readbuffer(); //如果没有到文件尾,则读入一个字符
while(j<i) //判读入一行的字符个数
{
printf("%c",buffer[j]); //读入字符个数小于源文件语句行的字符个数,则输出字符
j++; //一行字符个数加一
}
printf("\n"); //否则输出回车
getch();
}
fclose(fp);
getch();
} //main()结束
//程序结束
再将输入的A.c文件内容改为如下:
d:\\a.c.。
main()
{ int sum=0,i;
float k;
scanf ("%f plese input (0-100) to total!",&k)
for(i=0;i<k;i++)
sum =sum+i;
}
再运行程序进行调试,输出必须与上面输入的原代码相同。
[实验报告]:
1、写出调试程序出现的问题及解决的方法。
2、写实验报告及程序清单。
3、报告给出测试的结果。