c语言实验报告.docx
- 文档编号:25531915
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:18
- 大小:511.85KB
c语言实验报告.docx
《c语言实验报告.docx》由会员分享,可在线阅读,更多相关《c语言实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
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年月日 总评成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告