C语言程序设计II实验报告
C语言程序设计实验报告2

实验2 流程控制实验2.1 实验目的(1)掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。
(2)熟练运用for、while、do-while语句来编写程序。
(3)练习转移语句和标号语句的使用。
(4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。
2.2 实验内容及要求2.2.1.源程序改错下面是计算s=n! 的源程序,在这个源程序中存在若干语法和逻辑错误。
要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。
例如,8!=40320。
1 #include <stdio.h>2 int main()3 { int i,n,s=1;4 printf("Please enter n:");5 scanf("%d",n);6 for(i=1,i<=n,i++)7 s=s*i;8 printf("%d! = %d",n,s);9 }10 return 0;解答:(1)错误修改:1)输入字符格式错误,正确形式为:scanf(“%d”,&n);2)return 0;与}的相对位置错误,正确形式为:return0;}(2)错误修改后的程序:#include <stdio.h>int main(){ int i,n,s=1;printf("Please enter n:");scanf("%d",n);for(i=1,i<=n,i++)s=s*i;printf("%d! = %d",n,s);return 0;}(3) 运行结果:图1 2.2.1源程序改错测试图2.2.2.源程序修改替换(1)修改第1题,分别用while和do-while语句替换for语句。
计算机二级 C语言 实验报告 样本

循环结构程序设计一、实验目的1.掌握三种循环语句的格式、执行与设计技巧,掌握分支程序结构与循环程序结构的配合(嵌套)使用,使用常用算法设计相应的程序以解决实际问题;2.实验重点——三种循环语句及循环嵌套3.实验难点——循环嵌套4.实验要求——重点讨论for语句及几种常用的程序设计方法:穷举、递推、迭代法二、实验原理1.while语句while语句的一般形式为:while (表达式)语句;其执行准则为当表达式的值为非0时执行while中的内嵌语句。
在表达式中,往往有一个变量用来控制循环的结束,这个变量叫循环控制变量。
在这种循环中,必须在进入循环之前给循环控制变量赋初值,而在循环体中,还要注意必须有一句使循环控制变量的值改变的语句,2.do-while语句一般形式为:do语句while(表达式);执行准则为:先执行一次指定的内嵌语句,而后判断表达式,当表达式的值为0时结束循环。
在表达式中,往往有一个变量用来控制循环的结束,这个变量叫循环控制变量。
在这种循环中,必须在进入循环之前给循环控制变量赋初值,而在循环体中,还要注意必须有一句使循环控制变量的值改变的语句,3.for语句一般形式为:for(表达式1;表达式2;表达式3)语句;执行过程为:①先求解表达式1;②求解表达式2,若其值为真,则执行指定的内嵌语句而后执行下一步;若其值为假,则结束循环;③求解表达式3;④转②;⑤执行for下面的语句。
说明:①一般形式中的表达式1可以省略,此时应该在for 语句前给循环变量赋初值;如for (;i<=100;i++) sum=sum+i;②如果表达式2省略,则循环为无限循环;③表达式3也可以省略,但此时应该另外设法保证循环正常结束;如 for (sum=0,i=1;i<=100;){sum=sum+i;i++}④可以只有表达式2,此时完全等同于while语句;⑤三个表达式都可以省略,此时相当于while(1)语句,循环为无限循环;如for ( ; ;)⑥表达式1和表达式3可以是逗号表达式;⑦表达式2一般是关系表达式。
C语言实验二报告

北京电子科技学院(BESTI)实验报告课程:程序设计基础班级:姓名:学号:成绩:指导教师:张晓昆实验日期:实验密级:预习程度:实验时间:15:30~18:30仪器组次:必修/选修:必修实验序号: 2实验名称:函数编程练习实验目的与要求:主函数通常只处理输入和输出;掌握定义函数的方法;掌握函数实参与形参的对应关系,以及“值传递”的方式;掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法,、了解函数的嵌套调用方法和递归调用方法。
观察堆栈窗口call stack,注意函数调用过程堆栈的动态变化。
有兴趣的同学可以将几个函数分别放到不同的.C文件中,分别编译,再利用Project建立工程文件,然后连接执行,观察结果。
实验内容素数(Prime Number),又称为质数,它是不能被1和它本身以外的其他整数整除的正整数。
按照这个定义,负数、0和1都不是素数,而17之所以是素数,是因为除了1和17以外,它不能被2~16之间的任何整数整除。
任务1:试商法是最简单的判断素数的方法。
用i=2~m-1之间的整数去试商,若存在某个m能被1与m本身以外的整数i整除(即余数为0),则m不是素数,若上述范围内的所有整数都不能整除m,则m是素数。
采用试商法,分别用goto语句、break语句和采用设置标志变量并加强循环测试等三种方法编写素数判断函数IsPrime(),从键盘任意输入一个整数m,判断m是否为素数,如果m是素数,则按"%d is a prime number\n"格式打印该数是素数,否则按"%d is not a prime number\n"格式打印该数不是素数。
然后分析哪一种方法可读性更好。
1、goto语句#include <stdio.h>#include <stdlib.h>int IsPrime(int n); //判断是否是素数的函数原型int main(){int m;printf("Please enter a integer:");scanf("%d", &m); //用户输入欲判断的数if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果printf("%d is a prime number!\n", m);}else{printf("%d is not a prime number!\n", m);}return 0; //返回0} //主函数结束int IsPrime(int n) //判断是否是素数的函数{int i = 2;int j = 0;if(n < 2){ //若n小于2,返回0值return 0;}if(n == 2){return 1;}loop:if(n % i == 0){ //利用goto语句i++;j++;goto loop;}if(j >= 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0;}else{return 1;}} //子函数结束2、break语句#include <stdio.h>#include <stdlib.h>int IsPrime(int n); //判断是否是素数的函数原型int main(){int m;printf("Please enter a integer:");scanf("%d", &m); //用户输入欲判断的数if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果printf("%d is a prime number\n", m);}else{printf("%d is not a prime number\n,", m);}return 0; //返回0} //主函数结束int IsPrime(int n) //判断是否是素数的函数{int i;int j = 0;if( n < 2 ){ //若n小于2,返回0值return 0;}for(i = 2; i <= n - 1; i++){if( n % i == 0){ //利用试商法判断是否能被2~n-1之间的数整除j++;}if(j > 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0;break;}}if( j == 0)return 1;} //子函数结束3、采用设置标志变量并加强循环测试#include <stdio.h>#include <stdlib.h>int IsPrime(int n); //判断是否是素数的函数原型int main(){int m;printf("Please enter a integer:");scanf("%d", &m); //用户输入欲判断的数if( IsPrime(m) == 1){ //调用判断是否是素数的函数并输出结果printf("%d is a prime number\n", m);}else{printf("%d is not a prime number\n,", m);}return 0; //返回0} //主函数结束int IsPrime(int n) //判断是否是素数的函数{int i;int j = 0;if( n < 2 ){ //若n小于2,返回0值return 0;}for(i = 2; i <= n - 1; i++){if( n % i == 0){ //利用试商法判断是否能被2~n-1之间的数整除j++;}}if(j >= 1){ //若j大于2,则说明能被2~n-1之间的数整除,返回0;否则返回1 return 0;}else{return 1;}} //子函数结束任务2:用数学的方法可以证明,不能被2取整)之间的数整除的数,一定不能被1和它本身之外的其他任何整数整除。
C语言程序设计II实验报告

第二部分实验内容
一、实验目的
1、掌握一维数组的定义和引用
2、掌握一维数组的初始化方法
3、了解与一维数组有关的应用编程方法
二、实验意义
在解决实际问题或实现某些算法时,数组是经常使用的构造数据类型,掌握数组的定义,元素引用特征和数组的编程特色,可加强学生解决实际问题的能力,同时可接触到更多的经典算法,这些算法很多都是通过数组类型存储数据并实现的,有了这些基础后,学生可以在今后的编程中应用这些知识。
数组的实验能让学生进一步的提高程序设计编程和调试的能力,对于数组元素引用及循环控制的特点,也可以在实验中得以加深理解和巩固知识。
三、实验重点
1 一维数组的定义、元素的引用。
2 一维数组编程的循环控制特色。
3 排序等相关算法的实现。
四、实验难点
一维数组编程的循环控制特色,程序调试时的数组越界问题
排序算法的理解和记忆
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
1. 从键盘输入10个整数存放在一维数组里,用冒泡法进行排序输出。
2. 从键盘输入10个整数,找出最大的数并输出该数及其下标。
3. 用scanf函数给二维数组a[3][4]输入12个数据,并求出12个数据中正数
之和,每一行的最小值以及下标值。
2023最新-c语言程序设计实验报告【2篇】

c语言程序设计实验报告【2篇】c语言程序设计实验报告篇一实验名称计算出1000以内10个最大素数之和实验目的1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。
2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。
3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。
进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
实验内容计算并输出1000以内最大的10个素数以及它们的和。
要求:在程序内部加必要的注释。
由于偶数不是素数,可以不考虑对偶数的处理。
虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。
输出形式为:素数1+素数2+素数3+…+素数10=总和值。
算法描述流程图main函数:判断素数:源程序#include#includeint sushu(int n)/* 判断素数的函数*/{int t,i;t=sqrt(n);for(i=2;i=t;i++)if(n%i==0)/* 如果不是素数,返回0 */return 0;return n;/* 如果是素数,返回该数*/}void main(){int i,j=0,n,m=0,a[1000],x;/*clrscr();*/printf(please input a number form 1 to 1000:);scanf(%d,amp;x);if(x==2)/* x=2时的处理*/printf(%dn,x);else if(x=1) /* x在1~1000范围外时的处理*/printf(error!n);else{if(x%2==0)/* x为偶数时,把x变为奇数*/x--;for(i=x;i1;i-=2)/* x为奇数时,做函数计算*/{n=sushu(i);/* 做判断素数的函数调用*/if(n!=0)/* 对素数的处理*/{a[j]=n;/* 把素数由大至小存入数组a[ ]中*/j++;if(j11)m+=n; /* 统计前10个素数之和*/}}if(j10)/* 当素数个数小于10个时,结果输出*/{for(i=0;i{n=a[i];printf(%d,n);printf(+);}printf(2=);printf(%dn,m+2);}else for(i=0;i10;i++)/* 当素数个数大于等于10个时,结果输出*/{n=a[i];printf(%d,n);if(i9)printf(+);else{printf(=);printf(%dn,m);}}}}测试数据分别输入1000、100、10测试。
《c语言程序设计》实验报告(实验-2)

《c语⾔程序设计》实验报告(实验-2)《C语⾔程序设计》实验报告2013~2014学年第⼆学期班级姓名学号指导教师实验⼀实验项⽬名称:C程序的运⾏环境和运⾏C程序的⽅法所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运⾏⼀个C程序;2.通过运⾏简单的C程序,初步了解C源程序的特点。
⼆、预习内容:教材《C语⾔程序设计教程》第1章。
三、实验内容:1. 在Visual C++ 6.0环境下输⼊并运⾏下⾯的程序:#includeint main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输⼊下⾯的程序(有语法错误),编译、连接、调试该程序,直⾄程序⽆语法错误,然后运⾏程序,并观察分析运⾏结果。
#includeint main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运⾏结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#includeint main( ){int a,b,sum;a=3;b=4;sum=a+b;printf("%d+%d=%d\n",a,b,sum);return 0;}(2) 运⾏结果(或截图):3+4=7五、思考题:1. ⼀个C程序上机的步骤有哪些?答:上级输⼊与编辑源程序—对原程序进⾏编译–与库函数链接–运⾏可执⾏的⽬标程序。
2. 组成C程序的基本单位是函数,⼀个函数包括哪⼏个部分?答:⼀个函数包括两部分:分别为函数头或函数⾸部和函数体。
成绩指导教师签名实验⼆实验项⽬名称:数据类型、运算符和表达式所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使⽤⽅法;3. 掌握基本算术运算符及其表达式的使⽤⽅法;4. 掌握++、--运算符、赋值运算符及其表达式的使⽤⽅法。
c语言实验二实验报告

一、实验目的1、掌握关系表达式和逻辑表达式的使用。
2、掌握选择结构程序设计的一般方法。
3、熟练使用if语句进行程序设计。
4、掌握使用switch语句实现多分支选择结构。
二、实验内容有一分段函数如下:编写程序,输入x(实数)的值,输出以如下格式:x=??.??,y=??.?? ( 即小数部分保留2位)程序代码:#include "stdio.h"int main(){float x,y;scanf("%f",&x);if(x<1)y=x*x;if(x>=1&&x<10)y=5*x-1;if(x>=10)y=2*x+4;printf("x=%.2f,y=%.2f\n",x,y);return 0;}2、从键盘输入三个实数,输出最大数和最小数。
样例输入:1.23 3.45 5.67样例输出:5.67 1.23程序代码:#include "stdio.h"int main(){float a,b,c,max,min;scanf("%f%f%f",&a,&b,&c);if(a>b){max=a;min=b;}else{max=b;min=a;}if(a>c)if(b>c){min=c;}else {min=b;}else {max=c;}printf("%.2f %.2f\n",max,min);return 0;}3、读入3个非零的double数后,判别这三个值是否可以表示一个三角形的三条边。
样例输入1:1.23 1.23 1.23样例输出1:yes.样例输入2:5.23 3.45 -12.34样例输出2:no.程序代码:#include "stdio.h"int main(){double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);if(a>0&&b>0&&c>0)if(a+b>c&&b+c>a&&a+c>b)printf("yes.\n");else printf("no.\n");else printf("no.\n");return 0;}4、读入3个非零整数后,判别这三个值是否可以表示一个直角三角形的三条边。
C语言程序设计实验报告2

《C语言程序设计实验报告》
实验编程作业
一.实验目的
1.熟悉运用Visual C++程序,掌握C语言的源程序的编辑、编译、执行的过程。
2.通过完成编程作业,了解并熟悉C语言源程序的特点。
二.实验要求
1.阅读和掌握本实验内容所给的全部程序。
2.熟练掌握C语言源程序的编辑、编译、执行的过程。
三.实验内容及成果展示
调试运行《C语言程序设计实验教程(第二版)》P6-P8编程题训练1.
2.
3.
4.
四.实验心得
1.在再次使用Visual C++进行程序的编辑、编译、和执行后,体会到将源代码输入正确对以后的程序调试、执行省去许多不必要的麻烦。
2.在输入源代码的过程中,认识到1和l的差别,下次碰到此种情况一定会更加细心地对待。
3.熟悉了C语言源程序的特点,能够在不同环境下编辑、编译、与运
行C语言程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计II实验报告题目:实验五函数应用院系名称:计算机学院专业名称:计算机科学与技术班级:学号:学生姓名:指导教师:实验日期:2017年4月1日报告提交截止日期:2017年4月11日一、实验目的1、掌握C语言函数的定义方法、函数的声明及函数的调用方法及调用过程;2、掌握主调函数和被调函数之间的参数传递方式;二、实验内容与要求:1、求两个整数的最大公约数和最小公倍数。
用一个函数求最大公约数,用另一个函数根据求出的最大公约数求最小公倍数。
(提示:设两个整数是a,b,最大公约数是p,最小公倍数是q,那么ab=pq)2、用牛顿迭代法求方程f(x)=ax3+bx2+cx+d=0的根。
系数a、b、c、d由主函数输入。
求根过程写成函数。
(提示:牛顿迭代法是先给定方程f(x)=0的一个较好的初始近似根x0,然后重复使用迭代公式:求x的近似解,直至相邻两次的近似解相差很小为止,如差值的绝对值小于1e-07。
x0可以从键盘输入或直接设定。
)3、定义一个函数,功能是计算n个学生的成绩中高于平均成绩的人数,并作为函数返回值。
用主函数来调用它。
统计30个学生成绩中高于平均成绩的有多少人。
4、∑=+++==ninpppipns1)()2()1()()(ΛΛ,!)(iip=5、编写和调用函数,给定圆筒的内径、外径和高,计算该圆筒的体积;给定圆锥的高、底面半径,计算该圆锥的体积和表面积。
6、编写和调用函数,求出10000以内的所有素数、绝对素数、水仙花数、完全数(或称完数)、互满数。
提示:一个素数经过任意次调换位,仍然为素数,则称其为绝对素数,例如13和31就是一个绝对素数。
水仙花数是指一个三位整数,其各位数字立方之和等于该数。
例如,153就是一个水仙花数:153=1*1*1+5*5*5+3*3*3。
完全数是指一个数正好是它的所有约数(本身除外)之和。
例如,6就是一个完全数,因为6的因子有1、2、3,并且6=1+2+3。
如果有两个数,每一个数的所有约数(除它本身以外)之和正好等于对方,则称这两个数为互满数。
三、实验结果int s(int a,int b,int i) {return a*b/i; }main() {int a,b; while(1) {scanf("%d%d",&a,&b);printf("最大公约数:%d\n 最小公倍数:%d\n",f(a,b),s(a,b,f(a,b))); }}实验测试结果(使用截图,图形格式JPEG 。
截图不要包含源代码):讨论(文本):2题目内容与要求:用牛顿迭代法求方程f(x)=ax 3+bx 2+cx+d=0的根。
系数a 、b 、c 、d 由主函数输入。
求根过程写成函数。
(提示:牛顿迭代法是先给定方程f(x)=0的一个较好的初始近似根x 0,然后重复使用迭代公式:)(')(000x f x f x x -=求x 的近似解,直至相邻两次的近似解相差很小为止,如差值的绝对值小于1e-07。
x 0可以从键盘输入或直接设定。
)算法简要描述(文本):通过构造函数实现题中给的公式。
源代码标识符说明(文本):a,b,c,d,存系数x存根。
源代码(粘贴程序,注意缩进,不得使用截图):#include"stdio.h"#include"math.h"float f1(float a,float b,float c,float d,float x){return (a*x*x*x+b*x*x+c*x+d);}float f2(float a,float b,float c,float x){return (3*a*x*x+2*b*x+c);}main(){while(1){float a,b,c,d,x,y,m,n;scanf("%f%f%f%f%f",&a,&b,&c,&d,&x);do{x=y;m=f1(a,b,c,d,x);n=f2(a,b,c,x);y=x-(m/n);}while(fabs(x-y)>=1e-7);printf("%.2f\n",y);}}实验测试结果(使用截图,图形格式JPEG。
截图不要包含源代码):讨论(文本):3 题目内容与要求:定义一个函数,功能是计算n个学生的成绩中高于平均成绩的人数,并作为函数返回值。
用主函数来调用它。
统计30个学生成绩中高于平均成绩的有多少人。
算法简要描述(文本):构造函数求出平均值,再和平均值一一比较。
源代码标识符说明(文本):p指针变量操作数组。
q存大于平均值成绩的个数。
源代码(粘贴程序,注意缩进,不得使用截图):#include"stdio.h"int f(float *p,int n){int i,q=0;float s=0;for(i=0;i<n;i++)s+=*(p+i);for(i=0;i<n;i++){if(*(p+i)>(s/n))q++;}return q;}main(){float a[30];int i,n=30;for(i=0;i<n;i++)scanf("%d",&a[i]);printf("%d",f(a,n));}实验测试结果(使用截图,图形格式JPEG。
截图不要包含源代码):讨论(文本):讨论(文本):5 题目内容与要求:编写和调用函数,给定圆筒的内径、外径和高,计算该圆筒的体积;给定圆锥的高、底面半径,计算该圆锥的体积和表面积。
算法简要描述(文本):构造圆锥和圆筒体积表面积函数源代码标识符说明(文本):a,b,c存数据。
源代码(粘贴程序,注意缩进,不得使用截图):#include"stdio.h"#include"math.h"#define PI 3.1415926float v(float a,float b,float h){if(b!=0)return PI*(b*b-a*a)*h;return PI*a*a*h/3;}float s(float a,float h){return PI*a*sqrt(a*a+h*h)+PI*a*a;}main(){float a,b,h;while(1){printf("请输入圆筒的内径,外径,高\n");scanf("%f%f%f",&a,&b,&h);printf("v=%f\n",v(a,b,h));b=0;printf("请输入圆锥的半径,高\n");scanf("%f%f",&a,&h);printf("v=%f s=%f\n",v(a,b,h),s(a,h));}}实验测试结果(使用截图,图形格式JPEG。
截图不要包含源代码):讨论(文本):6 题目内容与要求:编写和调用函数,求出10000以内的所有素数、绝对素数、水仙花数、完全数(或称完数)、互满数。
提示:一个素数经过任意次调换位,仍然为素数,则称其为绝对数,例如13和31就是一个绝对素数。
水仙花数是指一个三位整数,其各位数字立方之和等于该数。
例如,153就是一个水仙花数:153=1*1*1+ 5*5*5+3*3*3。
完全数if(a==i)printf("% d",i);} }int w(int x){int j,a=0;for(j=1;j<=x/2;j++)if(x%j==0)a+=j;return a;}int s(int x){int i,j,k;for(i=1;i<=x;i++)if(w(w(i))==i){if(w(i)<i)continue;printf("%d,%d ",i,w(i));}}main(){int i,j=0,x,a,b,c,m[1000];scanf("%d",&x);printf("素数为:\n");for(i=2;i<=x;i++)if(f(i)){printf("%5d",i);if(i>9&&i<100)if(f(i%10*10+i/10))m[j++]=i;if(i>100&&i<=999){c=i%10;a=i/100;b=(i-a*100)/10;if(a%2==0||b%2==0||c%2==0||a==5||b==5||c==5)continue;if(f(a*100+c*10+b)&&f(b*100+c*10+a)&&f(b*100+a*10+c)&&f(c*100 +b*10+a)&&f(c*100+a*10+b))m[j++]=i;}}printf("\n绝对素数为:");for(i=0;i<j;i++)printf("% d",m[i]);printf("\n水仙花数为:"); g(x);printf("\n完全数为:"); h(x);printf("\n互满数为:\n"); s(x);}实验测试结果(使用截图,图形格式JPEG。
截图不要包含源代码):讨论(文本):四、实验心得1 通过这次试验,对构造函数慢慢理解。
2 熟悉调用函数各方面规则。
3。