C2实验报告 2
更新时间:2024-04-20 10:49:01 阅读量: 综合文库 文档下载
- 运筹学实验报告推荐度:
- 相关推荐
《C程序设计2》实验报告格式
实验名称
1、实验目的(自己组织) 2、实验内容 (1) (2) (3)
3、实验报告要求
(1)程序(可写在实验内容处); (2)程序运行结果及分析; (3)实验总结;
(4)学期结束,将所有实验内容完善后,以文件形式提交(文件名格式:学号_姓名.RAR)。
《C程序设计2》实验内容
实验一:函数
1、 定义函数返回两个数中的最大数,在主函数中通过调用该函数求三个数中较大的数
并输出。
#include
float f(float x,float y); float a,b,c,max;
printf(\ scanf(\ max=f(a,b); max=f(c,max);
printf(\ getch(); }
float f(float x,float y) {
float m; m=x;
if(x 分析:两次调用函数就可以了。。。 2、编写一个判断一个整数是否为素数的函数,并求出在2000以内的所有素数。 #include int f(int x); int i,j=0; for(i=2;i<2000;i++) { if(f(i)==1) { printf(\ j++; if(j%5==0) printf(\ } } return 0; } int f(int x) { int m; for(m=2;m 3、求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0的根,并输出结果。从主函数输入a、b、c的值。 #include void jisuan1(float m,float a,float b,float c); void jisuan2(float m,float a,float b,float c); void jisuan3(float m,float a,float b,float c); float a,b,c,m; printf(\请输入一元二次方程组的a,b,c:\ scanf(\ printf(\ m=b*b-4*a*c; if(a==0) printf(\不是一元二次方程组!!!\ else if(m>0) jisuan1(m,a,b,c); else if(m==0) jisuan2(m,a,b,c); else if(m<0) jisuan3(m,a,b,c); getch(); } void jisuan1(float m,float a,float b,float c) { float m1,m2,x1,x2; m1=-b/(2*a); m2=sqrt(m)/(2*a); x1=m1+m2; x2=m1-m2; printf(\该方程的根为:\\n\ printf(\ } void jisuan2(float m,float a,float b,float c) { float m1,x1,x2; m1=-b/(2*a); printf(\该方程的根为:\\n\ printf(\ } void jisuan3(float m,float a,float b,float c) { float m1,m2,x1,x2; m1=-b/(2*a); m2=sqrt(-m)/(2*a); printf(\该方程的根为:\\n\ printf(\ } 4、定义一个函数replace(),其中包含三个形参:两个是字符型,一个是字符串型。该函数返回一个整数。函数的功能是在字符串中查找第一个字符,如果找到,用第二个字符替换该字符,并将替换的次数作为返回值。编写主函数调用该函数。 #include int replace(char *s,char c1,char c2); char s[100],ch1,ch2; int count; printf(\请输入一个字符串:\\n\ gets(s); printf(\请输入两个字符:\\n\ scanf(\ count=replace(s,ch1,ch2); printf(\变化后的字符串为:\ puts(s); printf(\字符变化的次数为:%d\ getch(); } int replace(char *s,char c1,char c2) { int i,count=0; for(i=0;s[i]!='\\0';i++) { if(s[i]==c1) { s[i]=c2; count++; } } return count; } 实验二:数组(一) 1、由键盘对10个数组元素初始化,求它们的平均值并输出。 #include float a[10],s=0; int i; for(i=0;i<10;i++) scanf(\ for(i=0;i<10;i++) { printf(\ s+=a[i]; } printf(\ getch(); } 2、输入一个十进制整数,输出与其相等的二进制形式。将二进制保存在一个数组中,然后按相反的顺序输出。 #include int x,a[100],i,j; printf(\ scanf(\ for(i=0;x!=0;i++) { a[i]=x%2; x=x/2; } i--; for(j=0;j<=i;j++) printf(\ getch(); } 2、编程对10个数组元素的排序。 #include float a[10],j,t,i,m; for(i=0;i<10;i++) scanf(\ for(i=0;i<10;i++) printf(\ printf(\ for(i=0;i<9;i++) { m=i; for(j=m+1;j<10;j++) if(a[m]>a[j]) m=j; t=a[i];a[i]=a[m];a[m]=t; } for(i=0;i<10;i++) if(i!=9) printf(\ else printf(\ getch(); } 实验三:数组(二) 1、由键盘对4×4的二维数组初始化,计算其两条对角线元素之和并输出。 #include int a[4][4],i,j,s1,s2; printf(\ for(i=0;i<4;i++) for(j=0;j<4;j++) scanf(\ for(i=0;i<4;i++) { for(j=0;j<4;j++) printf(\ printf(\ } s1=s2=0; for(i=0;i<4;i++) for(j=0;j<4;j++) if(i==j) s1+=a[i][j]; else if(i+j==3) s2+=a[i][j]; printf(\ getch(); } 2、通过二维数组实现杨辉三角的前10行并输出。杨辉三角形式请参考教材P153。 #include int a[10][10],i,j; for(i=0;i<10;i++) for(j=0;j<10;j++) a[i][j]=1; for(i=2;i<10;i++) for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf(\ printf(\ } getch(); } 3、将M×N的矩阵转置成N×M的矩阵并输出。 #include int a[100][100],i,j,m,n; printf(\输入m,n:\ scanf(\ for(i=0;i scanf(\ printf(\ for(i=0;i for(j=0;j printf(\ printf(\ } printf(\ for(i=0;i for(j=0;j printf(\ printf(\ } getch(); } 实验四:指针(一) 注:实验四~实验六的所有程序都使用指针方法操作 1、编写求字符串串长的函数(strlen),并在主函数中调用。 #include int strlen(char *s); char s[100]; printf(\输入一个字符串:\\n\ gets(s); printf(\这个字符串的长度为:%d\ getch(); } int strlen(char *s) { int i; for(i=0;s[i]!='\\0';i++); return i; } 2、编写连接两字符串的函数(strcat),并在主函数中调用。 #include void strcat(char *s1,char *s2); char sm1[100],sm2[100]; printf(\请输入一个字符串:\\n\ gets(sm1); printf(\请输入一个字符串:\\n\ gets(sm2); strcat(sm1,sm2); printf(\处理后的字符串为:%s\ getch(); } void strcat(char *s1,char *s2) { int i,j=0; for(i=0;s1[i]!='\\0';i++); while(s2[j]!='\\0') { } s1[i]=s2[j]; i++; j++; } 3、sort()对一维整数数组的内容进行排序;编写函数in_data()读入一组整数;编写函数out_data输出整数数组的内容;在主函数中调用这些函数,输入一组整数,输出排序前和排序后的情况。 #include void int_data();//输入 void out_data();//输出 void sort(int *s);//排序 int_data(); sort(s); out_data(); getch(); } void int_data() { int i; printf(\输入一个数:\ scanf(\ printf(\输入%d个数:\ for(i=0;i void out_data() { int i; for(i=0;i void sort(int *s) { int i,j,t; for(i=1;i for(j=0;j t=s[j]; s[j]=s[j+1]; s[j+1]=t; } } 实验五:指针(二) 1、编写函数 reverse(*s),实现对字符串S的倒排,编写主函数对其进行调用。 #include void reverse(char *s); char sh[100]; printf(\输入一个字符串:\ gets(sh); reverse(sh); printf(\输出一个字符串:\ puts(sh); getch(); } void reverse(char *s) { int i,j; char ch; j=strlen(s); for(i=0,j=j-1;i ch=s[i]; s[i]=s[j]; s[j]=ch; } } 2、编写函数strcmp(*s1,*s2),实现对两字符串的比较,编写主函数对其进行调用。 #include int strcmp(char *s1,char *s2); char sm1[100],sm2[100]; int count; printf(\输入一个字符串:\ gets(sm1); printf(\输入一个字符串:\ gets(sm2); count=strcmp(sm1,sm2); if(count==1) printf(\ else if(count==0) printf(\ else printf(\ getch(); } int strcmp(char *s1,char *s2) { int l1,l2,min,i; l1=strlen(s1); l2=strlen(s2); min=l1>l2? l2:l1; for(i=0;i if(s1[i]==s2[i]) continue; else break; if(min-1==i) { if(l1>l2) return 1; else if(l1==l2) return 0; else return -1; } else { if(s1[i]>s2[i]) return 1; else if(s1[i]==s2[i]) return 0; else return -1; } } 3、有一字符串,包含n个字符,写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。 #include void copy(char *s,int m); int n,m,i; char s[100]; printf(\请输入n的值:\ scanf(\ printf(\请输入一个字符串:\ for(i=0;i printf(\请输入M的值:\ scanf(\ copy(s,m); printf(\ getch(); } void copy(char *s,int m) { strcpy(s,s+m); } 实验六:指针(三) 1、有一个班4个学生5门课程。(1)求第一门课程的平均分;(2)找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上的学生。分别编3个函数实现以上要求。 #include void average(float stu[4][5],float av[4]) { int i,j; for(i=0;i<4;i++) av[i]=0; for(i=0;i<4;i++) { for(j=0;j<5;j++) av[i]+=stu[i][j]; av[i]=1.0*av[i]/5; } } void firstsubject(float stu[4][5]) { float s=0; int i; for(i=0;i<4;i++) s+=stu[i][0]; printf(\这些学生第一门课的平均分是:%.2f\\n\} void search(float stu[4][5],long num[4]) { int count[4],i,j; float av[4]; average(stu,av); for(i=0;i<4;i++) count[i]=0; for(i=0;i<4;i++) for(j=0;j<5;j++) if(stu[i][j]<60) count[i]++; printf(\输出两门课以上不及格学生的信息:\\n\ for(i=0;i<4;i++) { if(count[i]>2) { printf(\学号 5门课的成绩 平均成绩\\n\ printf(\ for(j=0;j<5;j++) { printf(\ } printf(\ } } } void zhaochu(float stu[4][5],long num[4]) { float av[4]; int i; average(stu,av); printf(\平均成绩在90以上的学生信息:\\n\ for(i=0;i<4;i++) { if(av[i]>=90) { printf(\学号:%ld\\n\ printf(\平均成绩:%.2f\\n\ } } } main() { float stu[4][5]; long num[4]; int i,j; printf(\输入4位学生的信息:\\n\ for(i=0;i<4;i++) { printf(\输入第%d位学生的信息:\\n\ printf(\学号:\ scanf(\ printf(\ for(j=0;j<5;j++) { printf(\输入该学生第%d门课的成绩:\ scanf(\ } } firstsubject(stu); search(stu,num); zhaochu(stu,num); } 2、编写一个程序,输入月份,输出该月的英文月名。例如,输入“3”,则输出“March”,要求用指针数组实现。 #include char *month[]= { \ \ \ \ \ \ \ \ \ \ \ \ }; int x; printf(\请用数字输入月份:\ scanf(\ printf(\ } 实验七:结构体 (一) 1、用结构体表示日期,编写程序计算伦敦奥运会的倒计时的天数并输出(2012年8月15日)。 #include int banduan(int year) { return ((year%4==0&&year0!=0)||(year@0==0)); } main() { int i,j,s=0; int tap[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; printf(\输入现在的时间:\ scanf(\ } printf(\ for(i=date.year+1;i<2012;i++) { j=banduan(i); if(j==1) s+=356; else if(j==0) s+=355; } if(date.year==2012) { for(i=date.month+1;i<8;i++) s+=tap[1][i]; if(date.month==8) s=s+15-date.day; else s+=tap[1][date.month]-date.day+15; } else { j=banduan(date.year); for(i=date.month+1;i<=12;i++) s+=tap[j][i]; for(i=1;i<8;i++) s+=tap[1][i]; s+=tap[j][date.month]-date.day+15; } printf(\倒计时%d天\ 2、某系的成绩登记册中,每个班最多有40个学生,每份成绩表中的成绩信息包括:学号(9位字符),姓名(8位字符),成绩(百分制),备注(20位字符)。设计程序以处理一个班的成绩信息,包括输入、输出、查询(给定分数以上的学生信息)等。 #include void input(struct student stu[40],int n) { int i; printf(\学生信息:\\n\ for(i=0;i void output(struct student stu[40],int n) { int i; printf(\学生信息:\\n\ for(i=0;i void search(struct student stu[40],int n) { float x; int i; printf(\输入给定分数:\ scanf(\ printf(\ for(i=0;i } } main() { int n; printf(\输入总共有多少学生:\ scanf(\ printf(\ input(stu,n); printf(\ output(stu,n); printf(\ search(stu,n); } 实验八:结构体 (二) 1、为一个花店编写一个库存管理程序,花店库存的花用花的名称、颜色、单价和株的数量来表示。要求: (1)定义一个结构数组,存储库存的鲜花的数据; (2)编写函数input_data(),输入现有库存的鲜花数据; (3)编写一个函数buy(),向用户询问她需要购买的鲜花的种类和数量,计算总价,并从库存中减去用户购买的数量,返回总价格。 编写主函数调用上述函数。 #include char name[20]; char color[10]; float price; int num; }flower[100]; int n,count; void input_data() { int i; printf(\输入花店已有花的信息:\\n\ for(i=0;i { printf(\第%d种花:\\n\ printf(\名称:\ scanf(\ printf(\颜色:\ scanf(\ printf(\价格:\ scanf(\ printf(\数量:\ scanf(\ printf(\ } } float buy() { int i; char s[20]; printf(\现在店里有的花的种类有:\ for(i=0;i printf(\用户需要多少数量的这种花?\\n\ scanf(\ for(i=0;i main() { float money=0; printf(\输入有多少种花:\ scanf(\ input_data(); money=buy(); n-=count; printf(\用户买的这种花共需要%.2f元钱\} 实验九:编译预处理 1、输入输入两整数,求它们相除的余数,用带参数的宏来实现。 #include 12、三角的面积为area=s(s?1)(s?b)(s?c),其中s=(a?b?c)。a、b、c为三角形的三 2边。定义两个带参数的宏,一个用来求s,另一个用来求area。写程序,在主程序中用带实参的宏名来求面积area。 #include #define S(a,b,c) ((a)+(b)+(c))/2 #define AREA(a,b,c) sqrt((S(a,b,c))*((S(a,b,c))-(a))*((S(a,b,c))-(b))*((S(a,b,c))-(c))) main() { float a,b,c; printf(\输入三角形三条边的长度:\ scanf(\ printf(\ return 0; } 实验十:文件 1、编程统计一个文本文件 f.txt中所有字母和所有数字的总的出现次数。 #include if(ch>='0'&&ch<='9') shuzicount++; else zimucount++; } fclose(fp); printf(\字母有%d个 数字有%d个\} 2、编程将文本文件 f.txt中的所有小写字母变成大写字母并存入另一文本文件o.txt中。 #include 3、由键盘初始化5个学生3门课程的成绩,计算出平均成绩,将原有成绩及平均成绩分行存放在文件score.txt中。 #include } fprintf(fp,\} fclose(fp); 综合实验 1、对键盘输入的10个数进行排序后输出,方法不限 #include } printf(\输入10个数:\\n\for(i=0;i<10;i++) { printf(\ scanf(\ printf(\} for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for(i=0;i<10;i++) printf(\getch(); 2、有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。 #include } t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf(\for(i=0;i printf(\输入一个数:\scanf(\for(i=0;i else if(i==0) { printf(\ for(j=0;j getch(); 3、打印出杨辉三角形的前15行。 #include } long a[15][15]; for(i=0;i<15;i++) for(j=0;j<=i;j++) if(j==0||i==j) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<15;i++) { for(j=0;j<=i;j++) printf(\ \ printf(\} getch(); 4、有n(>5)个人围成一圈,顺序排号,从第一个人开始报数(从1到5报数),凡报到5的人退出圈子,问最后留下的是原来第几号的那位? #include } } people[i]=j; j++; } else if(j==5&&people[i]!=0) { people[i]=0; j=1; count--; } else if(people[i]==0) continue; if(count==1) { for(k=1;k<=n;k++) { if(people[k]!=0) { printf(\这个人的序号是:%d\ break; } } break; } if(i==n) i=0; 5、反向输出一个链表。 #include int n=0; main() { struct student *head,*tail,*p,*p1; int i=0; p=(struct student*)malloc(sizeof(struct student)); head=tail=NULL; p->next=NULL; printf(\输入学生学号、姓名:\scanf(\while(p->num!=0) { n++; if(head==NULL) head=p; else tail->next=p; tail=p; p=(struct student*)malloc(sizeof(struct student)); p->next=NULL; printf(\输入学生学号、姓名:\ scanf(\} tail->next=NULL; printf(\输出处理前学生信息:\\n\p=head; if(head!=NULL) do { printf(\学生学号、姓名:\ printf(\ printf(\ p=p->next; }while(p!=NULL); p=head->next; while(p->next!=NULL) { i++; if(i==1) head->next=NULL; p1=p->next; p->next=head; head=p; p=p1; } p->next=head; head=p; printf(\输出处理后学生信息:\\n\for(i=0;i } /*p=head; do { printf(\学生学号、姓名:\ printf(\ printf(\ p=p->next; }while(p!=NULL);*/
正在阅读:
C2实验报告 204-20
蜗牛作文800字07-12
结构化面试评分表(样表)01-02
西安电子科技大学操作系统试卷04-03
长沟镇县人大代表候选人与选民见面会主持词10-21
名人传记09-23
旧制度母体中的启蒙——读托克维尔《旧制度与大革命》05-21
凯誉国际商务会展有限公司05-12
- 天大砼方案 - 图文
- 农业科技网络书屋能力提升_玉米错题选
- DNS习题
- 浅议检察官对罪犯谈话的技巧与效果
- 高考语文文言文翻译专题训练
- AB类学科竞赛目录(2015)
- 建筑面积计算新规定(2015最新)
- Revit2012初级工程师题集一
- 十三五项目米线可行性报告
- 2013体育学院党组织建设工作总结
- 2014Revit工程师题库
- 高中数学如何实施研究性学习
- 茶艺表演 中英互译
- 小学音乐湘文艺版 四年级下册 第十一课《(歌表演)脚印》优质课公
- 山西省农村合作经济承包合同管理条例
- 2015年镇江市中考化学一模试题参考答案及评分标准(定稿)
- 统计 题集
- 批评意见清单
- 8潞安集团蒲县黑龙关煤矿矿业公司2
- 鄂教版四年级语文上册复习精要(光谷四小)
- 实验
- 报告