计算机软件实验报告Word格式文档下载.docx
- 文档编号:19654415
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:12
- 大小:23.28KB
计算机软件实验报告Word格式文档下载.docx
《计算机软件实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机软件实验报告Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
/*加法运算*/
-'
a,c,b,a-b);
/*减法运算*/
*'
a,c,b,a*b);
/*乘法运算*/
/'
a,c,b,a/b):
puts("
error"
);
/*除法运算*/
default:
break;
/*其它*/
}
}
4)调试分析
(1)调试过程中所遇到的问题及解决的方法
调试中提示缺少分号,输入时的错误,修改后问题解决;
调试中提示不可识别的标识符,发现标点符号使用了全角,改成半角后问题解决。
(2)经验和体会:
程序输入时要细心,注意标点符号的输入。
(3)测试结果:
输入:
1+3
输出:
1+3=4
2-4
2-4=-2
1*5
1*5=5
10/2
10/2=5
实验报告二
利用栈的存储结构,编程实现任意表达式中各种括号(“(、)”,“[、]”,“{、}”)交叉使用时,语法的匹配是否合法判定。
程序设计的任务是利用栈的存储结构,编程实现任意表达式中各种括号(“(、)”,“[、]”,“{、}”)交叉使用时,语法的匹配是否合法判定。
通过此程序的设计:
掌握顺序栈的类型定义方法。
。
掌握栈先进后出运算原则在解决实际问题中的应用
掌握使用栈的原理来解决表达式中的括号配对问题。
stdlib.h>
string.h>
#defineMAX_STACK_SIZE100
typedefstructSqStack{
chardata;
structSqStack*next;
}SqStack;
//链元素
typedefstructStack{
structSqStack*base;
//栈底指针
structSqStack*top;
//栈顶指针
}Stack;
//栈
StackS;
inta,Aj=0;
//全局变量
charstring[100];
typedefstructnode{
charkey;
}element_tr;
//运算符栈
typedefstructNode{
intdata;
}element_nd;
//操作数元素
voidcreatstack(Stack&
S)
S.top=S.base=NULL;
}//建立初始化链栈
voidpush(Stack&
S,chare)
SqStack*Q;
Q=(SqStack*)malloc(sizeof(SqStack));
Q->
next=S.top;
S.top=Q;
S.top->
data=e;
++Aj;
}//左括号入栈
charPop(Stack&
{
chare;
SqStack*q;
e=S.top->
data;
q=S.top->
next;
free(S.top);
S.top=q;
returne;
}//括号出栈
intcheck()
a=1,Aj=0;
intw=0;
charsh,ch,*st,*stt;
printf("
请输入算术表达式并以=结束输入:
\n"
%s"
string);
getchar();
st=stt=string;
ch=*st;
sh=*++stt;
while(ch!
='
)
if(w==0)
if(ch=='
]'
||ch=='
}'
)'
{a=-1;
Aj=1;
}
if((ch=='
['
('
{'
)&
&
(sh=='
))
Aj++;
if(a==-1)
break;
w++;
)//判断是否满足入栈和出栈条件
switch(ch)
{
case'
push(S,ch);
break;
if(Pop(S)!
{a=-1;
Aj++;
else
{Aj++;
if(Pop(S)!
else
{Aj++;
{a=-1;
}//出栈并与字符ch匹配比较
ch=*(++st);
sh=*(++stt);
if((S.base==S.top)&
(ch=='
{a=-1;
if(S.base!
=S.top)
a=-1;
returna;
voidmain()//主函数
intst;
charw='
y'
;
\n*******括号配对判别********\n"
LL:
while(w!
n'
w!
N'
creatstack(S);
st=check();
if(st==-1)
{
printf("
表达式中第(%d)个括号与对应括号不匹配,请重新输入\n"
Aj);
gotoLL;
{printf("
表达式中括号匹配\n"
}
printf("
继续请输入y,退出请输入n"
!
w=getchar();
getchar();
********谢谢使用本系统!
********\n"
VisualC++以项目的方式创建应用程序,并支持多种不同类型的项目.我们的编程经验还不够,所以尽可能创建Win32控制台程序,便于我们对程序的控制。
编写程序时大多是一个一个模块的编写,所以我们调试时最好分模块进行,自底向上,即先调试最底层函数。
必要时可以另写一个调用驱动程序。
这种表面上麻烦的工作,实际上可以大大降低调试所面临的复杂性,提高调试工作效率。
*******括号配对判别*******
请输入算数表达式并以=结束输入:
〈5+4*〈4-1=
表达式中第〈2〉个括号与对应括号不匹配,请重新输入
请输入算术表达式并以=结束输入:
实验报告三
排序:
实现冒泡排序、直接插入排序和直接选择排序的算法。
程序设计的任务是排序:
通过此程序的设计熟练掌握希尔排序、快速排序、堆排序等高效排序算法。
/#include<
iostream>
usingnamespacestd;
typedefintElemType;
//直接插入排序
voidInsertSort(ElemTypeA[],intn)
inti,j;
ElemTypex;
for(i=1;
i<
n;
i++){//进行n-1次插入
x=A[i];
//准备插入第i个元素
for(j=i-1;
j>
=0;
j--){//从第i-1个开始往前找插入点
if(x<
A[j])
A[j+1]=A[j];
break;
A[j+1]=x;
//插入
//直接选择排序
voidSelectSort(ElemTypeA[],intn)
inti,j,k;
for(i=0;
=n-2;
i++)
{//每一趟选择最小元素并与A[i]交换
k=i;
for(j=i+1;
j<
=n-1;
j++)//查找最小元素的下标
if(A[j]<
A[k])k=j;
if(k!
=i){//交换
x=A[i];
A[i]=A[k];
A[k]=x;
//冒泡排序
voidBubbleSort(ElemTypeA[],intn)
inti,j,flag;
//flag为交换标记
for(i=1;
i++){//最多n-1趟排序
flag=0;
//假设本次没有交换
for(j=n-1;
=i;
j--)//第i趟
if(A[j]<
A[j-1]){
flag=1;
//出现交换
x=A[j];
A[j]=A[j-1];
A[j-1]=x;
}
if(flag==0)return;
inti,j,N=5;
cout<
<
"
请输入个整数:
ElemTypeA[5];
for(j=0;
j<
N;
j++)
cin>
>
A[j];
排序前为:
endl;
for(i=0;
i<
i++)
cout<
A[i]<
直接插入排序:
InsertSort(A,N);
直接选择排序:
SelectSort(A,N);
冒泡排序:
BubbleSort(A,N);
调试过程中实参和形参的类型不一致导致程序错误,修改其类型,调试成功;
调试运行时,输入不同情况的用例,以测试程序运行结果的正确性。
(2)算法的时间和空间复杂度分析
直接插入法排序的时间复杂度为O(n),空间复杂度为O
(1);
冒泡排序的时间复杂度为O(n),空间复杂度为O
(1);
直接选择法排序的时间复杂度为O(n2),空间复杂度为O
(1);
(3)经验和体会:
注意采用缩进方式书写程序,这样程序更清晰。
适当的加注解,程序更有可读性。
(4)测试结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 实验 报告