C程序设计 实验报告 第四章
《C语言程序设计》实验四

电子科技大学计算机学院标准实验报告(实验)课程名称C语言程序设计电子科技大学教务处制表电子科技大学实验报告四学生姓名:学号:指导教师:王瑞锦实验地点:实验日期:年月日一、实验室名称:软件实验室二、实验项目名称:函数的应用及预处理三、实验学时:2四、实验原理:使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。
Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。
通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。
五、实验目的1.掌握C语言中定义函数的方法;2.掌握函数传值调用的方法;3.掌握函数传址调用的方法;4.掌握递归函数的设计方法;5.掌握命令行参数的使用方法;6.掌握函数在不同文件中的编译、链接方法。
六、实验内容编程实验,完成以下上机内容,调试运行程序并完成报告1)、教材第七章习题7.4;2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出;3)、教材第七章习题7.11;4)、教材第七章习题7.15;5)、教材第七章习题7.24;6)、求解汉渃塔(tower of Hanoi)问题。
在一块平板上立有3根立柱,从左到右分别标记为A,B,C。
最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。
要求将这些盘从A移到C(可以借助B柱)。
条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。
(提示:利用函数的递归调用);七、实验器材(设备、元器件):pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。
软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。
八、实验步骤:实验编程与运行结果⑴编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。
程序文件名为7_4.c,源程序清单如下:#include<stdio.h>lcd(int a,int b){int temp,num1,num2;num1=a;num2=b;while(num2!=0){temp=num1%num2;num1=num2;num2=temp;}return(a*b/num1);}main(){int t,x,y;printf("Please input two integers:");scanf("%d,%d",&x,&y);if(x>y){t=x;x=y;y=t;}printf("lcd(%d,%d)=%d\n",x,y,lcd(x,y));}运行结果:⑵编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。
C程序设计实验四实验报告

实验报告工学院土木工程专业09级2011 至2012 学年度第 1 学期实验目的:1、了解C语言表示逻辑量的方法(以0代表“假”, 以非0代表“真”);2.学会正确使用逻辑运算符和逻辑表达式;3.熟练掌握if语句的使用(包括if语句的嵌套);4.熟练掌握多分支选择语句——switch语句;5.结合程序掌握一些简单的算法;6.进一步学习调试程序的方法。
实验内容(1)本实验要求事先编好解决下面问题的程序, 然后上机输入程序并调试运行程序。
有一函数: x (x<1)y=﹛2x-1 (1<=x<10)3x-11 (x>=10)①写程序, 输入x的值, 输出y相应的值。
用scanf函数输入x的值, 求y值。
输入程序如下:#include<stdio.h>int main(){int x,y;printf("Please input x:");scanf("%d",&x);if (x<1){y=x;printf("x=%d y=%d",x,y);}else if (x<10){y=2*x-1;printf("x=%d y=%d",x,y);}else{y=3*x-11;printf("x=%d y=%d",x,y);}return 0;}运行结果如下: (分别输入-6,5,15)①从键盘输入一个小于1000的正数, 要求输出它的平方根(如果平方根不是正数,则输出其整数部分)。
要求在输入数据后先对其进行检查是否小于1000。
若不是, 则要求重新输入。
输入数据如下:#include<stdio.h>#include<math.h>int main(){int x,y;printf("Please input x:");scanf("%d",&x);while (x>1000){printf("Please input x(<1000):");scanf("%d",&x);}y=sqrt(x);printf("x=%d y=%d",x,y);return 0;}②运行结果如下①给出一个百分制成绩, 要求输出成绩等级A,B,C,D,E。
C程序设计实验报告四

C程序设计课程实验报告四班级:软工151 姓名:周敏磊学号:15477133一、实验目的掌握结构体与文件输入输出的基础语法与基本编程方法二、实验内容将实验报告三中成绩管理系统的各项功能,用结构体实现并增加文件输入输出功能。
三、实验过程与相关代码#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct student {char name[20];/*姓名*/int score;/*成绩*/struct student *next;}STU;int n;/*全局变量n用于统计链表的结点数*/STU *creat(){STU *head,*p1,*p2;FILE *fp;if((fp=fopen("d:\\ZML.txt","w"))==NULL) /*以写的方式打开文件*/{printf("cannot open file");getch();exit(1);}n=0;head=NULL;/*链表头赋初值NULL*/p1=p2=(STU *)malloc(sizeof(STU));/*动态申请一个新结点*/printf("请输入学生的姓名成绩并以*结束\n");scanf("%s%d",p1->name,&p1->score);fprintf(fp,"%s\t%d\n",p1->name,p1->score);/*在文件中写入数据*/while(strcmp(p1->name,"*")!=0)/*如果学号不为*时*/{n=n+1;/*结点数加1*/if(n==1) head=p1;/*链表头指向链表第一个结点*/else p2->next=p1;/*将原链表中最后一个结点和新建立的结点链接起来*/p2=p1;p1=(STU *)malloc(sizeof(STU));/*重新动态申请一个新结点*/scanf("%s%d",p1->name,&p1->score);fprintf(fp,"%s\t%d\n",p1->name,p1->score);}p2->next=NULL;/*令链尾结点的指针域为空指针*/free(p1);/*释放p1结点内存*/fclose(fp);return(head);}STU *InsertSort(STU *head){STU *first, *t, *p,*q;first = head->next; /*原链表剩下用于直接插入排序的节点链表*/head->next = NULL; /*只含有一个节点的链表的有序链表*/while (first != NULL) /*遍历剩下无序的链表*/{for (t = first, q = head; (q!= NULL) && (q->score < t->score); p = q, q = q->next); /*无序节点在有序链表中找插入的位置,退出for循环,就是找到了插入的位置*/ first = first->next; /*无序链表中的节点离开,以便它插入到有序链表中。
C程序设计(第五版)谭浩强实验报告四(附答案以及源程序分析)codeblocks

《C程序设计》实验报告年级专业班姓名成绩课程名称C语言实验项目名称循环结构指导教师一、实验目的1、熟练掌握while语句。
2、熟练掌握do---while语句。
3、熟练掌握for语句。
4、熟练掌握各种选择语句与循环语句的嵌套使用。
5、熟练掌握判断素数的算法。
6、熟练掌握累加等常见的算法。
二、实验内容4.1求s=1+1/2+1/3+..+1/n,输入n的值,输出s的值保留两位小数。
4.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
4.3 输出1000以内的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身,例如:153是水仙花数,因为153=13+53+33。
4.4 一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹,求它在第10次落地时共经过多少米,第10次反弹多高。
4.5 判断素数,输入任意整数,如果是输出Y es,如果不是输出No。
4.6 求s=a+aa+aaa+………,例如:输入a的值5,n的值6,则:S=5+55+555+5555+55555+5555554.7 编写程序,打印以下图形:(提示:使用双重循环)6.#include<stdio.h>void main(){int i,j,a,n,Sn=0;scanf("%ld%ld",&a,&n);j=a;for(i=1;i<=n;i++){Sn=Sn+a;a=j+10*a;}printf("%ld+%ld%ld+%ld%ld%ld+…=%ld\n",j,j,j,j,j,j,Sn); }7.#include<stdio.h>int main(void){int i,j;for(i=1;i<=7;i+=2){for (j=0;j++<i;printf("*"));printf("\n");}for(i-=4;i>0;i-=2)return 0;}四、运行结果(将每道题的运行结果截图并粘贴在此处)1.3.4.5.6.7.五、实验结果分析六、1.第四行程序“double”浮点型输入,第五行程序“scanf”标准输入n“while”第六行循环体语句循环条件i<=n。
《C语言程序设计》实验报告

(此文档为word格式,下载后您可任意编辑修改!)《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++6.0一、实验目的:1.了解在Visual C++6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。
二、预习内容:教材《C语言程序设计教程》第1章。
三、实验内容:1.在Visual C++6.0环境下输入并运行下面的程序:#include<stdio.(){printf("This is a C program.\n");return0;}2.在Visual C++6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。
#include<stdio.(){int a,b,suma=3;b=4;sun=a+b;print("%d+%d=%d\n",a,b,sum);return0;}四、实验结果:1.运行结果(或截图):2.(1)改正后的源程序:(2)运行结果(或截图):五、思考题:1.一个C程序上机的步骤有哪些?答:2.组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3.掌握基本算术运算符及其表达式的使用方法;4.掌握++、--运算符、赋值运算符及其表达式的使用方法。
二、预习内容:教材《C语言程序设计教程》第2章。
三、实验内容:1.在Visual C++6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误。
#include<stdio.(){int2cd=3;floatπ=3.14;char for=′A′;printf("%d,%f,%c\n",2cd,π,for);return0;}2.在Visual C++6.0环境下输入并运行下面的程序,观察分析运行结果。
C语言程序设计实验报告——实验4 逻辑结构程序设计

凯里学院 C 语言程序设计 实验报告××××× 专业×× 年级×× 班,学号×××××× 姓名××成绩 合作者 实验日期 年 月 日 指导教师 评阅日期 年 月 日实验四 逻辑运算和判断选择结构控制一、实验目的:(1)掌握C 语言中赋值语句的使用方法;(2)掌握不同类型数据的输入输出方法,能正确使用各种格式转换符; (3)学会正确使用逻辑运算符及逻辑表达式; (4)熟练掌握if 语句与switch 语句; 二、实验内容:本实验要求事先编好下面问题的程序,然后上机输入程序并调试运行程序 1) 有一个函数如下:⎪⎩⎪⎨⎧≥-≤≤-<=10113101121x x x x x x y用scanf 函数输入x 的值,求y 的值。
2) 给出一些百分制成绩,要求输出成绩等级’A ’,’B ’,’C ’,’D ’,’E ’。
90分以上为’A ’,80—89分为’B ’,70—79分为‘C ’,60—69分为‘D ’,60分以下为‘E ’。
3) 给出一个不多于5位的正整数,要求:1. 求出它是几位数;2. 分别输出每一位数字;3. 按逆序输出各位数字,例如原数为321,应输出123三、实验步骤:(1)有一个函数如下:⎪⎩⎪⎨⎧≥-≤≤-<=10113101121x x x x x x y用scanf 函数输入x 的值,求y 的值。
步骤①:设计好算法,并编辑源程序。
程序的分析:装订线装订线代码:#include <stdio.h>int main(){float x, y;scanf("%f", &x);if(x < 1)y=x;else{if(x>10)y=3*x-11;elsey=2*x-1;}printf("y=%f\n", y);return 0;}步骤②:输入x的值,x的值小于1.输入数据:0.5 ,输出结果:0.500000 如图一所示输入x的值,x的值大于等于1且小于10输入数据:7.0 输出结果:13.000000,如图二所示输入x的值,x的值大于等于10时:输入数据:12.0,输出结果:25.000000,如图三所示程序结果:如下图图一图二图三4)程序2:给出一些百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。
C语言实验报告 实验四 参考答案

实验四循环结构程序设计2(参考答案)(1)编写程序sy4-1.c,输入n,计算并输出如下多项式的值:S n=1+1/2!+1/3!+1/4!+…+1/n!。
例如输入n为15时,输出1.718282。
算法分析:第一项可以看成1/1!,用循环控制累加n个分式,分式的分母是i!,分子固定为1。
参考答案:# include <stdio.h>void main(){double s=0,p=1;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){p = p * i ; //计算分母i!s = s + 1 / p ; //累加}printf("s=%lf\n",s);}运行结果:(2)编写程序sy4-2.c,输入n,根据以下公式计算s:,例如当n=11时,结果为1.833333。
算法分析:该多项式的分母是累加。
参考答案:# include <stdio.h>void main(){double sn=0,s=0;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){s = s + i ; //计算分母1~i的累加和sn = sn + 1 / s ;}printf("sn=%lf\n",sn);}运行结果:(3)编写程序sy4-3.c,计算3~n之间所有素数的平方根之和,要求:输入n,输出结果。
例如,输入n 的值是100,则输出结果是148.874270。
注意n应在2~100之间。
算法分析:穷举3~n之间的数找素数,若是素数则累加她的平方根。
参考答案:# include <stdio.h># include <math.h>void main(){int i,j,n,flag;double s=0;scanf("%d",&n);for(i=3;i<n;i++) //穷举3~n之间找素数{flag=1; //假设当前的i是素数,标志变量设为1for(j=2;j<i;j++) //穷举要判断是否是素数的i的除数,范围2~i-1if(i%j==0) //若i能被j整除,则不是素数{ flag=0; break; } //标志变量改为0,并终止循环if( flag == 1 )s = s + sqrt( i ); //若i是素数,则累加sqrt(i)}printf("s=%f\n",s);}运行结果:(4)编写程序sy4-4.c,根据以下公式求p的值,(m与n为两个正整数且m>n)。
C语言实验报告(精选9篇)

C语言实验报告C语言实验报告(精选9篇)在经济发展迅速的今天,我们都不可避免地要接触到报告,通常情况下,报告的内容含量大、篇幅较长。
写起报告来就毫无头绪?下面是小编帮大家整理的C语言实验报告,欢迎阅读与收藏。
C语言实验报告1在这个星期里,我们在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
个人认为课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c 语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
第四章 循环结构程序设计
班级: 学号: 姓名:
信科 121 12477218 孙剑峰
第四章 循环结构程序设计 【实验目的】
1、学习绘制简单的框图 2、学习循环结构的程序设计
【上机准备】
第一题:求出前 20 个不能被 2,3,5,7 整除的数,并求出这些数的和。画出流
程图并写出程序
换方案请填空:
【上机内容】
【第一部分上机操作】 :
一、 P4_1 #include<stdio.h> void main() { int s=0,n=1,i=1; while(n<=20) { if(i%2!=0&&i%3!=0&&i%5!=0&&i%7!=0) { n++; s+=i; printf("%d\t",i); } i++; } printf("sum=%d\n",s); }
1 n!
第四题:计算圆周率方法中有一种称为蒙特卡罗法。其思路是在平面坐标系的
第一象限中,以(0,0) , (0,1) , (1,0)四个角为顶点的正方形中,产生随机 点。已知由圆心为(0,0) ,起点为(1,0) ,终点为(0,1)的四分之一圆的扇 形区域面积为 s=
1 所以若随机点到圆心距离小于 1 则认为落在这个扇形内 , 4
实ቤተ መጻሕፍቲ ባይዱ数据:
6
36
66
96
错误记录:循环判断条件错误,应为 if(j%3!=0)而不是 if(j%3==0)
六、 P4_6 #include<stdio.h> void main() { int i,s,k,count=0; for(i=100;i<1000;i++) { s=0; k=i; while(k>=10) { s=s+k%10; k=k/10; } if(s!=5) continue; else count++; } printf("%d\n",count); }
实验数据:sum=51 错误记录:\
三、 P4_3 #include<stdio.h> #include<math.h> void main() { int i; float e,term,a; e=1; a=1; i=1,term=1; while(term>=1e-6) // int(a*pow(10,-6))!=(a*pow(10,-6)) { a=a*i; term=1/a; e=e+term; i++; } printf("sum=%f\n",e); }
第二题:写程序求 1-3+5-7+…-99+101 的值,画出流程图并写出程序。
第三题: 线面的框图是通过公式 1
精 度 要 求 为 10 -6
1 1 1 …来求出 的近似值, 1 ! 2! 3!
。根据框图写出程序。提示:精度公式为
n S n 1 S n
实验数据:
1600
1681
2500
3600
4900
6400
8100
错误记录:逻辑混乱 g*g==a&&h*h==c&&i*i==e 误输入为 g*g==b&&h*h==d&&i*i==f
八、 P4_8 #include<stdio.h> void main() { int i,j,k,l=1; for(i=0;i<=20;i++) for(j=0;j<=50;j++) { k=100-5*i-2*j; if(k>=0) { printf("%2d%2d%2d",i,j,k); l=l+1; if(l%5==0) printf("\n"); } } }
实验数据:
1 11 43 47 sum=858 13 53 17 59 19 61 23 67 29 71 31 73 37 79 41 83
错误记录:忘记 i++;
二、 P4_2 #include<stdio.h> void main() { int i,x,s; i=1; s=0; x=1; while(x<=101&&x>-103) { s+=x; i++; x=2*i-1; if(i%2==0) x=x*(-1); } printf("sum=%d\n",s); }
【上机小结】 :
通过第四章的学习,我理解并掌握了循环结构的基本知识,学会了 C 语言编写 代码时的一些小技巧。
实验数据:3.139087 错误记录:随机数使用方法错误
五、 P4_5 #include<stdio.h> void main() { int i,j; for(i=0;i<10;i++) { j=i*10+6; if(j%3!=0) continue; printf("%d\t",j); } }
部。根据落在这个扇形内部点的比例再乘以 4 即可得到圆周率的近似值。画出 框图,编写程序,分别输出当随机点点数为 10,100,1000,10000,50000 等所求 出的圆周率。并求出当随机点数为多少的时候,求出圆周率精度为小数点后 3 位。
第五题:下面程序用来求 100 以内个位数为 6 且能够被 3 整除的所有数,请填
实验数据:
54
错误记录:\
七、 P4_7 #include<stdio.h> #include<math.h> void main() { int a,c,e,g,h,i; float b,d,f; for(a=1000;a<=9999;a++) { b=sqrt(a); g=b;
}
}
/*低两位*/ c=a%100; d=sqrt(c); h=d; /*高两位*/ e=(a-c)/100; f=sqrt(e); i=f; if(g*g==a&&h*h==c&&i*i==e)/*判断是小数或整数*/ printf("%d\t",a);
实验数据:
sum=2.718282
错误记录:刚开始未能正确理解精度的含义
四、 P4_4 #include<stdio.h> #include<stdlib.h> #include<math.h> void main() { int k,i,n; float m,q,l,p; printf("请输入随机点的点数:"); scanf("%d",&n); i=1; k=0; while(i<=n) { m=(float)rand()/RAND_MAX; q=(float)rand()/RAND_MAX; l=sqrt(m*m+q*q); i++; if(l<=1) k++; } p=k*1.000/n*4; printf("圆周率为:%f",p); }
空
第六题: 下面程序功能是计算 100-1000 之间有多少个数, 其各位数字之和是 5,
请填空
第七题:编程求所有 4 位数,这些数具有以下特点:这数本身是平方数,且其
低 2 位和高 2 位所组成的 2 个 2 位数也是平方数。使用伪码描述算法,画出流 程图,写出程序。
第八题:下面程序的功能是求出用一元人民币兑换一分、二分、五分的所有兑