计算机上机实验报告.docx
《计算机上机实验报告.docx》由会员分享,可在线阅读,更多相关《计算机上机实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
计算机上机实验报告
本科实验报告
课程名称:
软件技术基础
实验项目:
线性表的插入和删除
实验地点:
电机馆跨越机房
专业班级:
通信1201学号:
2012001294
学生姓名:
黄元
指导教师:
温景国
2013年11月11日
实验目的:
知道线性顺序表是怎样插入和删除的,学会在计算机上独立的用代码敲出来,并使之成功运行得出结果。
实验内容:
#include
voidins(int*v,intm,int*n,inti,intb)
{
intk;
if(*n==m)
printf("overflow\n");
if(i>*n)
i=*n+1;
if(i<0)
i=1;
for(k=*n;k>=i;k--)
v[k]=v[k-1];
v[i-1]=b;
*n=*n+1;
return;
}
voiddel(int*v,intm,int*n,inti)
{
intk;
if(*n==0)
printf("underflow\n");
if((i<1)||(i>*n))
printf("Notthiselementinthelist\n");
for(k=i;k<*n;k++)
v[k-1]=v[k];
*n=*n-1;
return;
}
intmain()
{
intn=10;
inta[100]={1,2,3,4,5,6,7,8,9,0};
intb,i,j,k;
printf("请输入要插入的数:
");
scanf("%d",&b);
printf("请输入要插入的位置:
");
scanf("%d",&i);
ins(a,100,&n,i,b);
for(k=0;kprintf("%d",a[k]);
printf("\n");
printf("请输入要删除的数的位置:
");
scanf("%d",&j);
del(a,100,&n,j);
for(k=0;kprintf("%d",a[k]);
printf("\n");
}
主要仪器设备:
跨越机房电脑
实验结果与分析:
心得体会:
这个实验需要注意的一点就是线性表的上溢与下溢。
另外,插入的位置在线性表的首部或尾部也应该分析到。
本科实验报告
课程名称:
软件技术基础
实验项目:
栈的操作
实验地点:
电机馆跨越机房
专业班级:
通信1201学号:
2012001294
学生姓名:
黄元
指导教师:
温景国
2013年11月11日
实验目的:
知道在栈的操作中是怎样入栈和退栈的,了解每一个语句在程序中的重要地位。
熟练的在计算机上写出它的代码。
实验内容:
#include
voidpush(int*a,intm,int*top,intx)
{
if(*top==m)
{
printf("overflow\n");
return;
}
*top=*top+1;
a[*top-1]=x;
return;
}
intpop(int*a,intm,int*top)
{
inty;
if(*top==0)
{
printf("underflow\n");
return;
}
y=a[*top-1];
*top=*top-1;
returny;
}
main()
{
intn=9;
inta[10]={1,2,3,4,5,6,7,8,9};
intx,y,i;
printf("请输入要入栈的数:
");
scanf("%d",&x);
push(a,10,&n,x);
for(i=0;i{
printf("%d",a[i]);
}
printf("\n");
printf("退栈运算:
");
y=pop(a,8,&n);
printf("%d\n",y);
for(i=0;i{
printf("%d",a[i]);
}
printf("\n");
}
主要仪器设备:
跨越机房电脑
实验结果与分析:
心得体会:
这个实验需要明白的一点是栈的“先进后出”与栈的“后进先出”,然后注意分析上溢与下溢的情况。
本科实验报告
课程名称:
软件技术基础
实验项目:
数组的压缩存储
实验地点:
电机馆跨越机房
专业班级:
通信1201学号:
2012001294
学生姓名:
黄元
指导教师:
温景国
2013年11月11日
实验目的:
了解数组的压缩存储,知道如何用C语言把他写出来,并使之得出正确的结果。
实验内容:
#include
main()
{
inta[10]={1,2,3,4,5,6,7,8,9,10};
inti,j,k=0;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
if(j<=i)
printf("%5d",a[i*(1+i)/2+j]);
else
printf("%5d",k);
}
printf("\n");
}
}
主要仪器设备:
跨越机房电脑
得出结果与分析:
心得体会:
这个程序的关键一步就是i*(1+i)/2+j这个式子的表达,然后理清数据压缩存储的逻辑就行了。
本科实验报告
课程名称:
软件技术基础
实验项目:
线性表的对分搜索
实验地点:
电机馆跨越机房
专业班级:
通信1201学号:
2012001294
学生姓名:
黄元
指导教师:
温景国
2013年11月11日
实验目的:
了解对分搜索的优越性,知道怎么操作使其在计算机上成功运行,掌握对分搜索的原理。
实验内容:
4、对分搜索
#include
intsearch(inta[],intn,intx)
{
intfirst,last,middle;
first=1,last=n;
while(first<=last)
{
middle=(first+last)/2;
if(x==a[middle-1])
{
returnmiddle;
}
elseif(x{
last=middle-1;
}
else
{
first=middle+1;
}
}
return-1;
}
main()
{
inti,x,num;
inta[10]={1,4,6,7,11,15,29,31,45,56};
printf("数组为:
");
for(i=0;i<10;i++)
{
printf("%2d",a[i]);
}
printf("\n请输入要搜索的数:
");
scanf("%d",&x);
num=search(a,10,x);
if(num==-1)
{
printf("¸该数不在数组中\n");
}
else
{
printf("该数为数组的第%2d个数\n",num);
}
}
主要仪器设备:
跨越机房电脑
实验结果与分析:
心得与体会:
在这个实验中,比较容易弄混的就是last=middle-1与first=middle+1这两个加1与减1的问题,直接影响到首元素与尾元素能否被搜索到的问题。
另外还需要理清的就是什么情况下该数不在数组中。
本科实验报告
课程名称:
软件技术基础
实验项目:
冒泡排序
实验地点:
电机馆跨越机房
专业班级:
通信1201学号:
2012001294
学生姓名:
黄元
指导教师:
温景国
2013年11月11日
实验目的:
了解冒泡法是怎样将不规则排列的数排成规则排列的数的,掌握它的原理并学会在计算机上敲出她的代码,使之成功运行。
实验内容:
5、冒泡排序
#include
main()
{
inta[10],i,j,t;
printf("将数组由小到大排列");
for(i=0;i<10;i++)
{
printf("请输入第%2d个数:
",i+1);
scanf("%d",&a[i]);
}
printf("原数组排列为:
");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf("\n");
for(i=0;i<10;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("新数组排列为:
");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf("\n");
}
主要仪器设备:
跨越机房电脑
实验结果与分析:
心得体会:
这个程序的关键就是理清冒牌排序的逻辑,寻找排序的技巧,其实也就是将最大或最小的最小的数依次往后排,保证前n个数中第n个数是最大的,然后将n逐一递减,直到第2个数大于第一个数为止。