c语言实验报告.docx

上传人:b****8 文档编号:12939192 上传时间:2023-06-09 格式:DOCX 页数:18 大小:511.85KB
下载 相关 举报
c语言实验报告.docx_第1页
第1页 / 共18页
c语言实验报告.docx_第2页
第2页 / 共18页
c语言实验报告.docx_第3页
第3页 / 共18页
c语言实验报告.docx_第4页
第4页 / 共18页
c语言实验报告.docx_第5页
第5页 / 共18页
c语言实验报告.docx_第6页
第6页 / 共18页
c语言实验报告.docx_第7页
第7页 / 共18页
c语言实验报告.docx_第8页
第8页 / 共18页
c语言实验报告.docx_第9页
第9页 / 共18页
c语言实验报告.docx_第10页
第10页 / 共18页
c语言实验报告.docx_第11页
第11页 / 共18页
c语言实验报告.docx_第12页
第12页 / 共18页
c语言实验报告.docx_第13页
第13页 / 共18页
c语言实验报告.docx_第14页
第14页 / 共18页
c语言实验报告.docx_第15页
第15页 / 共18页
c语言实验报告.docx_第16页
第16页 / 共18页
c语言实验报告.docx_第17页
第17页 / 共18页
c语言实验报告.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言实验报告.docx

《c语言实验报告.docx》由会员分享,可在线阅读,更多相关《c语言实验报告.docx(18页珍藏版)》请在冰点文库上搜索。

c语言实验报告.docx

c语言实验报告

北京联合大学

C语言综合实验设计报告

 

设计名称C语言综合实验设计

 

姓名

专业

班级

完成时间

1、实验名称:

C语言综合实验设计-----实用小工具

2、程序功能:

(1)输出任何字符组成的任意行菱形图案。

(2)求解任意一个二元一次方程。

(3)判断任意一个自然数是否为质数。

(4)可以对输入的任意多个数进行排序(运用指针的方法给一列数排序)。

(5)输入任意一个自然数可以求其阶乘。

(6)对在D盘根下的a.txt中的数据进行排序,并且在相同路径下的b.txt输出已经排列好的一列数。

(文件的读写,冒泡法排序)

3、程序的运行截图。

开始运行的界面如图

(1)

图1

菜单界面如图

(2)

(2)

功能1打印菱形块如图3

图(3)

功能2求任意一个二元一次方程的根如图4

图(4)

 

功能3判断一个数是否为质数如图5

图(5)

功能4给输入的几个数排序如图6

图(6)

 

功能5求一个自然数的阶乘如图(7)

图(7)

功能6

对在D盘根下的a.txt中的数据进行排序,并且在相同路径下的b.txt输出已经排列好的一列数。

如图(8)(9)(10)

图(8)[d盘根下的a.txt中的数据]

 

图(9)[在相同路径下b.txt中的数据]

图(10)运行时的窗口

退出功能如图(11)

图(11)

2代码分析

(1)程序的结构:

本程序主要是利用一个菜单函数,switch函数进行各种功能,而菜单下的函数是该程序的精髓。

其中为了更好的实现人机对话,还选择性的利用了清屏函数等等。

(2)各函数的功能分析:

1、打印菱形,该函数主要利用for循环语句实现打印多个相同的图形,其关键代码为

for(i=1;i<=m;i+=2){printStar((m-i)/2,'');printStar(i,'*');printf("\n");}

for(i=m-2;i>=1;i-=2){printStar((m-i)/2,'');printStar(i,'*');printf("\n");}

for(i=1;i<=n;i++)printf("%c",c);前两个循环主要实现打印图形和空格。

而最后一个主要实现打印多少个指定的图形。

最终二者结合实现打印出的具有菱形的大图形。

2、求任意一个一元二次方程的根。

该程序主要利用一些简单的运算,从而求出方程的根。

其主要代码为:

{

floata,b,c;

floatx1,x2;

floatd;

printf("Pleaseinputa,b,c:

");

scanf("%f%f%f",&a,&b,&c);

d=b*b-4*a*c;

if(d<0){printf("Norealroot.\n");}/*判断是否能有实根*/

elseif(d==0){

x1=x2=-b/2./a;

printf("x1=x2=%f\n",x1);

}

else{

x1=(-b+sqrt(d))/2./a;

x2=(-b-sqrt(d))/2./a;

printf("x1=%f,x2=%f\n",x1,x2);

}

改代码的核心部分是语句:

if(d<0){printf("Norealroot.\n");}/*判断是否能有实根*/

elseif(d==0){

x1=x2=-b/2./a;

printf("x1=x2=%f\n",x1);

}

else{

x1=(-b+sqrt(d))/2./a;

x2=(-b-sqrt(d))/2./a;

if函数的运用使方程是否有实根的判断变得简单。

4、判断一个自然数是否为质数

程序的主要代码为:

{inti=0,a=0;

printf("inputanumber");

scanf("%d",&a);

for(i=2;i<=a-1;i++)

if(a%i==0)break;

if(i>a-1)

printf("%disaprimenumber\n",a);

else

printf("%disnotaprimenumber\n",a);

}

判断输入的自然数是否为质数主要由语句

for(i=2;i<=a-1;i++)

if(a%i==0)break;

if(i>a-1)

printf("%disaprimenumber\n",a);

else

printf("%disnotaprimenumber\n",a);

该程序仍由for语句完成质数的判断。

由此也可以看出for语句在c语言中的重要性。

5、给输入的任意一列自然数排序。

程序主要代码:

{

inta[100],n,i,j,k,*p;

printf("howmanynumbersdoyouwantinput\n");

scanf("%d",&n);

printf("inputthenumberyouwant\n");

for(i=0;i

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

printf("before:

");

for(i=0;i

printf("\n");

for(i=0;i

for(j=0;j

{k=a[j];a[j]=a[j+1];a[j+1]=k;}

p=a;

printf("after:

");

for(j=0;j

printf("\n");}

代码分析:

要实现该程序预期的功能,必须解决两个问题1、任意多个数的输入问题。

2、给这些数排序。

而数组可以解决任意数的输入问题,冒泡法可以解决任意多个数的排序问题。

关键代码为程序主要代码:

{

inta[100],n,i,j,k,*p;

printf("howmanynumbersdoyouwantinput\n");

scanf("%d",&n);

printf("inputthenumberyouwant\n");

for(i=0;i

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

冒泡法排序:

for(i=0;i

for(j=0;j

{k=a[j];a[j]=a[j+1];a[j+1]=k;}

6、阶乘问题;程序中的主要代码;

scanf("%d",&n);

sum=1;

for(i=1;i<=n;i++)

sum=sum*i;

该程序的编写较为简单,主要运用了累乘的方法。

因此不多介绍。

7、文件的输入输出问题。

该程序的代码为

{FILE*fin,*fout;

inta[1000];

inti,j,k;

fin=fopen("d:

a.txt","r");/*打开D盘根下的名为a.txt的文件*/

for(i=0;i

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

fclose(fin);

for(i=0;i

for(i=0;i

for(j=0;j

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

{k=a[j];a[j]=a[j+1];a[j+1]=k;}

for(i=0;i

fout=fopen("d:

b.txt","w");/*将所得的结果放在D盘根下的名为b.txt的文件*/

for(i=0;i

fprintf(fout,"%6d",a[i]);

fclose(fout);

}

主要涉及文件的读写问题,读文件主要代码为

fin=fopen("d:

a.txt","r");/*打开D盘根下的名为a.txt的文件*/

for(i=0;i

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

fclose(fin);

写文件的主要代码为;fout=fopen("d:

b.txt","w");/*将所得的结果放在D盘根下的名为b.txt的文件*/

for(i=0;i

fprintf(fout,"%6d",a[i]);

fclose(fout);

文件中数字的排序在前边已经介绍过,故不多做说明。

其中程序的源代码见附件一。

 

附件一(源代码)

/*Note:

YourchoiceisCIDE*/

#include

#include

#include

#definet10

voidmymenu();

voidprintStar(int,char);

voidprintDiamond();

voidfangcheng();

voidzhishu();

voidpaixu();

voidjiecheng();

voidmyfile();

main()

{inta;

while(-1)

{

printf("myclanguagehomework\n");

mymenu();

printf("makeachoicefrom1--7\n");

scanf("%d",&a);

switch(a)

{

case1:

printDiamond();break;

case2:

fangcheng();break;

case3:

zhishu();break;

case4:

paixu();break;

case5:

jiecheng();break;

case6:

myfile();break;

default:

printf("error\n");break;

case7:

exit(0);

}

}

}

voidmymenu()

{printf("pressanykeytocleanthewindow");

getch();

clrscr();

printf("ifyouwanttochoose6,youmustbuildafilewhosenameis\"a.txt\"inddisk!

!

");/*程序说明,建立相应的文件夹*/

printf("andtheninput10numbers,youshouldalsobuildanotherfile\"b.txt\"inddisk!

!

\n");

printf("|whatdoyouwanttodo?

|\n");

printf("|-------------------------|\n");

printf("|inputanumber|\n");

printf("|-------------------------|\n");

printf("|1:

printDiamond||\n");

printf("|2:

fangcheng||\n");

printf("|3:

zhishu||\n");

printf("|4:

paixu||\n");

printf("|5:

jiecheng||\n");

printf("|6:

myfile||\n");

printf("|7:

exit||\n");

printf("|-------------------------|\n");

}

 

voidprintDiamond()/*打印菱形块*/

{

intm;

inti;

printf("howmanyrowsdoyouwant\n");

scanf("%d",&m);

for(i=1;i<=m;i+=2){printStar((m-i)/2,'');printStar(i,'*');printf("\n");}

for(i=m-2;i>=1;i-=2){printStar((m-i)/2,'');printStar(i,'*');printf("\n");}

 

}

voidprintStar(intn,charc){

inti;

for(i=1;i<=n;i++)printf("%c",c);

return;

}

voidfangcheng()

{

floata,b,c;

floatx1,x2;

floatd;

printf("Pleaseinputa,b,c:

");

scanf("%f%f%f",&a,&b,&c);

d=b*b-4*a*c;

if(d<0){printf("Norealroot.\n");}/*判断是否能有实根*/

elseif(d==0){

x1=x2=-b/2./a;

printf("x1=x2=%f\n",x1);

}

else{

x1=(-b+sqrt(d))/2./a;

x2=(-b-sqrt(d))/2./a;

printf("x1=%f,x2=%f\n",x1,x2);

}

}

voidzhishu()

{inti=0,a=0;

printf("inputanumber");

scanf("%d",&a);

for(i=2;i<=a-1;i++)

if(a%i==0)break;

if(i>a-1)

printf("%disaprimenumber\n",a);

else

printf("%disnotaprimenumber\n",a);

}

voidpaixu()

{

inta[100],n,i,j,k,*p;

printf("howmanynumbersdoyouwantinput\n");

scanf("%d",&n);

printf("inputthenumberyouwant\n");

for(i=0;i

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

printf("before:

");

for(i=0;i

printf("\n");

for(i=0;i

for(j=0;j

{k=a[j];a[j]=a[j+1];a[j+1]=k;}

p=a;

printf("after:

");

for(j=0;j

printf("\n");

}

voidjiecheng()

{intn,i;

longsum;

printf("inputanumber");

scanf("%d",&n);

sum=1;

for(i=1;i<=n;i++)

sum=sum*i;

printf("%ld",sum);

}

voidmyfile()

{FILE*fin,*fout;

inta[1000];

inti,j,k;

fin=fopen("d:

a.txt","r");/*打开D盘根下的名为a.txt的文件*/

for(i=0;i

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

fclose(fin);

for(i=0;i

for(i=0;i

for(j=0;j

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

{k=a[j];a[j]=a[j+1];a[j+1]=k;}

for(i=0;i

fout=fopen("d:

b.txt","w");/*将所得的结果放在D盘根下的名为b.txt的文件*/

for(i=0;i

fprintf(fout,"%6d",a[i]);

fclose(fout);

}

 

 

评分标准

评分项目

满分(100分)

实际得分

完成基本内容

30

程序运行效果

20

创新能力

20

实验报告

30

合计

100

指导教师评语:

 

指导教师

2012年月日

总评成绩

 

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

当前位置:首页 > 临时分类 > 批量上传

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

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