C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
![C语言实验报告.docx](https://file1.bdocx.com/fileroot1/2022-11/18/7aec61d7-d2f7-47bb-a172-4d94df325cca/7aec61d7-d2f7-47bb-a172-4d94df325cca1.gif)
C语言实验报告
实验一进制转换
一、实验要求
采用模块化程序设计完成进制转换。
由键盘输入一个十进制正整数,然后将该数转换成指定的进制数(二、八、十六)形式输出。
指定的进制由用户输入。
二、实验目的
1、熟悉C环境的安装、使用。
2、承上启下,复习《C程序设计》等基础课程的知识。
3、掌握C语言编程的方法。
三、预备知识
1、的安装与使用。
2、C程序设计基础知识。
四、实验内容
采用模块化程序设计完成进制转换。
五、程序框图
六、程序清单
1.编写主函数:
输入需转换的数与转换的进制
2.编写子函数
(1)函数转换为除16进制以外的进制转换算数编程,使用while循环实现计算进制的转换,并输出转换后的数字;
(2)函数转换为16进制,用while函数实现16进制转换的计算并输出16进制转换后的数据;
3.编写数组,关于16进制的一系列字符
4.编写主函数加入dowhile使函数可以循环。
七、实验步骤
#include<>
charnum[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
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]);
printf("\n");
}
else
{
while(n)
{
a[++i]=num[n%16];
n/=16;
}
while(i!
=-1)
printf("%c",a[i--]);
printf("\n");
}
}
intmain()
{
inta,c;
charcIn=0;
do
{
printf("\n输入正整数,转换的进制:
");
scanf("%d%d",&a,&c);
fun(a,c);
printf("Goon(Y/N):
");
cIn=getchar();
if(cIn=='N'||cIn=='n')
return0;
}
while
(1);fun(a,c);
printf("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语言编程的方法。
三、预备知识
1、的安装与使用。
2、C程序设计基础知识。
3、软件实现基本流程。
四、实验内容
设计一个统计班级学生成绩的程序。
六、程序清单
1、先编写主函数,将所需要用到的子函数编写,
2、子函数1:
输入数据,将所需要的数据存到数组中并计算平均值和总分,
3、子函数2:
根据子函数1计算所得值进行排序,
4、子函数3:
输出排序完的数据,
5、子函数4:
编写查询程序,输入查询的科目缩写,并排名后输出。
七、实验步骤
1、可行性分析
2、需求分析
3、概要设计与详细设计(含绘制流程图)。
4、编码实现
#include<>
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("%d",&stu[b].id);
fflush(stdin);
if(stu[b].id<=0)
break;
printf("输入名字:
");
scanf("%s",&stu[b].name);
printf("输入4门成绩(数学英语语文计算机):
");
scanf("%lf%lf%lf%lf",&stu[b].math,&stu[b].english,
&stu[b].chinese,&stu[b]puter);
fflush(stdin);
addsum[b]=stu[b].math+stu[b].english+stu[b].chinese,stu[b]puter;addaver[b]=addsum[b]/;
order[b]=stu[b].id;
b++;
}
}
intquery(intid)
{
inti=0;
for(i=0;i
{
if(stu[i].id==id)
returni;
}
return-1;
}
voidpaiming()
{
inti,j;
for(i=0;i
{
for(j=i+1;j
{
if(addsum[i]-addsum[j]<)
{
inttemp_id=order[i];
order[i]=order[j];
order[j]=temp_id;
}
}
}
}
voidoutput()
{
inti;
printf("名次学号姓名数学英语语文
for(i=0;i
{
intj=query(order[i]);
if(j<0)计算机总分平均\n");
6/21页
printf("order[%d]=%derror\n",i+1,order[i]);
continue;
}
printf("%02d%%s%%%%%%\n",i+1,stu[j].id,stu[j].name,stu[j].math,stu[j].english,stu[j].chinese,stu[j]puter,addsum[j],addaver[j]);
}
}
voidchaxun()
{
chara[1];
inti;
printf("输入你所想要查询的课程代号:
");
scanf("%c",&a[1]);
printf("名次学号姓名数学英语语文计算机总分平均\n");if(a[1]=='m')
{
for(i=0;i
{
if(stu[i].math>90&&order[i]<5)
{
printf("%02d%%s%%%%%%\n",i+1,stu[i].id,stu[i].name,stu[i].math,stu[i].english,stu[i].chinese,stu[i]puter,addsum[i],addaver[i]);
}
}
}
elseif(a[1]=='e')
{
for(i=0;i
{
if(stu[i].english>90&&order[i]<5)
{
printf("%02d%%s%%%%%%\n",i+1,stu[i].id,stu[i].name,stu[i].math,stu[i].english,stu[i].chinese,stu[i]puter,addsum[i],addaver[i]);
}
}
}
elseif(a[1]=='c')
{
for(i=0;i
if(stu[i].chinese>90&&order[i]<5)
{
printf("%02d%%s%%%%%%\n",i+1,stu[i].id,stu[i].name,stu[i].math,stu[i].english,stu[i].chinese,stu[i]puter,addsum[i],addaver[i]);
}
}
}
else
{
for(i=0;i
{
if(stu[i]puter>90&&order[i]<5)
{
printf("%02d%%s%%%%%%\n",i+1,stu[i].id,stu[i].name,stu[i].math,stu[i].english,stu[i].chinese,stu[i]puter,addsum[i],addaver[i]);
}
}
}
}
voidmain()
{
shuru();
paiming();
output();
chaxun();
}
5、调试。
八、实验结果
实验三文件合并
一、实验要求
将两个文件中的数据合并至一个文件。
有两个文件“Afile”和“Bfile”,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“Cfile”中去。
二、实验目的
1、掌握指针、文件指针的概念。
2、掌握文件操作的知识。
3、进一步掌握软件开发的基本流程。
三、预备知识
1、C程序设计基础知识。
2、软件实现基本流程。
四、实验内容
将两个文件中的数据合并至一个文件。
五、程序清单
请按照自己对程序设计需求的理解进行设计。
6、程序框图
7、实验步骤
#include<>
#include<>
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
{
if(str3[j]>str3[k])
{
t=str3[j];
str3[j]=str3[k];
str3[k]=t;
}
}
}
for(j=0;j<=i;j++)
printf("%c",str3[j]);
}
main(void)
{
FILE*fp1,*fp2,*fp3;
charch1[100],ch2[100],ch3[100];
charch,str1[100],str2[100];
printf("pleaseinputfirstfile