1、c语言实验报告北京联合大学C语言综合实验设计报告设计名称 C语言综合实验设计 姓 名 专 业 班 级 完成时间 1、实验名称:C语言综合实验设计-实用小工具2、程序功能:(1)输出任何字符组成的任意行菱形图案。(2)求解任意一个二元一次方程。(3)判断任意一个自然数是否为质数。(4)可以对输入的任意多个数进行排序(运用指针的方法给一列数排序)。(5)输入任意一个自然数可以求其阶乘。(6)对在D盘根下的a.txt中的数据进行排序,并且在相同路径下的b.txt输出已经排列好的一列数。(文件的读写,冒泡法排序)3、程序的运行截图。开始运行的界面 如图(1) 图1菜单界面 如图(2) 图(2)功能 1
2、 打印菱形块 如图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函数进行各种功能,而菜单下的函数是该程序的精髓。其中
3、为了更好的实现人机对话,还选择性的利用了清屏函数等等。(2)各函数的功能分析:1、打印菱形,该函数主要利用for循环语句实现打印多个相同的图形,其关键代码为 for(i = 1; i = 1; i -= 2) printStar(m - i) / 2, ); printStar(i, *); printf(n); for(i = 1; i = n; i+) printf(%c, c);前两个循环主要实现打印图形和空格。而最后一个主要实现打印多少个指定的图形。最终二者结合实现打印出的具有菱形的大图形。2、求任意一个一元二次方程的根。该程序主要利用一些简单的运算,从而求出方程的根。其主要代码为:
4、float a, b, c; float x1, x2; float d; printf(Please input a, b, c:); scanf(%f%f%f, &a, &b, &c); d = b*b - 4*a*c; if(d 0) printf(No real root.n); /*判断是否能有实根*/ else if(d = 0) x1 = x2 = -b / 2. / a; printf(x1=x2=%fn, x1); else x1 = (-b + sqrt(d) / 2. / a; x2 = (-b - sqrt(d) / 2. / a; printf(x1=%f, x2=%
5、fn, x1, x2); 改代码的核心部分是语句:if(d 0) printf(No real root.n); /*判断是否能有实根*/ else if(d = 0) x1 = x2 = -b / 2. / a; printf(x1=x2=%fn, x1); else x1 = (-b + sqrt(d) / 2. / a; x2 = (-b - sqrt(d) / 2. / a;if函数的运用使方程是否有实根的判断变得简单。4、判断一个自然数是否为质数程序的主要代码为: int i=0,a=0; printf(input a number ); scanf(%d,&a); for(i=2;
6、ia-1) printf(%d is a prime numbern,a); else printf(%d is not a prime number n,a); 判断输入的自然数是否为质数主要由语句for(i=2;ia-1) printf(%d is a prime numbern,a); else printf(%d is not a prime number n,a);该程序仍由for语句完成质数的判断。由此也可以看出for语句在c语言中的重要性。5、给输入的任意一列自然数排序。程序主要代码: int a100,n,i,j,k,*p; printf(how many numbers do
7、 you want inputn); scanf(%d,&n); printf(input the number you want n); for(i=0;in;i+) scanf(%d,&ai); printf(before:); for(i=0;in;i+)printf(%d ,ai); printf(n); for(i=0;in-1;i+) for(j=0;jn-1-i;j+)if(ajaj+1) k=aj;aj=aj+1;aj+1=k; p=a; printf(after:); for(j=0;jn;j+) printf(%d ,pj); printf(n); 代码分析:要实现该程序预
8、期的功能,必须解决两个问题1、任意多个数的输入问题。2、给这些数排序。而数组可以解决任意数的输入问题,冒泡法可以解决任意多个数的排序问题。关键代码为程序主要代码: int a100,n,i,j,k,*p; printf(how many numbers do you want inputn); scanf(%d,&n); printf(input the number you want n); for(i=0;in;i+) scanf(%d,&ai);冒泡法排序 :for(i=0;in-1;i+) for(j=0;jn-1-i;j+)if(ajaj+1) k=aj;aj=aj+1;aj+1=k
9、;6、阶乘问题;程序中的主要代码;scanf(%d,&n); sum=1; for(i=1;i=n;i+) sum=sum*i; 该程序的编写较为简单,主要运用了累乘的方法。因此不多介绍。7、文件的输入输出问题。该程序的代码为 FILE *fin,*fout; int a1000; int i,j,k; fin=fopen(d:a.txt,r);/*打开D盘根下的名为a.txt的文件*/ for(i=0;it;i+) fscanf(fin,%d,&ai); fclose(fin); for(i=0;it;i+) printf(%6d,ai);printf(n); for(i=0;it-1;i+
10、) for(j=0;jaj+1) k=aj;aj=aj+1;aj+1=k; for(i=0;it;i+)printf(%6d,ai);printf(n); fout=fopen(d:b.txt,w);/*将所得的结果放在D盘根下的名为b.txt的文件*/ for(i=0;it;i+) fprintf(fout ,%6d,ai); fclose(fout); 主要涉及文件的读写问题,读文件主要代码为fin=fopen(d:a.txt,r);/*打开D盘根下的名为a.txt的文件*/ for(i=0;it;i+) fscanf(fin,%d,&ai); fclose(fin);写文件的主要代码为;
11、fout=fopen(d:b.txt,w);/*将所得的结果放在D盘根下的名为b.txt的文件*/ for(i=0;it;i+) fprintf(fout ,%6d,ai); fclose(fout);文件中数字的排序在前边已经介绍过,故不多做说明。其中程序的源代码见附件一。附件一(源代码)/* Note:Your choice is C IDE */#include #include #include #define t 10void mymenu();void printStar(int, char);void printDiamond();void fangcheng();void zh
12、ishu();void paixu();void jiecheng();void myfile();main() int a; while(-1) printf( my c language homework n); mymenu(); printf( make a choice from 1-7n); scanf(%d,&a); switch(a) case 1: printDiamond();break; case 2: fangcheng();break; case 3: zhishu();break; case 4: paixu();break; case 5: jiecheng();
13、break; case 6: myfile(); break; default :printf(errorn);break; case 7: exit(0); void mymenu() printf( press any key to clean the window); getch(); clrscr(); printf(if you want to choose 6 ,you must build a file whose name is a.txt in d disk!);/*程序说明,建立相应的文件夹*/ printf(and then input 10 numbers,you sh
14、ould also build another file b.txtin d disk!n); printf( | what do you want to do?|n); printf( |-|n); printf( | input a number |n); printf( |-|n); printf( | 1 : printDiamond | |n); printf( | 2 : fangcheng | |n); printf( | 3 : zhishu | |n); printf( | 4 : paixu | |n); printf( | 5 : jiecheng | |n); prin
15、tf( | 6 : myfile | |n); printf( | 7 : exit | |n); printf( |-|n); void printDiamond()/*打印菱形块*/ int m; int i; printf(how many rows do you want n); scanf(%d, &m); for(i = 1; i = 1; i -= 2) printStar(m - i) / 2, ); printStar(i, *); printf(n); void printStar(int n, char c) int i; for(i = 1; i = n; i+) pr
16、intf(%c, c); return; void fangcheng() float a, b, c; float x1, x2; float d; printf(Please input a, b, c:); scanf(%f%f%f, &a, &b, &c); d = b*b - 4*a*c; if(d 0) printf(No real root.n); /*判断是否能有实根*/ else if(d = 0) x1 = x2 = -b / 2. / a; printf(x1=x2=%fn, x1); else x1 = (-b + sqrt(d) / 2. / a; x2 = (-b
17、- sqrt(d) / 2. / a; printf(x1=%f, x2=%fn, x1, x2); void zhishu() int i=0,a=0; printf(input a number ); scanf(%d,&a); for(i=2;ia-1) printf(%d is a prime numbern,a); else printf(%d is not a prime number n,a); void paixu() int a100,n,i,j,k,*p; printf(how many numbers do you want inputn); scanf(%d,&n);
18、printf(input the number you want n); for(i=0;in;i+) scanf(%d,&ai); printf(before:); for(i=0;in;i+)printf(%d ,ai); printf(n); for(i=0;in-1;i+) for(j=0;jn-1-i;j+)if(ajaj+1) k=aj;aj=aj+1;aj+1=k; p=a; printf(after:); for(j=0;jn;j+) printf(%d ,pj); printf(n); void jiecheng() int n,i; long sum; printf(inp
19、ut a number); scanf(%d,&n); sum=1; for(i=1;i=n;i+) sum=sum*i; printf(%ld,sum); void myfile() FILE *fin,*fout; int a1000; int i,j,k; fin=fopen(d:a.txt,r);/*打开D盘根下的名为a.txt的文件*/ for(i=0;it;i+) fscanf(fin,%d,&ai); fclose(fin); for(i=0;it;i+) printf(%6d,ai);printf(n); for(i=0;it-1;i+) for(j=0;jaj+1) k=aj;aj=aj+1;aj+1=k; for(i=0;it;i+)printf(%6d,ai);printf(n); fout=fopen(d:b.txt,w);/*将所得的结果放在D盘根下的名为b.txt的文件*/ for(i=0;it;i+) fprintf(fout ,%6d,ai); fclose(fout); 评分标准评分项目满分(100分)实际得分完成基本内容30程序运行效果20创新能力20实验报告30合 计100指导教师评语:指导教师 2012 年 月 日总评成绩
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1