语言基础实训实训报告.docx

上传人:b****5 文档编号:8538479 上传时间:2023-01-31 格式:DOCX 页数:18 大小:21.62KB
下载 相关 举报
语言基础实训实训报告.docx_第1页
第1页 / 共18页
语言基础实训实训报告.docx_第2页
第2页 / 共18页
语言基础实训实训报告.docx_第3页
第3页 / 共18页
语言基础实训实训报告.docx_第4页
第4页 / 共18页
语言基础实训实训报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

语言基础实训实训报告.docx

《语言基础实训实训报告.docx》由会员分享,可在线阅读,更多相关《语言基础实训实训报告.docx(18页珍藏版)》请在冰豆网上搜索。

语言基础实训实训报告.docx

语言基础实训实训报告

 

课程实训报告书

 

课题名称:

语言基础实训

 

系(部):

专业班级:

学生姓名:

学号:

完成日期:

 

山东科技大学泰山科技学院

实习类型

实训

实习地点

组别

实习课题

语言基础实训

实习人姓名

同组人员

指导教师

实习日期

实习成绩

 

指导教师评语

指导教师签名:

______________

_______年____月____日

课程实训报告书

1.课题研究的目的和意义

在实践过程中,使我们进一步巩固C++程序设计课程所学知识,更加深入地了解面向对象程序设计的主要技术特点以及C++语言的强大编程功能指导学生利用获取信息的手段进一步获取新知识,以解决实训过程中遇到的技术难点,从中提高自学能力;按照软件开发的基本要求引导我们完成实训课题,以便我们了解软件开发的几个重要环节;提高我们的编程技术,使程序的编写更趋于专业化,为从业打下良好的基础、培养我们分工协作的团队精神。

2.课题研究时间安排

课题项目

项目名称

完成时间

项目一

学生成绩排名

第一周周一

项目二

按条件实现学生成绩排名

第一周周二

项目三

用指针、数组优化学生成绩排名

第一周周三

项目四

学生成绩单制作

第一周周四

项目五

学生成绩排文件管理

第一周周五

项目六

(综合实训)学生成绩管理系统

第二周

3.课题总体设计方案

项目一:

学生成绩排名

实训内容:

(1)定义一个数组a[11],用以存放学生的成绩;

(2)从键盘输入10个学生成绩;

(3)采用冒泡法,将学生成绩按照从高到低进行排序;

for(j=0;j<9;j++)

for(i=0;i<9-j;i++)

if(a[i]

{t=a[i+1];a[i+1]=a[i];a[i]=t;}

(4)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组;

(5)将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。

利用for循环从高到低排序:

for(i=0;i<11;i++)

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

利用for循环从低到高排序:

for(i=10;i>=0;i--)

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

项目二:

按条件实现学生成绩排名

实训内容:

(1)在函数中进行10个学生成绩从高到低排名sort(inta[10]);

先调用函数sort(inta[10]),然后利用for循环对学生成绩从高到低排序。

(2)改进第一步的函数为sort(inta[],intn),进行n个学生成绩从高到低排名;

intsort(inta[],intn)

{inti,j,t;

for(j=0;j

for(i=0;i

if(a[i]

{t=a[i];a[i]=a[i+1];a[i+1]=t;;}

}

(3)改进第二步的函数为sort(inta[],intn,charstyle),将n个学生成绩从高到低排名,排名方式;

(4)根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。

(a:

ascending升,d:

descending降)

intsort(inta[],intn,charstyle)

{inti,j,t;

if(style=='a')

for(j=0;j

for(i=0;i

if(a[i]>a[i+1])

{t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

if(style=='d')

for(j=0;j

for(i=0;i

if(a[i]

{t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

}

项目三:

用指针、数组优化学生成绩排名

实训内容:

(1)定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现;

(2)将数组stu[10]的内容输出到屏幕上,要求用指针实现;

(3)将成绩数组按照从高到低进行排序,要求用指针实现;

for(j=0;j<9;j++)

{for(p=stu,i=0;i<9-j;i++,p++)

if(*p<*(p+1))

{t=*p;

*p=*(p+1);

*(p+1)=t;

}

}

p=stu;

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

{printf("%5d",*p);

p++;

}

getch();

}

(4)将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单;

voidsort(intx[],intn)

{inti,j,k,t;

for(i=0;i

{k=i;

for(j=i+1;j

if(x[j]>x[k])

k=j;

if(k!

=i)

{t=x[i];

x[i]=x[k];

x[k]=t;

}

}

}

(5)采用指针方法,输入字符串“studentscore”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)。

voidmain()

{voidcopy_string(charfrom[],charto[]);

chara[]="studentscore";

charb[20];

copy_string(a,b);

printf("stringb=%s\n",b);

getch();

}

voidcopy_string(charfrom[],charto[])

{inti=0;

while(from[i]!

='\0')

{to[i]=from[i];

i++;

}

to[i]='\0';

}

项目四:

学生成绩单制作

实训内容:

(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩;

structstudent

{intnumber;

charname[20];

intmath;

intChinese;

intEnglish;

intaverage;

}stu[11];

(2)从键盘输入10个学生的以上内容;

(3)输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩;

以数学成绩为例:

voidprint_max(structstudentstu[11])

{inti;

inttemp=0;

intn=0;

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

if(stu[i].math>temp)

{temp=stu[i].math;

n=i;

}

printf("themathhighestscore:

\n");

printf("%d%s%d\n",stu[n].number,stu[n].name,stu[n].math);

}

(4)输出三门课程的平均分数最高的学生的学号、姓名及其平均分;

voidprint_ave(structstudentstu[11])

{inti,n;

inttemp=0;

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

{stu[i].average=(stu[i].math+stu[i].Chinese+stu[i].English)/3;

}

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

if(stu[i].average>temp)

{temp=stu[i].average;

n=i;

}

printf("thehighestavris:

\n");

printf("%d%s%d\n",stu[n].number,stu[n].name,stu[n].average);

getch();

}

(5)将10个学生按照平均分数从高到低进行排序,输出结果。

voidprint_list(structstudentstu[11])

{inti,j;

for(j=0;j<9;j++)

for(i=0;i<9-j;j++)

if(stu[i].average

{stu[10]=stu[i];

stu[i]=stu[i+1];

stu[i+1]=stu[10];

}

项目五:

学生成绩排文件管理

实训内容

(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩;

#defineSIZE10

structstudent

{intnum;

charname[20];

intmath;

intChinese;

intEnglish;

floatavr;

}stu[SIZE];

(2)从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件;

voidsave()

{FILE*fp;

inti;

for(i=0;i

if(fwrite(&stu[i],sizeof(structstudent),1,fp)!

=1)

printf("filewriteerror\n");

fclose(fp);

}

voidmain()

{inti;

printf("input10students'information\n");

for(i=0;i

scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].math,&stu[i].Chinese,&stu[i].English);

save();

}

(3)打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件;

(4)打开文件stud.dat文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.dat中;

voidsave()

{FILE*fp;

inti;

if((fp=fopen("stud.dat","wb"))==NULL)

{printf("cannotopenfile\n");

return;

}

for(i=0;i

if(fwrite(&stu[i],sizeof(structstudent),1,fp)!

=1)

printf("filewriteerror\n");

fclose(fp);

}

voidmain()

{inti,j,k;

FILE*fp;

fp=fopen("stud.dat","rb");

for(i=0;i

fread(&stu[i],sizeof(structstudent),1,fp);

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

stu[i].avr=(stu[i].math+stu[i].Chinese+stu[i].English)/3;

for(i=0;i<9;i++)

{k=i;

for(j=i+1;j<10;j++)

if(stu[j].avr>stu[k].avr)k=j;if(k!

=i)

{stu[10]=stu[i];

stu[i]=stu[k];

stu[k]=stu[10];

}

}

save();

}

(5)从studsort.dat文件中读取第2,4,6,8,10个学生的数据。

voidmain()

{inti,j;

FILE*fp;

fp=fopen("studsort.dat","rb");

for(i=0;i

fread(&stu[i],sizeof(structstudent),1,fp);

for(i=0;i<10;i=i+2)

printf("%d%s%d%%d%3.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].avr);

getch();

}

项目六:

(综合实训)学生成绩管理系统

完成下列功能:

(1)输入:

函数input把20学生的学号、姓名、性别、年龄、四科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、四科成绩由键盘输入,然后计算出平均成绩和总成绩放在结构体对应的域中。

structstudent

{longnum;

charname[20];

charsex[3];

intage;

intmath;

intChinese;

intEnglish;

intComputer;

floatavr;

intsum;

structstudent*next;

}stu[21],stu1[21];

voidinput(intn)

{inti;

printf("input5students'information:

\n");

printf("number|name|sex|age|math|Chinese|English|Computer\n");

for(i=0;i

{scanf("%ld%s%s%d%d%d%d%d",&stu[i].num,stu[i].name,stu[i].sex,&stu[i].age,&stu[i].math,&stu[i].Chinese,&stu[i].English,&stu[i].Computer);

stu[i].avr=(float)(stu[i].math+stu[i].Chinese+stu[i].English+stu[i].Computer)/4;

stu[i].sum=stu[i].math+stu[i].Chinese+stu[i].English+stu[i].Computer;

}

}

(2)插入:

insert函数输入一个学生的记录,按学号的先后顺序插入该学生的全部内容。

voidinsert(intn)

{inti;

system("cls");

printf("inputanotherstudent'sinformation:

\n");

printf("number|name|sex|age|math|Chinese|English|Computer\n");

scanf("%d%s%s%d%d%d%d%d",&stu[5].num,stu[5].name,stu[5].sex,&stu[5].age,&stu[5].math,&stu[5].Chinese,&stu[5].English,&stu[5].Computer);

stu[5].avr=(float)(stu[5].math+stu[5].Chinese+stu[5].English+stu[5].Computer)/4;

stu[5].sum=stu[5].math+stu[5].Chinese+stu[5].English+stu[5].Computer;

for(i=n;i>0;i--)

if(stu[i].num>stu[i-1].num)

{stu1[1]=stu[i];

stu[i]=stu[i-1];

stu[i-1]=stu1[1];

}

}

(3)排序:

sort函数对所有学生按要求排序(1.学号2.总成绩),并输出。

voidsort(intn)

{inti,j,k;

system("cls");

printf("BYNUM\n");

for(i=0;i

{k=i;

for(j=i+1;j

if(stu[j].num>stu[k].num)k=j;

if(k!

=i)

{stu1[4]=stu[i];

stu[i]=stu[k];

stu[k]=stu1[4];

}

}

printf("number|name|sex|age|math|Chinese|English|Computer|average|sum\n");

for(i=0;i

printf("%-7ld%-4s%-3s%-3d%-4d%-4d%-4d%-4d%-3.2f%-3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].Computer,stu[i].avr,stu[i].sum);

printf("BYSUM\n");

for(i=0;i

{k=i;

for(j=i+1;j

if(stu[j].sum>stu[k].sum)k=j;

if(k!

=i)

{stu1[5]=stu[i];

stu[i]=stu[k];

stu[k]=stu1[5];

}

}

printf("number|name|sex|age|math|Chinese|English|Computer\n");

for(i=0;i

printf("%-7ld%-4s%-3s%-3d%-4d%-4d%-4d%-4d%-3.2f%-3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].Computer,stu[i].avr,stu[i].sum);

}

(4)查找:

find函数输入一个学生的学号或姓名,找到该学生并输出该学生的全部内容。

要求能查询多次。

voidfind(intn)

{intn=0;

inti;

intt=1;

while(t==1)

{printf("chosethenum(0)orname

(1):

\n");

scanf("%d",&n);

printf("\n");

if(n==0)

{printf("inputthenum:

");

scanf("%d",&stu1[1].num);

printf("\n");

printf("number|name|sex|age|math|Chinese|English|Computer\n");

for(i=0;i<6;i++)

if(stu1[1].num==stu[i].num)

printf("%-7ld%-4s%-3s%-4d%-4d%-4d%-4d%-3d%-3.2f%-3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].Computer,stu[i].avr,stu[i].sum);

}

else

{printf("inputthename:

");

scanf("%s",&stu1[1].name);

printf("\n");

printf("number|name|sex|age|math|Chinese|English|Computer\n");

for(i=0;i<6;i++)

if(strcmp(stu1[1].name,stu[i].name)==0)

printf("%-7ld%-4s%-3s%-4d%-4d%-4d%-4d%-3d%-3.2f%-3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].Computer,stu[i].avr,stu[i].sum);

}

printf("continue?

(0,1)\n");

scanf("%d",&t);

}

}

(5)删除:

delete函数输入一个学生的学号或姓名,找到该学生并删除该学生的全部内容。

voiddelete(intn)

{inti,n=0;

intj,t=0;

longnum;

printf("chosethenum(0)orname

(1):

\n");

scanf("%d",&n);

printf("\n");

if(n==0)

{printf("inputthenum:

");

scanf("%ld",&num);

printf("\n");

for(i=0;i

if(num==stu[i].num)

{stu[i].num=999999999;t=21;

for(j=0;j

{for(i=0;i

if(stu[i].num>stu[i+1].num)

{stu1[21].num=stu[i].num;

stu[i].num=stu[i+1].num;

stu[i+1].num=stu1[21].num;

}

}

}

if(t==0)

printf("%ldisnotfound",num);

sleep

(2);

}

else

{printf("inputthename:

");

scanf("%s",&stu1[8].name);

printf("\n");

for(i=0;i

if(strcmp(stu1[8].name,stu[i].name)==0)

{stu[i].num=9999999999;t=21;

for(j=0;j

{for(i=0;i

if(stu[i].num>stu[i+1].num)

{stu1[21].num=stu[i].num;

stu[i].num=stu[i+1].num;

stu[i+1].num=stu1[21].num;

}

}

}

if(t==0)

{printf("%ldisnotfound",num);

sleep

(2);}

}

n=n-1;

}

(6)输出:

函数output输出全部学生的记录。

voidoutput(intn)

{inti;

system("cls");

printf("\n\n\n\n\n\n\n\nPRINTTHEEND....");

sleep(3);

system("cls");

printf("number|name|sex|age|math|Chinese|English|Computer\n");

for(i=0;i

printf("%-7ld%-4s%-3s%

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

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1