C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(8页珍藏版)》请在冰豆网上搜索。
C语言实验报告
中央财经大学
实验报告
实验项目名称C语言程序设计
所属课程名称指针
实验类型设计型实验
实验日期2012-12-19
班级信息12
学号2012312255
姓名吴桐
成绩
实验室:
6号楼302
实验概述:
利用指针完成相应程序设计
【实验目的及要求】
1.理解指针的基本个概念,掌握各种指针变量的定义方法及指针变量的基本运算规则。
2.掌握运用指针进行数组操作的方法。
3.掌握指针类型数据作函数参数时的数据传递方法。
【实验环境】(使用的软件)TurboC
实验内容:
【实验方案设计】(题目及程序清单)
(1)定义一个函数voidsort(inta[],intn),用选择法对数组a中的元素排序,并定义main函数调用sort函数。
#include
#defineN10
voidsort(inta[],intn)
{
inti,j,min,m,t;
for(i=1;i{min=*(a+i-1);
for(j=i;jif(*(a+j){min=*(a+j);
t=j;}
m=*(a+i-1);
*(a+i-1)=*(a+t);
*(a+t)=m;}
}
voidmain()
{
inta[N],t;
for(t=0;tscanf("%d",&a[t]);
printf("\n");
sort(a,N);
for(t=0;tprintf("%d",a[t]);
printf("\n");
}
(2)写一个函数,求方阵的行、列、斜对角线之和。
#include
#defineN5
voidadding(int(*p)[N])
{introw[N]={0},col[N]={0},cross[2]={0},i,j;
for(i=0;i{for(j=0;j{row[i]+=*(*(p+i)+j);
col[j]+=*(*(p+i)+j);}
cross[0]+=*(*(p+i)+i);
cross[1]+=*(*(p+i)+N-1-i);}
for(i=0;iprintf("row[%d]=%d\ncol[%d]=%d\n",i,row[i],i,col[i]);
printf("cross[0]=%d\ncross[1]=%d\n",cross[0],cross[1]);
}
voidmain()
{inta[N][N],i,j;
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
adding(a);
}
(3)写一个函数,使给定的一个二维整型数组(3X3)转置,即行列互换。
#include
#defineN3
voidallswap(int(*p)[3])
{intt,i,j;
for(i=0;ifor(j=i+1;j{t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=t;}
}
voidmain()
{
inta[N][N],i,j;
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
printf("\n");
allswap(a);
for(i=0;i{for(j=0;jprintf("%d",a[i][j]);
printf("\n");}
}
(4)编写函数,对传送过来的3个数选出最大值和最小值,并通过形参传回调用函数。
#include
voidswap(float*pa,float*pb)
{
floatt;
t=*pa;
*pa=*pb;
*pb=t;
}
voidchoose(float*p1,float*p2,float*p3)
{
if(*p1>*p2)swap(p1,p2);
if(*p1>*p3)swap(p1,p3);
if(*p2>*p3)swap(p2,p3);
}
voidmain()
{
floata,b,c;
scanf("%f%f%f",&a,&b,&c);
choose(&a,&b,&c);
printf("minimum:
%f\nmaximum:
%f",a,c);
}
【实验过程】(实验步骤、记录、数据、分析)
1.运行TurboC
2.新建源程序
3.编写程序
4.编译程序,发现错误并改正
5.使用连接程序进行程序的连接
6.运行程序
7.将运行结果与正确结果对照,进一步完善程序
二.将运行的程序复制到U盘里,并记录实验结果
三.完成实验报告
【结论】(结果)
(1)5231687904
0123456789
(2)12345
67890
32572
87964
34285
Row[0]=15
Col[0]=21
Row[1]=30
Col[1]=22
Row[2]=19
Col[2]=27
Row[3]=34
Col[3]=34
Row[4]=22
Col[4]=16
Cross[0]=24
Cross[1]=27
(3)123
456
789
147
258
369
(4)462
Minimum:
2.000000
Maximum:
6.000000
【小结】
1、永远记住指针变量指向哪里、指向变量的内容、不要使用未赋值的指针变量。
2、*和&可以说是互为逆运算的运算符,因此,*&a和&*a都等于a。
3、不能直接给指针变量赋一个整数,例如:
p1=0xffff;此赋值语句是错误的。
4、不可以用*去引用已赋0值的指针变量。
例如:
p1=0;*p1=10;此时就是错误的!
5、注意花括号的应用!
在本次实验中,在compile的过程中我出现了几次结果与预期不符的情况,多是由于在使用for循环时将花括号编写在了不正确的位置,导致循环次数或循环对象错误。
这是深刻教训,今后在编程时,一定要注意“桌前检查”,带入数据将循环走一次,才能有效减少错误量,更加节省时间。
6、当定义指向由m个元素组成的一维数组的指针变量时(数据类型(*指针变量名)[常量表达式]),要注意常量表达式的值。
由于此时定义的指针是行指针,常量表达式的值决定了一行元素的个数,如果与题给条件不符的话,很可能出现warning的情况。
指导教师评语及成绩:
评语:
成绩:
指导教师签名:
批阅日期:
实验报告说明
1.实验项目名称:
要用最简练的语言反映实验的内容。
要求与实验指导书中相一致。
2.实验类型:
一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。
3.实验目的与要求:
目的要明确,要抓住重点,符合实验指导书中的要求。
4.实验原理:
简要说明本实验项目所涉及的理论知识。
5.实验环境:
实验用的软硬件环境(配置)。
6.实验方案设计(思路、步骤和方法等):
这是实验报告极其重要的内容。
概括整个实验过程。
对于操作型实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。
对于设计型和综合型实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。
对于创新型实验,还应注明其创新点、特色。
7.实验过程(实验中涉及的记录、数据、分析):
写明具体上述实验方案的具体实施,包括实验过程中的记录、数据和相应的分析。
8.结论(结果):
即根据实验过程中所见到的现象和测得的数据,做出结论。
9.小结:
对本次实验的心得体会、思考和建议。
10.指导教师评语及成绩:
指导教师依据学生的实际报告内容,用简练语言给出本次实验报告的评价和价值。
注意:
∙实验报告将记入实验成绩;
∙每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。