高级语言程序设计实习报告.doc

上传人:wj 文档编号:1228625 上传时间:2023-04-30 格式:DOC 页数:14 大小:50.50KB
下载 相关 举报
高级语言程序设计实习报告.doc_第1页
第1页 / 共14页
高级语言程序设计实习报告.doc_第2页
第2页 / 共14页
高级语言程序设计实习报告.doc_第3页
第3页 / 共14页
高级语言程序设计实习报告.doc_第4页
第4页 / 共14页
高级语言程序设计实习报告.doc_第5页
第5页 / 共14页
高级语言程序设计实习报告.doc_第6页
第6页 / 共14页
高级语言程序设计实习报告.doc_第7页
第7页 / 共14页
高级语言程序设计实习报告.doc_第8页
第8页 / 共14页
高级语言程序设计实习报告.doc_第9页
第9页 / 共14页
高级语言程序设计实习报告.doc_第10页
第10页 / 共14页
高级语言程序设计实习报告.doc_第11页
第11页 / 共14页
高级语言程序设计实习报告.doc_第12页
第12页 / 共14页
高级语言程序设计实习报告.doc_第13页
第13页 / 共14页
高级语言程序设计实习报告.doc_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

高级语言程序设计实习报告.doc

《高级语言程序设计实习报告.doc》由会员分享,可在线阅读,更多相关《高级语言程序设计实习报告.doc(14页珍藏版)》请在冰点文库上搜索。

高级语言程序设计实习报告.doc

《高级语言程序设计》实习报告

一、题目:

编写程序,用函数实现通过指针连接两个字符串。

1.需求说明

本实习题要求输入两个字符串,并将其中一个字符串通过指针连接到另一个字符串。

2.算法设计

(1)编写一个连接函数cat_string

a.先找到from字符串的末尾,以’\0’为标记;

b.将to字符串中的元素一个个的移到from字符串的末尾;

c.最后在to字符串末尾加上’\0’。

(2)编写主函数

a.先定义两个字符型指针变量a,b,和两个字符型数组str1,str2;使a指向数组str1,使b指向str2;

b.动态输入两个字符串,并将其打印出来;

c.调用cat_string函数,将字符串a连接到字符串b的末尾;

d.最后将结果打印出来。

(3)结束

3.程序清单:

#include

voidcat_string(char*from,char*to)

{

while(*to!

='\0')

to++;

for(;*from!

='\0';from++,to++)

*to=*from;

*to='\0';

}

main()

{

char*a,*b,str1[50],str2[100];

a=str1;

b=str2;

scanf("%s%s",a,b);

printf("string1=%s\nstring2=%s\n",a,b);

cat_string(a,b);

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

}

4.运行结果分析

输入:

friend

boy

输出结果:

string1=friend

string2=boy

string=boyfriend

二、题目:

编写程序完成统计学生成绩。

功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对成绩前70%的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)。

1.需求说明

本实习题要求输入学生的姓名和成绩,将成绩从高到低排列,并将其打印输出,对成绩前70%的学生定义为合格,而后30%的学生定义为不合格。

也就是说,若有学生10名,则排名前7位的学生为合格,后3位为不合格。

2.算法设计

(1)先定义结构体student,其中包括学号num、姓名name、成绩score;

(2)输入所有学生信息;

(3)对学生成绩进行排序,用气泡排序法,从高到低排列。

成绩排序时,其它信息的顺序也做相应的调整。

(4)对成绩前70%的学生定为合格PASS;而后30%的学生定为不合格FALL;

(5)将成绩从高到低打印出来;

(6)结束。

3.程序清单:

#include

#defineSIZE10

structstudent

{intnum;

charname[10];

intscore;

}stu[SIZE],st;

main()

{inti,j;

charp[]="PASS",f[]="FALL";

for(i=0;i

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

for(j=0;j<=SIZE-2;j++)

for(i=0;i<=SIZE-1-j;i++)

if(stu[i].score

{st=stu[i];stu[i]=stu[i+1];stu[i+1]=st;}

printf("numnamescoreresult\n");

for(i=0;i

if(i

printf("%2d%10s%5d%8s\n",stu[i].num,stu[i].name,stu[i].score,p);

else

printf("%2d%10s%5d%8s\n",stu[i].num,stu[i].name,stu[i].score,f);

}

4.运行结果分析

输入:

1Li86

2Fun79

3Zhang81

4Wang90

5Min97

6Lin89

7Tan69

8Ling70

9Xi57

10Xu82

输出结果:

numnamescoreresult

5Min97PASS

4Wang90PASS

6Lin89PASS

1Li86PASS

10Xu82PASS

3Zhang81PASS

2Fun79PASS

8Ling70FALL

7Tan69FALL

9Xi57FALL

三、题目:

从键盘上输入3个学生的信息,将它们存入文件student;然后再从文件中读出数据,显示在屏幕上。

1.需求说明

本实习题要求输入3个学生的信息,可以包括学号,姓名,年龄,性别,成绩,家庭住址等信息,将它们存入文件student;然后再从文件中读出数据,并将其显示在屏幕上。

2.算法设计

(1)先定义结构体student,其中包括学号num,姓名name,性别sex,年龄age,成绩score,家庭住址addr;

(2)编写保存函数save

a.先将文件打开;

b.若(fp=fopen(“student”,”wb”))==NULL,则说明文件无法打开;反之文件能打开;

c.在打开的文件中一一将信息写进去;

d.最后,将文件student关闭。

(3)编写显示函数display

a.先将文件打开;

b.若(fp=fopen(“student”,”wb”))==NULL,则说明文件无法打开;反之文件能打开;

c.从打开的文件中一一将信息读出,并将其显示在屏幕上;

d.最后,将文件关闭。

(7)编写主函数

a.输入3个学生的所有信息;

b.调用save()函数;

c.调用display()函数;

(5)结束。

3.程序清单:

#include

#defineSIZE3

structstudent

{intnum;

charname[15];

charsex[2];

intage;

intscore;

charaddr[30];

}stu[SIZE];

voidsave()

{FILE*fp;

inti;

if((fp=fopen("student","wb"))==NULL)

{printf("cannotopenfile\n");

return;

}

for(i=0;i

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

=1)

printf("filewriteerror\n");

fclose(fp);

}

voiddisplay()

{FILE*fp;

inti;

if((fp=fopen("student","rb"))==NULL)

{printf("cannotopenfile\n");

return;

}

printf("numnamesexagescoreaddr\n");

for(i=0;i

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

printf("%3d%-15s%-2s%3d%5d%-30s\n",stu[i].num,stu[i].name,stu[i].sex,

stu[i].age,stu[i].score,stu[i].addr);

}

fclose(fp);

}

main()

{inti;

printf("Pleaseinputstudents'message:

\n");

printf("num,name,sex,age,score,addr\n");

for(i=0;i

scanf("%d%s%s%d%d%s",&stu[i].num,stu[i].name,stu[i].sex,&stu[i].age,

&stu[i].score,stu[i].addr);

printf("\n");

save();

display();

}

4.运行结果分析

Pleaseinputstudents’message:

num,name,sex,age,score,addr

1ZhangFangF1996room_101

2WangMingM2086room_102

3XiaoDanF1981room_103

numnamesexagescoreaddr

1ZhangFangF1996room_101

2WangMingM2086room_102

3XiaoDanF1981room_103

四、题目:

编程解决百钱百鸡问题:

中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:

鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?

1.需求说明

本实习题要求解决百钱百鸡问题。

一只公鸡值5元,一只母鸡值3元,三只小鸡值1元。

如果用100元买100只鸡,公鸡,母鸡,小鸡各多少只?

2.算法设计

设公鸡、母鸡、小鸡各有x,y,z,题意规定用100元买100只鸡。

假定100元全部买公鸡的话,则最多可以买20只;若100元全部买母鸡,则最多可买母鸡33只,即x的值在0~20之间,y的取值在0~33之间。

根据题意可得到下面的等式:

5x+3y+z/3=100

x+y+z=100

所以此问题可归结为求这个不定方程的整数解。

(1)先定义3个变量x,y,z;

(2)用外层循环控制公鸡的数量,x的范围在0~20之间;

(3)用内层循环控制母鸡的数量,y的范围在0~33之间;

(8)在内外层循环的控制下,小鸡数z的值受x,y的值的制约,z=100-x-y;

(9)验证取z值的合理性及得到一组解的合理性,即同时满足z%3==0和5*x+3*y+z/3==100;

(10)打印出所有合理的结果;

(11)结束。

3.程序清单:

#include

main()

{intx,y,z;

for(x=0;x<=20;x++)

for(y=0;y<=33;y++)

{z=100-x-y;

if(z%3==0&&5*x+3*y+z/3==100)

printf("cock=%2dhen=%2dchicken=%2d\n",x,y,z);

}

}

4.运行结果分析

cock=0hen=25chicken=75

cock=4hen=18chicken=78

cock=8hen=11chicken=81

cock=12hen=4chicken=84

五、题目:

学生成绩管理系统设计

主要功能:

1)能按学期、按班级完成对学生成绩的录入、修改,用文件保存信息。

2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序。

3)能查询学生成绩,不及格科目及学生名单。

按学号查询或按姓名查询。

4)能按班级输出学生的成绩单。

1.需求说明

本实习题要求按学期、班级对学生的各科成绩进行录入、修改、并保存;并能按班级计算学生的总分和平均分,并能根据学生的平均成绩进行排序;能按学号或姓名查询学生成绩;最后,能按班级输出学生的成绩单。

2.算法设计

(1)先声明结构体类型;

(2)编写录入函数input();

(3)编写保存函数save();

(4)编写修改函数modify();

(5)编写计算平均成绩函数average();

(6)编写排序函数order();

(7)编写打印函数print();

(8)编写搜索函数search();

(9)编写主函数;

(10)结束。

3.程序清单:

#include

#include

#defineSIZE10

structsubject

{intchin;

intmath;

intengl;

intphys;

intchem;

intpoli;

};

structstudent

{intterm;

intclass;

intnum;

charname[15];

structsubjectmark;

intall;

intaver;

}stud[SIZE],temp;

voidinput()

{inti;

printf("term,class,num,name,chin,math,engl,phys,chem,poli\n");

for(i=0;i

scanf("%d%d%d%s%d%d%d%d%d%d",&stud[i].term,&stud[i].class,&stud[i].num,

stud[i].name,&stud[i].mark.chin,&stud[i].mark.math,&stud[i].mark.engl,

&stud[i].mark.phys,&stud[i].mark.chem,&stud[i].mark.poli);

}

voidsave()

{FILE*fp;

inti;

if((fp=fopen("student_mark","wb"))==NULL)

{printf("cannotopenfile\n");

return;

}

for(i=0;i

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

=1)

printf("filewriteerror\n");

fclose(fp);

}

voidmodify()

{FILE*fp;

inti;

if((fp=fopen("student_mark","rb+"))==NULL)

{printf("cannotopenfile\n");

return;

}

printf("termclassnumnamechimatengphychepol\n");

for(i=0;i

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

printf("%2d%8d%10d%15s%4d%4d%4d%4d%4d%4d\n",stud[i].term,stud[i].class,

stud[i].num,stud[i].name,stud[i].mark.chin,stud[i].mark.math,

stud[i].mark.engl,stud[i].mark.phys,stud[i].mark.chem,stud[i].mark.poli);

}

fclose(fp);

}

voidaverage()

{FILE*fp;

inti;

if((fp=fopen("student_mark","rb"))==NULL)

{printf("cannotopenfile\n");

return;

}

for(i=0;i

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

stud[i].all=stud[i].mark.chin+stud[i].mark.math+stud[i].mark.engl+

stud[i].mark.phys+stud[i].mark.chem+stud[i].mark.poli;

stud[i].aver=stud[i].all/6.0;

}

save();

fclose(fp);

}

voidorder()

{FILE*fp;

inti,j;

if((fp=fopen("student_mark","rb"))==NULL)

{printf("cannotopenfile\n");

return;

}

for(j=0;j<=SIZE-2;j++)

for(i=0;i<=SIZE-1-j;i++)

if(stud[i].aver

{temp=stud[i];stud[i]=stud[i+1];stud[i+1]=temp;}

save();

fclose(fp);

}

voidprint()

{FILE*fp;

inti;

if((fp=fopen("student_mark","rb"))==NULL)

{printf("cannotopenfile\n");

return;

}

printf("termclassnumnamechimatengphychepolallaver\n");

for(i=0;i

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

printf("%2d%8d%10d%15s%4d%4d%4d%4d%4d%4d%4d%5.2f\n",stud[i].term,

stud[i].class,stud[i].num,stud[i].name,stud[i].mark.chin,stud[i].mark.math,

stud[i].mark.engl,stud[i].mark.phys,stud[i].mark.chem,stud[i].mark.poli,

stud[i].all,stud[i].aver);

}

fclose(fp);

}

intsearch1(intnum2)

{FILE*fp;

inti;

if((fp=fopen("student_mark","rb"))==NULL)

{printf("cannotopenfile\n");

exit();

}

for(i=0;i

if(stud[i].num==num2)return(i);

elsereturn-1;

fclose(fp);

}

intsearch2(char*name2)

{FILE*fp;

inti;

if((fp=fopen("student_mark","rb"))==NULL)

{printf("cannotopenfile\n");

exit();

}

for(i=0;i

if(strcmp(name2,stud[i].name)==0)return(i);

elsereturn-1;

fclose(fp);

}

voidsearch()

{FILE*fp;

inti,choice,num1;

charname1[15];

if((fp=fopen("student_mark","rb"))==NULL)

{printf("cannotopenfile\n");

return;

}

printf("search:

\n");

printf("1.accordingnumber\n");

printf("2.accordingname\n");

printf("PLeaseenteryourchoice:

\n");

scanf("%d",&choice);

if(choice==1)

{scanf("%d",&num1);

if((i=search1(num1))>=0)

{printf("numnamechimatengphychepolallaver\n");

printf("%10d%15s%4d%4d%4d%4d%4d%4d%4d%5.2f\n",stud[i].num,stud[i].name,

stud[i].mark.chin,stud[i].mark.math,stud[i].mark.engl,stud[i].mark.phys,

stud[i].mark.chem,stud[i].mark.poli,stud[i].all,stud[i].aver);

}

else

printf("Thenumber%dnotfound!

\n",num1);

}

if(choice==2)

{gets(name1);

if((i=search2(name1))>=0)

{printf("numnamechimatengphychepolallaver\n");

printf("%10d%15s%4d%4d%4d%4d%4d%4d%4d%5.2f\n",stud[i].num,stud[i].name,

stud[i].mark.chin,stud[i].mark.math,stud[i].mark.engl,stud[i].mark.phys,

stud[i].mark.chem,stud[i].mark.poli,stud[i].all,stud[i].aver);

}

else

printf("Thename%snotfound!

\n",name1);

}

fclose(fp);

}

main()

{intc1,c2;

printf("Pleaseinputstudents'messages:

\n");

input();

save();

printf("Doyouwanttomodifythemessage?

\n");

printf("1.Yes\n");

printf("2.No\n");

scanf(

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

当前位置:首页 > PPT模板 > 商务科技

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

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