- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《算法设计与分析 》实验报告 - PAGE 1 -
实验目的
掌握字符串的存储方法;
掌握英文句子按单词和标点符号分割的方法;
掌握算术表达式按运算对象和运算符(只涉及+、-、*、/)分割的方法。
实验内容
输入英文句子,如This is a string 存入数组:
0
1
2
3
T
h
i
s
i
s
a
s
t
r
i
n
g
\0
则运行程序后分割如下:
0
T
h
i
s
\0
1
i
s
\0
2
a
\0
3
s
t
r
i
n
g
\0
输入算术表达式,如:2*3+6/3. 存入数组。
则运行程序后分割如下:
0
2
\0
1
*
\0
2
3
\0
3
+
\0
4
6
\0
5
/
\0
6
3
\0
7
.
\0
实验要求
用C(C++)语言完成算法设计和程序设计。
上机调试通过实验程序。
分别输入英语句子和算术表达式记录程序运行的结果。
给出具体的算法分析,包括时间复杂度和空间复杂度等。
撰写实验报告(把输入实验数据及运行结果用抓图的形式粘贴到实验报告上)。
实验步骤与源程序
= 1 \* GB2 ⑴ 实验步骤
先从具体的问题中抽象出适当的数学模型,然后设计出相应的算法,其中,需要设计一个主函数来实现菜单的输出,设计另外几个函数来求分别实现空格分割字符串,判断+、-、*、/、.,分割字符串直到结束,列菜单等,最后,串接函数,并调试程序,在调试的时候,我先进行英文句子的输入,实现单词和标点符号的分割,再进行算术表达式的输入,实现实现运算对象和运算符的分割,多次调试后,发现没有问题,得出实验结果,并截图。
= 2 \* GB2 ⑵ 源代码
#include stdio.h
#include stdlib.h
#include string.h
void split1() // 空格分割法
{
char s[1000];
char line[255][255];
printf( 请输入一组字符串:);
gets(s);
int i=0,n=0,k;
do
{k=0;while(s[n]== ) n++;
for(;s[n]!=\0s[n]!= s[n]!=\n;n++,k++)
line[i][k]=s[n];
line[i][k]=\0;
i++;
}while(s[n]!=\0);
printf( 分割后的字符串数组:\n);
int j;
for(j=0;ji;j++) // 输出字符串数组
puts(line[j]);
system(pause);
}
int operators(char op)
{
switch(op)
{
case +:
case -:
case *:
case /:
case =:
case .: return 1; // 是运算符
default: return 0; // 不是运算符
}
}
int token(char *str1,char *str2,int pos)
{
int i,j;
i=pos; // 从分割位置开始
while(str1[i]== ) // 跳过空字符
i++;
if(str1[i]!=\0) // 不是字符串结束
{
j=0; // 找下一个空格符
while(str1[i]!=\0 str1[i]!= )
{
str2[j]=str1[i]; // 拷贝非空格符
if(operators(str1[i])) // 是不是运算符
if(j0)
文档评论(0)