通信与信息工程学院软件实验报告
(4)删除操作及结果:
在文本文档“123456789gfedcbaabcdefg”中,删去文本“abcdefg”,其结果应为“123456789gfedcba”,其C程序执行结果如下:
(5)查找操作及结果:
在文本文档“123456789gfedcba”中,查找“123456789”字符串,其结果应为提示“===文本中存在这样的字符串===”。其C程序执行结果如下:
11
通信与信息工程学院软件实验报告
(6)替换操作及结果
在文本文档“123456789gfedcba”中,将“gfedcba”字符串替换为“abcdefg”字符串,其结果应为“123456789abcdefg”。其C程序执行结果如下:
(7) 实验结果分析。
从上面的测试结果可以看出,本次实验程序基本完成了实验的要求内容而且在功能上还进行了一定程度的的丰富,实现了文件的打开、保存以及一些简单的编辑操作。
程序通过打开文件后对文件内容进行字符串的一系列操作,运用C语言定义的指令对文件系统进行编辑,熟悉了各指令的用途,进一步了解了C语言是怎样对文件系统进行操作的,对后续课程的学习奠定了坚实的基础。
12
通信与信息工程学院软件实验报告
题目二:P018M
实验要求:
编制不同数制间的转换程序。要求提供输入输出界面,当输完一个任意十进制数字,程序能自动将其转化为另外的数制表示的值,包括二进制、八进制和十六进制。
1、问题分析与方案设计。
算法处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、实数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。C语言提供了一些数据类型,由这些数据类型可以构造出不同的数据结构。包括:基本类型、构造类型、指针类型和空类型。
数据一般常用的有十六进制、十进制、八进制和二进制。在计算机内部,数据一般以二进制的方式存储和运算。当往计算机中输入一个非二进制数据时,计算机会自动将其转换为二进制数来存储或计算,当需要输出其他进制的数据时,需要转换成其他进制的数据输出。
根据设计题目的要求,可以知道要实现进制数的转换,可以将不同的进制数转换成字符串输出,即可以实现将不同进制数的显示。对于转换,可以考虑使用一个模块,将任意进制的数(程序接受时依然当作字符串接收)转换成十进制的整数,然后再从这个十进制整数出发转换成任意进制的数显示(也是一个字符串)。这个程序设计的关键在于任意进制的数转换成十进制数以及十进制数转换成任意进制数!
转化成十进制时可以通过计算输入字符串的长度,在知道输入是几进制的前提下就可以将不同位上的数转换成十进制求和就可以得到;转换成任意进制时可以使用短除法,不断相除取余数知道商为零为止,得到的字符串在翻转后即使得到的任意进制数对应的字符串。
程序中还加入了各种进制的判断程序,通过调用判断输入数据是否为已选进制的子程序来判断输入数据格式是否符合要求。本次实验程序设计了判断十六进
13
通信与信息工程学院软件实验报告
制、十进制、八进制和二进制的子程序,从而使程序具有更高的可靠性和更强的鲁棒性。通过运用主程序与子程序之间的相互调用,也使得程序结构变得更加清晰,具有更好的可读性。
具体的程序流程图如下: 开始
1.输入二进制数
2.输入八进制数
3.输入十进制数
4.输入十六进制数
0.退出 N 正确否
显示结果 Y choice=0 Choice!=0
输入相应的进制数
Y
相应的进制数否 N Y
1.转为二进制 1.转为二进制
2.转为八进制 2.转为十进制
3.转为十六进制 3.转为十六进制
0.退出 0.退出
14
结束 Choice=0 1.转为八进制 2.转为十进制 3.转为十六进制 0.退出 1.转为二进制 2.转为八进制 3.转为十六进制 0.退出 Choice=0
通信与信息工程学院软件实验报告
2、编程实现。
程序的关键源程序代码如下:
(1) 判断输入数据是否为已选进制数据:
do { inti=0; scanf(\ intlen=strlen(a); for(i=0;i 1) if(a[i]=='0'||a[i]=='1')··················判断是否为二进制数据 2) if(a[i]>='0'&&a[i]<='7')···············判断是否为八进制数据 3) if(a[i]>='0'&&a[i]<='9')···············判断是否为十进制数据 4) if((a[i]>='0'&&a[i]<='9')||(a[i]>='A'&&a[i]<='F')||(a[i]>='a'&&a[i]<='f')) ··································判断是否为十六进制数据 { jud=0; } else { system(\ printf(\ 1) printf(\ 此数据非二进制数\\n\······显示提示 2) printf(\ 此数据非八进制数\\n\······显示提示 3) printf(\ 此数据非十进制数\\n\······显示提示 4) printf(\ 此数据非十六进制数\\n\····显示提示 printf(\ printf(\请重新输入:\ i=len; jud=1; } } }while(jud); } (2) 十进制数转换成其他进制数据: { intnum=1,i,j,ni; int s[100]; for(i=0;num!=0;i++) { 1) ni=y%2;·······················十进制数转换成二进制数 2) ni=y%8;·······················十进制数转换成八进制数 15