C语言实验报告Word文件下载.docx
- 文档编号:4291628
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:28
- 大小:70.01KB
C语言实验报告Word文件下载.docx
《C语言实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言实验报告Word文件下载.docx(28页珍藏版)》请在冰点文库上搜索。
voidfun(intn,intm)
{
inti=-1,a[100];
if(m!
=16)
while(n)
a[i++]=n%m;
n=n/m;
}
while(i!
=-1)
printf("
%d"
a[--i]);
\n"
);
else
a[++i]=num[n%16];
n/=16;
%c"
a[i--]);
intmain()
inta,c;
charcIn=0;
do
\n输入正整数,转换的进制:
"
scanf("
%d%d"
&
a,&
c);
fun(a,c);
Goon?
(Y/N):
cIn=getchar();
if(cIn=='
N'
||cIn=='
n'
)
return0;
while
(1);
3、调试。
八、实验结果
实验二学生班级成绩统计
设计一个统计班级学生成绩的程序。
统计一个班(最多有35人)的学生成绩,要求能实现如下四个功能:
(1)由键盘输入每个学生的学号和四门课程的成绩。
(2)计算每个学生的平均成绩和总成绩。
(3)按总成绩从高到低排名,并按名次输出每个学生的情况,包括:
学号,各科成绩,平均成绩,总成绩,排名
(4)根据要求输出某门课程(由键盘输入课程号)成绩在90分(含90分)以上且总分在前5名的学生情况(请采用结构体数据类型,并采用模块化结构实现)。
1、进一步熟悉C环境的安装、使用。
2、进一步复习《C程序设计》等基础课程的知识。
3、进一步掌握C语言编程的方法。
3、软件实现基本流程。
1、先编写主函数,将所需要用到的子函数编写,
2、子函数1:
输入数据,将所需要的数据存到数组中并计算平均值和总分,
3、子函数2:
根据子函数1计算所得值进行排序,
4、子函数3:
输出排序完的数据,
5、子函数4:
编写查询程序,输入查询的科目缩写,并排名后输出。
1、可行性分析
2、需求分析
3、概要设计与详细设计(含绘制流程图)。
4、编码实现
intorder[35];
doubleaddsum[35];
doubleaddaver[35];
intb=0;
typedefstructstudent
intid;
charname[35];
doublemath;
doubleenglish;
doublechinese;
doublecomputer;
}student;
studentstu[35];
voidshuru()
b=0;
while(b<
35)
printf("
输入学号(输入0退出输入):
);
scanf("
&
stu[b].id);
fflush(stdin);
if(stu[b].id<
=0)
break;
输入名字:
%s"
stu[b].name);
输入4门成绩(数学英语语文计算机):
%lf%lf%lf%lf"
stu[b].math,&
stu[b].english,
&
stu[b].chinese,&
stu[b].computer);
addsum[b]=stu[b].math+stu[b].english+stu[b].chinese,stu[b].computer;
addaver[b]=addsum[b]/4.0;
order[b]=stu[b].id;
b++;
intquery(intid)
inti=0;
for(i=0;
i<
b;
i++)
if(stu[i].id==id)
returni;
return-1;
voidpaiming()
inti,j;
for(j=i+1;
j<
j++)
if(addsum[i]-addsum[j]<
0.001)
inttemp_id=order[i];
order[i]=order[j];
order[j]=temp_id;
voidoutput()
inti;
名次学号姓名数学英语语文
intj=query(order[i]);
if(j<
0)计算机总分平均\n"
6/21页
order[%d]=%derror\n"
i+1,order[i]);
continue;
%02d%5.d%s%4.2f%4.2f%4.2f%6.2f%4.2f%4.2f\n"
i+1,stu[j].id,stu[j].name,stu[j].math,stu[j].english,stu[j].chinese,stu[j].computer,addsum[j],addaver[j]);
voidchaxun()
chara[1];
输入你所想要查询的课程代号:
a[1]);
名次学号姓名数学英语语文计算机总分平均\n"
if(a[1]=='
m'
for(i=0;
i<
i++)
if(stu[i].math>
90&
order[i]<
5)
i+1,stu[i].id,stu[i].name,stu[i].math,stu[i].english,stu[i].chinese,stu[i].computer,addsum[i],addaver[i]);
elseif(a[1]=='
e'
if(stu[i].english>
elseif(a[1]=='
c'
if(stu[i].chinese>
if(stu[i].computer>
voidmain()
shuru();
paiming();
output();
chaxun();
5、调试。
实验三文件合并
将两个文件中的数据合并至一个文件。
有两个文件“Afile”和“Bfile”,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“Cfile”中去。
1、掌握指针、文件指针的概念。
2、掌握文件操作的知识。
3、进一步掌握软件开发的基本流程。
1、C程序设计基础知识。
2、软件实现基本流程。
五、程序清单
请按照自己对程序设计需求的理解进行设计。
6、程序框图
7、实验步骤
stdlib.h>
voidOutput(FILE*fp)
charch,t,str3[100];
inti=0,j,k;
while((ch=fgetc(fp))!
=EOF)
str3[i]=ch;
i++;
for(j=0;
j<
=i;
j++)
for(k=j+1;
k<
i;
k++)
{
if(str3[j]>
str3[k])
{
t=str3[j];
str3[j]=str3[k];
str3[k]=t;
}
}
printf("
str3[j]);
main(void)
FILE*fp1,*fp2,*fp3;
charch1[100],ch2[100],ch3[100];
charch,str1[100],str2[100];
pleaseinputfirstfilename:
scanf("
ch1);
pleaseinputsecondfilename:
ch2);
pleaseinputthirdfilename:
ch3);
if((fp1=fopen(ch1,"
w"
))==NULL)
printf("
cannotopenfile"
getchar();
exit(0);
pleasewritefirstfile:
getchar();
gets(str1);
fputs(str1,fp1);
if((fp2=fopen(ch2,"
pleasewritesecondfile:
gets(str2);
fputs(str2,fp2);
fclose(fp1);
fclose(fp2);
if((fp3=fopen(ch3,"
))==NULL)
fp1=fopen(ch1,"
r"
while((ch=fgetc(fp1))!
=EOF)
fputc(ch,fp3);
fp2=fopen(ch2,"
while((ch=fgetc(fp2))!
fclose(fp3);
fp3=fopen(ch3,"
thethirdfile:
Output(fp3);
8、实验结果
实验四链表基本操作
完成单链表的建立、插入和删除操作。
链表,就是用“指针域”链在一起的自引用结构(称为“结点”)的线性集合。
链表是通过指向链表第一个结点的指针访问的,其后的结点是通过前一结点中的“指针域”访问的。
在单链表中,数据域用来存储数据,指针域用来存储下一个结点的地址。
建立单链表可以通过头插法完成,也可以通过尾插法完成。
在单链表的第i个元素前插入一个新的元素,先必须找到第i-1个元素、找到第i个元素,然后新建一个节点,再进行相应的插入。
从单链表中删除一个元素,先必须找到这个元素的前一个元素、找到这个元素,然后进行相应的删除,删除后的元素必须被释放掉内存。
1、复习指针的概念。
2、复习数据结构的有关基本知识。
3、掌握链表的使用方法。
1、C程序设计基础知识。
2、数据结构的有关基本知识。
1、定义头文件,编写共用体结构体及主函数;
2、在主函数中运用switch以及do—while函数使程序可以循环调用子函数;
3、编写子函数1:
手动输入链表长度及链表中的数值建立链表;
4、编写子函数2:
从键盘输入需要查询的值,然后输出其所在的节点;
5、编写子函数3:
从键盘输入需要删除的节点,然后输出删除此节点后的链表;
6、编写子函数4:
从键盘输入需要添加数值的节点,从键盘输入要添加进去的数值,然后输出增加此节点数加1后添加数值的链表;
7、从键盘输入0后推出程序。
六、程序框图
2、需求分析3
#include<
#include<
string.h>
structlian_node{
intn;
intnum;
structlian_node*link;
structlian_node*Create_Lian_Doc();
voidSearchDoc_num(structlian_node*link,intnum);
voidInsertDoc(structlian_node*llist,structlian_node*p,intn);
voidDeleteDoc(structlian_node*llist,intn);
voidPrint_Lian_Doc(structlian_node*llist);
intmain(void)
structlian_node*llist,*p;
intn,num,choice;
intsize=sizeof(structlian_node);
llist=Create_Lian_Doc();
do{
\n链表操作\n"
1:
查找\n"
2:
删除\n"
3:
插入\n"
0:
退出\n"
请选择功能:
choice);
switch(choice){
case0:
case1:
输入值:
"
num);
13/21页
SearchDoc_num(llist,num);
case3:
插入结点位置:
n);
插入结点数值:
p=(structlian_node*)malloc(size);
p->
n=n+1;
num=num;
link=NULL;
InsertDoc(llist,p,n);
case2:
\n删除结点:
DeleteDoc(llist,n);
}while(choice!
=0);
structlian_node*Create_Lian_Doc()
inti,num,n;
structlian_node*llist,*tail,*p;
llist=tail=NULL;
请输入链表长度n="
请输入链表的各个值:
for(i=1;
=n;
n=i;
if(llist==NULL)
llist=p;
14/21页
tail->
link=p;
tail=p;
returnllist;
voidSearchDoc_num(structlian_node*llist,intnum){
structlian_node*ptr;
if(llist==NULL){
\n无结果!
return;
for(ptr=llist;
ptr;
ptr=ptr->
link){
if(ptr->
num==num){
输出序号为:
%d\n\n"
ptr->
if(ptr==NULL)
voidInsertDoc(structlian_node*llist,structlian_node*p,intn){
inti=1;
structlian_node*ptr,*ptr1,*ptr2;
ptr1=llist;
ptr2=llist->
link;
while(ptr1->
n!
=n&
ptr2!
=NULL){
ptr1=ptr2;
ptr2=ptr2->
if(ptr1->
n==n){
link=ptr2;
ptr1->
ptr->
i++;
Print_Lian_Doc(llist);
voidDeleteDoc(structlian_node*llist,intn)
while(llist!
=NULL&
llist->
ptr2=llist;
llist=llist->
free(ptr2);
while(ptr2!
if(ptr2->
link=ptr2->
ptr2=ptr1->
voidPrint_Lian_Doc(structlian_node*llist)
structlian_node*ptr;
输出链表:
link)
%5d"
5、调试
6、运行维护,完善文档
实验五约瑟夫环
(一)
编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。
一开始任选一个整数作为报数上限值m,从第一个人开始顺时针自1顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。
试设计一个程序,求出出列顺序。
要求利用单循环链表作为存储结构模拟此过程,按照出列顺序打印出各人的编号。
例如m的初值为20,n=7,7个人的密码依次是3,1,7,2,4,8,4,出列的顺序为6,1,4,7,2,3,5。
请用链表完成。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)