第五次实验报告张明娟.docx

上传人:b****2 文档编号:3157345 上传时间:2023-05-05 格式:DOCX 页数:35 大小:168.23KB
下载 相关 举报
第五次实验报告张明娟.docx_第1页
第1页 / 共35页
第五次实验报告张明娟.docx_第2页
第2页 / 共35页
第五次实验报告张明娟.docx_第3页
第3页 / 共35页
第五次实验报告张明娟.docx_第4页
第4页 / 共35页
第五次实验报告张明娟.docx_第5页
第5页 / 共35页
第五次实验报告张明娟.docx_第6页
第6页 / 共35页
第五次实验报告张明娟.docx_第7页
第7页 / 共35页
第五次实验报告张明娟.docx_第8页
第8页 / 共35页
第五次实验报告张明娟.docx_第9页
第9页 / 共35页
第五次实验报告张明娟.docx_第10页
第10页 / 共35页
第五次实验报告张明娟.docx_第11页
第11页 / 共35页
第五次实验报告张明娟.docx_第12页
第12页 / 共35页
第五次实验报告张明娟.docx_第13页
第13页 / 共35页
第五次实验报告张明娟.docx_第14页
第14页 / 共35页
第五次实验报告张明娟.docx_第15页
第15页 / 共35页
第五次实验报告张明娟.docx_第16页
第16页 / 共35页
第五次实验报告张明娟.docx_第17页
第17页 / 共35页
第五次实验报告张明娟.docx_第18页
第18页 / 共35页
第五次实验报告张明娟.docx_第19页
第19页 / 共35页
第五次实验报告张明娟.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第五次实验报告张明娟.docx

《第五次实验报告张明娟.docx》由会员分享,可在线阅读,更多相关《第五次实验报告张明娟.docx(35页珍藏版)》请在冰点文库上搜索。

第五次实验报告张明娟.docx

第五次实验报告张明娟

LIAOCHENGUNIVERSITY

计算机学院实验报告

【2015~2016学年第2学期】

【一、基本信息】

【实验课程】

高级语言程序设计

【设课形式】

非独立

【课程学分】

4

【实验项目】

指针、结构与文件程序设计

【项目类型】

基础□综合□设计□研究创新□其它[]

【项目学时】

6

【学生姓名】

张明娟

【学号】

2015205550

【系别专业】

电子商务

【实验班组】

2015级3班组台

【同组学生】

【实验室名】

【实验日期】

2016-6

【报告日期】

2016-6

【二、实验教师对报告的最终评价及处理意见】

 

实验成绩:

(涂改无效)

指导教师签名:

年月日

注:

要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案

实验预习

实验目的和要求

1、深刻理解普通变量和指针变量、地址的概念,掌握使用指针变量的方法;

2、掌握带有指针形参的函数的定义及调用方法;

3、正确使用指针数组元素、字符串;

4、正确使用函数指针调用函数;

5、掌握结构类型变量与数组的定义和使用;

6、掌握使用结构指针和结构变量名使用结构成员的方法;

7、掌握链表的基本概念和操作;

8、掌握文件与文件指针的概念;

9、学习使用文件打开、文件关闭、读写文件等基本的文件操作函数。

实验内容和原理或涉及的知识点:

1、编写函数printArray,使用指针实现打印一维整型数组中所有元素的操作。

要求:

每行打印5个整数。

在main函数中定义一个整型数组并初始化,验证printArray函数。

2、编写函数swap,实现交换调用函数中两个整型变量值的操作。

要求:

使用形参为指针的函数swap完成交换功能。

3、编写函数strcat,实现两个字符串连接。

要求:

不允许调用C的字符串函数strcat。

主程序中从键盘输入一个字符串。

调用strcat函数实现字符串拷贝操作。

输出拷贝后字符串的内容。

4、编写函数strcmp,实现2个字符串的比较。

函数原型为:

intstrcmp(char*p1,char*p2)

5、编写函数sort,使用指针实现对一个整型数组从小到大进行排序。

6、从键盘输入4个学生的学号、姓名、语文、数学、英语信息,然后计算出每个学生的平均成绩,最后按平均成绩从高到低的顺序输出。

要求:

学生的信息包括学号、姓名、语文、数学、英语、平均成绩。

4个学生的成绩存放在一维数组中。

7、下面的程序,构造一个如图2所示的三个结点的链表,并顺序输出链表中结点的数据。

图2包含三个结点的链表

8、利用共用体输出一个float类型数据在计算机内部的二进制形式。

9、利用指向函数的指针作为参数,构造一个可以对字符串作不同处理的通用的函数。

要求:

通用字符串处理函数名是voidstringHandler(char*,void(*p)(char*)),写出两个具体的字符串处理函数:

voidfirstUpper(char*),将字符串中每个单词的首字母大写。

voidallUpper(char*),将字符串中所有字母大写。

然后分别使用stringHandler调用这两个具体处理函数,分别输出结果进行验证。

10、编写程序,从键盘输入某宿舍楼6家住户某月的水电消耗量及水费和电费标准,计算各户应交纳的水费和电费。

数据及要求如下:

(1)水费标准为:

1.5元/吨,电费标准为:

0.5元/度,6户人家的信息如下表:

住户地址

水耗(吨)

电耗(度)

101

5

150

201

4

90

301

4

120

401

3

78

501

5

60

601

6

105

将表中信息按下面格式组织在文件input.dat中:

1.50.5

1015150

201490

3014120

401378

501560

6016105

要求程序从文件input.dat中读取上述数据。

(2)分别计算每户应交纳的电费、水费以及电费水费的总和。

●汇总全部住户水费、电费的总和;

●将计算结果按下面格式写入文件charge.dat中。

表格线不必输出,第一行内容可使用英文或拼音码表示。

住户地址

水耗(吨)

水费(元)

电耗(度)

电费(元)

合计(元)

101

5

7.5

150

75

82.5

201

4

6

90

45

51

301

4

6

120

60

66

401

3

4.5

78

39

43.5

501

5

7.5

60

30

37.5

601

6

9

105

52.5

61.5

total

27

40.5

603

301.5

342

实验条件:

1、装有Windows操作系统的微型计算机;

2、CodeBlocks软件。

实验设计方案:

1、分析问题。

2、画出程序的流程图。

3、实现程序。

实验数据和实验结果记录

1.解:

#include

intprintArray(int*m,intn)

{

inti;

for(i=0;i

{

printf("%d",*(m+i));

if(((i+1)%5)==0)

printf("\n");

}

}

intmain()

{

inta[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

printArray(a,15);

}

2.解:

#include

intswap(int*m,int*n)

{

intp;

p=*m;

*m=*n;

*n=p;

}

intmain()

{

inta,b;

int*pointer1,*pointer2;

scanf("%d,%d",&a,&b);

pointer1=&a;

pointer2=&b;

swap(pointer1,pointer2);

printf("%d,%d",a,b);

}

3.解:

#include

voidstrca(char*a,char*b)

{

for(;*a!

='\0';a++);

for(;*b!

='\0';a++,b++)

*a=*b;

*a='\0';

}

voidmain()

{

chara[]="Hello";

charb[]="world!

";

strca(a,b);

puts(a);

}

4.解:

#include

voidmain()

{

intstrcmp(char*p1,char*p2);

charstr1[30],str2[30];

printf("\npleaseinputstring1:

");

gets(str1);

printf("\npleaseinputstring2:

");

gets(str2);

printf("\t%d\n",strcmp(str1,str2));

}

intstrcmp(char*p1,char*p2)

{

inti=0;

while(*(p1+i)==*(p2+i))

{

if(*(p1+i++)=='\0')//全部字符相同时返回结果0

{

return0;

}

}

return(*(p1+i)-(*(p2+i)));//不同时返回结果为第一对不同字符的ASCII码的差值

}

5.解:

#include

#defineN10

voidsort(int*p,intn)

{

inti,j,k,t;

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(*(p+j)<*(p+k))

k=j;}

if(k!

=i)

{

t=*(p+i);

*(p+i)=*(p+k);

*(p+k)=t;

}

}

}

intmain()

{

inti,a[N];

printf("PleaseenterNintegernumbers:

");

for(i=0;i

scanf("%d",&a[i]);

sort(a,N);

printf("Fromsmalltolargetosort:

");

for(i=0;i

printf("%d",a[i]);

}

解:

6.解

#include

#defineN4

structStduent

{

intnum;

charname[20];

floatscore[3];

floataver;

};

structStduentstu[N],*p=stu,t;

voidinput(structStduentstu[])

{

inti;

printf("请输入N名学生的信息:

学号、姓名、3名成绩:

\n");

for(i=0;i

{

scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);

stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/(3.0);

}

}

structStduentaverage(structStduentstu[])

{

inti,j,k;

for(i=0;i

{

k=i;

for(j=i+1;j

if(stu[k].aver

k=j;

if(k!

=i)

{

t=stu[i];

stu[i]=stu[k];

stu[k]=t;

}

}

}

voidprint(structStduentstu[])

{

inti;

printf("\n按平均成绩从高到低依次为:

\n");

for(i=0;i

printf("%d%s%f%f%f%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver);

}

intmain()

{

input(p);

average(p);

print(p);

}

 

7.解:

#include

structStudent

{

intnumber;

structStudent*next;

};

intmain()

{

structStudenta,b,c,*head,*p;

a.number=10;

b.number=20;

c.number=30;

head=&a;

a.next=&b;

b.next=&c;

c.next=NULL;

p=head;

do

{

printf("%d\n",p->number);

p=p->next;

}while(p!

=NULL);

}

8.解:

#include

#defineN1000000

unionFF

{

floatf;

}a;

intmain()

{

intx[100];

printf("请输入任意一个含有六位小数的float型的浮点数(如3.333333):

\n");

scanf("%f",&a.f);

intn=a.f;

intnn=a.f;

inti=0,j;

while(n!

=0)

{

x[i]=n%2;

n/=2;

i++;

}

for(j=i-1;j>=0;j--)

printf("%d",x[j]);

printf(".");

intm=(int)(a.f*N)%N;

intl=0,y[100];

while

(1)

{

m*=2;

intmm=m/N;

y[l]=mm;

if(mm>0)

{

m=m%N;

if(m==0)

break;

if(l>10)

break;

}

l++;

}

 

intll;

if(l>10)

{

for(ll=0;ll<10;ll++)

printf("%d",y[ll]);

printf("此数小数部分转换过长,自动保存10位小数\n");

}

else

{

for(ll=0;ll

printf("%d",y[ll]);

printf("\n");

}

return0;

}

9.解:

#include

voidfirstUpper(char*M)

{

inti,word=0;

for(i=0;M[i]!

='\0';i++)

if(M[i]=='')

word=0;

elseif(word==0)

{

word=1;

if(M[i]>='a'&&M[i]<='z')

M[i]=M[i]-32;

}

}

voidallUpper(char*M)

{

inti;

for(i=0;M[i]!

='\0';i++)

if(M[i]>='a'&&M[i]<='z')

M[i]=M[i]-32;

}

voidstringHandler(char*M,void(*p)(char*M))

{

(*p)(M);

printf("Thefinalstring:

");

puts(M);

}

intmain()

{

chara[50];

intn;

printf("Pleaseenterthestring:

");

gets(a);

printf("Pleasechoose1or2:

");

scanf("%d",&n);

if(n==1)

stringHandler(a,firstUpper);

else

stringHandler(a,allUpper);

}

10.解:

#include

#include

#definesize7

structconsumer

{

intnum;//住户地址

intwaterc;//水耗

floatwaterm;//水费

intelec;//电耗

floatelem;//电费

floattotal;//合计

}co[size];

intmain()

{

FILE*fp1,*fp2;

inti,counter;

floata,b;

counter=size-1;

if((fp1=fopen("E:

\\input.dat","rb"))==NULL)

{

printf("cannotopenfile.\n");

exit

(1);

}

fscanf(fp1,"%f%f\n",&a,&b);//读电费、水费标准

printf("%f,%f",a,b);

for(i=0;i

{

fscanf(fp1,"%d%d%d",&co[i].num,&co[i].waterc,&co[i].elec);

printf("%d%d%d",co[i].num,co[i].waterc,co[i].elec);

co[i].waterm=co[i].waterc*a;

co[i].elem=co[i].elec*b;

co[i].total=co[i].waterm+co[i].elem;

}

fclose(fp1);

if((fp2=fopen("E:

\\charge.dat","wb"))==NULL)

{

printf("cannotopenfile\n");

exit

(1);

}

printf("********************\n");

fprintf(fp2,"********************\n");

printf("地址水耗(吨)水费(元)电耗(度)电费(元)合计(元)\n");

fprintf(fp2,"地址水耗(吨)水费(元)电耗(度)电费(元)合计(元)\n");

for(i=0;i

{

printf("%d%d%f%d%f%f\n",co[i].num,co[i].waterc,co[i].waterm,co[i].elec,co[i].elem,co[i].total);

fprintf(fp2,"%d%d%f%d%f%f\n",co[i].num,co[i].waterc,co[i].waterm,co[i].elec,co[i].elem,co[i].total);

}

co[counter].waterc=0;

co[counter].waterm=0;

co[counter].elec=0;

co[counter].elem=0;

co[counter].total=0;

for(i=0;i

{

co[counter].waterc+=co[i].waterc;

co[counter].waterm+=co[i].waterm;

co[counter].elec+=co[i].elec;

co[counter].elem+=co[i].elem;

co[counter].total+=co[i].total;

}

printf("total%d%f%d%f%f\n",co[counter].waterc,co[counter].waterm,co[counter].elec,co[counter].elem,co[counter].total);

fprintf(fp2,"total%d%f%d%f%f\n",co[counter].waterc,co[counter].waterm,co[counter].elec,co[counter].elem,co[counter].total);

fclose(fp2);

}

 

记录成绩(涂改无效)

合格□

不合格□

【实验结果分析及心得】

1、认真分析程序结果,思考是否完成题目要求,是否还有其他的实现方案。

2、总结编程过程中遇到的问题及解决办法,记录各种编程技巧。

课程设计:

图书管理信息系统

解:

#include

#include

structbook

{

charno[10];//书号

charname[10];//书名

charpublishday[10];//出版日期

charchapt[3];//类别

charwriter[10];//作者

charindex[20];//借阅标记

intrepeat;//借阅次数

charadd[20];//备份

}a[50];

intmenu()//杨国林

{

inti;

printf("*******************************************************\n");

printf("*欢迎来到图书管理系统*\n");

printf("**\n");

printf("*主菜单*\n");

printf("*●[1]图书信息输入*\n");

printf("*●[2]图书信息显示*\n");

printf("*●[3]图书信息查询*\n");

printf("*●[4]图书信息插入*\n");

printf("*●[5]图书信息删除*\n");

printf("*●[6]图书信息保存*\n");

printf("*●[7]图书信息读入*\n");

printf("*●[8]图书信息排序*\n");

printf("*●[9]图书信息修改*\n");

printf("*●[10]图书信息退出*\n");

printf("*******************************************************\n");

printf("请输入您想选择的序号O(∩_∩)O:

");

scanf("%d",&i);

returni;

}

intmenu2()

{

inti;

printf("*******************************************************\n");

printf("*欢迎来到图书管理系统*\n");

printf("**\n");

printf("*主菜单*\n");

printf("*●[1]图书信息显示*\n");

printf("*●[2]图书信息查询*\n");

printf("*●[3]图书信息退出*\n");

printf("*******************************************************\n");

printf("请输入您想选择的序号O(∩_∩)O:

");

scanf("%d",&i);

returni;

}

intenter()//张明娟

{

intn,j;

printf("要输入的图书数量:

");

scanf("%d",&n);

printf("书号/书名/出版日期/类别/作者/借阅标记/借阅次数/备份(请用空格分开)\n");

for(j=0;j

scanf("%s%s%s%s%s%s%d%s",a[j].no,a[j].name,a[j].publishday,a[j].chapt,a[j].writer,a[j].index,&a[j].repeat,a[j].a

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2