c语言实验指导学生版._第1页
c语言实验指导学生版._第2页
c语言实验指导学生版._第3页
c语言实验指导学生版._第4页
c语言实验指导学生版._第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计与算法语言实验指导一、目的和任务程序设计的学习在数学专业的教学中占有重要地位。 在建立数学模型后, 对模型的求解 和检验中多数会需要借用程序执行来完成。 程序设计与算法语言实验课的目的就是通过实验 培养并提高学生编写程序的能力和计算机应用的能力。实验通过一些实例的编程学习,培养学生面向问题时建立逻辑清晰的思想,练习应用 c 语言进行程序编写并执行,对问题中的各有关量进行分析,给出结果。二、实验环境计算机机房三、实验时数16 学时实验 1 选择结构程序设计实验目标:1、熟悉并掌握 vc+6.0 开发环境;2、了解数据类型在程序设计语言中的意义;3、掌握 C 语言程序的顺序结构,并会编写、

2、运行;4、理解并掌握 if 语句和 switch 语句的执行流程;5、理解并掌握嵌套的选择结构的执行流程。实验内容:题目 1:从键盘输入一个任意大小的实数x,如果x满足条件-29.5x30 ,则输出x及其绝对值,否则只输出 x。题目 2:从键盘输入一个字符,如是小写字母,则输出small” ,如是大写字母则输出big”,如是数字则输出number”,其他字符则输出other”。题目 3: 设计一个四则运算的计算器。如输入: 1+2则输出: 1+2=3实验2循环结构程序设计实验目标:1掌握实现循环结构的三种流程控制语句while、dowhile、for的用法和执行过程;2、熟练掌握用循环方法实现

3、几种常用算法。实验内容:题目1:找出100999之间(含100和999)所有整数中各位上数字之和为x( x为一正整数)的整数,然后输出。例如:当x的值为5时,100999之间各位上数字之和为 5的整数有:104、113、122、131、 140、203、212、221、230、302、311、320、401、410、500,共 15 个;当 x 的值为 27 时, 100999之间各位上数字之和为 27的整数有:999,只有1个。题目2:写出计算方程f(x)=(x+3) 2-7在(-3,0)之间的实数根的程序。题目3:给定程序的功能是:计算下式前n项的和。1x3 3x5 5x7(2x-T)xp

4、x+l)s + 十+- + i -,护 63(23尸例如,n的值为10时,得到结果:9.612558。请在程序的下划线处填入正确的内容并把下 划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#i nclude Voidmai n() int n=-1;int i;double s, t;while( n0): );scan f(%d, &n);*fo un d*s=【1】*fo un d*for(i=1; i=【2 】;i+) t=2.0*i;*fo un d*s=s+(2.0*i-1)*(2.0*i+1)/【3 】prin tf(nThe result is: %

5、fn ,s);实验 3 数组实验目标:1、掌握一维数组的定义、赋值和输入输出的方法;2、掌握字符数组的使用;3、掌握与数组有关的典型算法。实验内容:题目1:输出以下的杨辉三角形1111211331146411510105 1要求:输出 10 行题目 2:已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组 中。如:原数组元素为: 1 2 4 6 7 9 ,则输入 5 后 插入到数组中形成新的序列: 1 2 4 5 6 7 9 要求:写出算法思路分析的过程。题目 3:折半查找。在有 N 个元素的数组(元素由小到大的顺序存放)中,查找 x 是否存在 于该数组,如存在输出 x 在

6、数组中的下标,如不存在则输出“ non-existent !” 折半查找的基本思想说明:设查找数据的范围下限为 low=0 ,上限为 hig=N-1 ,求中点 mid=( low+hig )/2,用 x 与中点 元素(即 mid 作为下标的元素)比较,若相等即找到,停止查找;否则,若 x 大于中点元 素,替换下限 low=mid+1 ,到下半段继续查找;若 x 小于中点元素,替换上限 hig=mid-1 , 到上半段继续查找;具体事例如下图: 情况 1) 设要查找的数据 x=5 ,则有:1357 91113lowmidhig由于mid为下标的值是7 ,大于x,则修改上限hig135791113

7、Lowmidhig由于mid为下标的值是3,小于x,则修改下限low135791113higLowmid由于mid为下标的值是5,等于x,则找到数据,结束查找。情况 2) 设要查找的数据 x=8 ,则有:135791113lowmidhig由于 mid 为下标的值是7 ,小于 x ,则修改下限 low13 579 1113low midhig由于mid 为下标的值是11 ,大于 x,则修改上限 hig13 579 1113higlowmid由于mid 为下标的值是9,大于 x,则修改上限 hig13 579 1113higlow由于上限 hig 小于下限low ,则表示没有找到,结束查找。实验

8、4函数实验目标:1掌握函数的定义和调用方法;2、掌握函数实参与形参的对应关系;3、理解和掌握数组作为函数参数的用法。实验内容:题目1:执行以下程序,写出执行结果,并分析。ttincludesp(int x,int y)nain() int a,b ;b=9;printf(*函数调用前a-W b-dnBa.b); sp(afb);printfC1 函数调用后a=*d b=%dXnaiBa,b);题目2:填写下述del函数内容,功能是删除整型数组中指定的数。Void del(int b ,int n ,int y)ltdefine N 6Void nainC )int aN=4f8f9,7F0,1

9、fi,x;printf (-请输入要查找并删除的数据汁); scanfCd&x);del(a fNrx);for(i=0;i如:数组中的数为:4、8 9、7、0、1要删除的数为 9 ; 删除后数组中的值为:4、8、7、0、1要求:写出算法思路分析的过程。实验5指针实验目标:1掌握有关指针的概念,会定义和使用指针变量;2、掌握指针和函数的关系;3、掌握指针和数组的关系。实验内容: 题目1:(1)执行下列程序,并分析运行结果void fmi (iiu *九 ini )r WVviM 址:a k=n: =b, b=k; *mniii ()1)=6;Inc戸血:上氏b:心fun ; ppiliitf

10、(a,b);(2)试修改上程序,使得函数 fun能够交换主调函数 main中a, b的值。题目2:给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正 数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有 10 个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000 移动后的输出为:4632 404548306171526请在程序的下划线处填入正确的内容 并把下划线删除,使程序得出正确的结果。注意:不得对源程序增行或删

11、行,也不得更改程序的结构!define N 12血诚玻fmifdoMble牧)屮触I-K 余加诫融(v.yN尸0汁如血=0: iN; i+十)*r或 11/* *fOlUL(V * */+J奸一;疋Barirr; i * i * a- + * + *+foiuid * * * * * * tf(或x _3_) yU+=xU如加);i:N: +H1蕊=yffl;*1 靱 i: “收辿tesAfN;如g=0;乎N;計+”jy=imid0%50; jgum(%4Jf :血;屮 piWlCn)10( y恥注蠻m爭k 威坨;加);+RiiwtffWIte 黄駅山:ii如&0;N:計+) piiiufi

12、*o$.0f题目3:函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,当a= 45, b=12。调用该函数后,c=5241。注意:请勿改动主函数 main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#mclude期加 fun(加 a. 如b, long *c|2*Vbid 脚ft)伽也;卩pjjmtrinpii5b:“);v敛测刼T,&九&b);3 加 eb&w1OUU 11 msult K: %1(111);实验 6 结构体

13、实验目标: 掌握结构体类型变量的定义和使用;通过该实验把 C 语言中的几个主要知识(如:顺序结构、选择结构、循环结构、数组、函 数等)得到综合应用。实验内容:题目:建立一个简单的学生成绩管理系统。具体功能如下: (1)录入学生信息的功能。每个学生的数据包括学号、姓名、四门课的成绩。 (2)打印学生信息的功能。(3)计算学生平均成绩的功能。程序设计与算法语言实验报告专业班级姓名学号实验项目实验一选择结构程序设计实验目的1熟悉if、switch语句形式。2、掌握程序设计的基本方法。3、学会简单的选择结构程序设计方法。实验内容题目1:从键盘输入一个任意大小的实数x,如果x满足条件-29.5x30 ,

14、则输出x及其绝对值,否则只输出X。要求:写出算法思路分析的过程。题目2:从键盘输入一个字符,如是小写字母,则输出small” ,如是大写字母则输出big”,如是数字则输出number”,其他字符则输出other”。题目3:设计一个四则运算的计算器。如输入:1+2则输出:1+2=3题目1 :算法设计分析(用流程图表示算法是怎么实现的。如有多个函数,那么你是怎么组织这些函数的,为什么要这么划分,各个函数之间的调用关系是什么样的)实验测试结果及结果分析(列出几组输入和输出结果,针对这些输入和输出做分析)-U 立dj菠 崖薯香一先 子祖 有有ndjchzt 3x12 祖先为:her.mother so

15、niSndaLighter-in一lawl-H 择立UJ找找 诜建薯香一先 子祖 儿的 右有靑输入雯查找的姓名:sgnl祖先为三 f at he f 点| mo t he r 怡否继续琴是否0Press anp key to continue结果分析题目2:算法设计分析实验测试结果及结果分析题目3:算法设计分析实验测试结果及结果分析实验总结(略)附录实验程序代码(该部分请加注释)/*程序定义部分:*/*主函数部分:调用选择界面函数,再依据用户的选择,调用相应函数,实现相关功能*/void mai n()FNODE *head;int n=0;*另注:1源代码部分请附加适当的注释说明;2、打分的

16、表格请置于实验报告最后一页的底端;3、请遵照本实验范例的文字大小和段落格式排版;4、实验报告双面打印;5、每个实验15分计。序号项目得分总分1实验报告排版(2分)2算法思想分析(3分)3源代码(7分)4实验结果及分析(3分)实验报告雷同者均视为未做。抄袭请慎重!【1-1】#include #include void main()float x,y; /定义浮点数 x,yprintf( 请输入 x:n);/ 屏幕上显示请输入 xy scanf(%f,&x);/ 输入 x y=sqrt(x*x);/ 开平方根if(x-29.5)/ 判断范围 x 是否同时满足大于等于 -29.5 和小于等于 30

17、printf(%f %f,x,y);/ 输出else /不然 printf(%f,x);/ 输出【1-2】#includevoid main()char a;定义字符printf(n 请输入一个字符 :);/换行 +屏幕上输出( XXX ) a=getchar();输入一个字符if(a=0&a=A&a=a&a=z)/ 如果 printf(smalln);Else/不然printf(othern);system(pause);停留在 dos 界面【1-3】#includevoid main()int a,b;定义数字char c;/定义运算符 printf( 请输入数字: n); scanf(%

18、d,&a);/ 输入数字 printf( 请输入运算符: n); scanf( %c,&c);/ 输入运算符printf( 请输入数字: n);scanf(%d,&b);/ 输入数字switch(c)case 42:printf(%d*%d=%d,a,b,a*b);break;/42 的 ASCII 是 *case 43:printf(%d+%d=%d,a,b,a+b);break;/43 的 ASCII 是 +case 45:printf(%d-%d=%d,a,b,a-b);break;/45 的 ASCII 是 -case 47:printf(%d/%d=%d,a,b,a/b);break

19、;/47 的 ASCII 是 /【2-1】#includevoid main()int s,n=100;/*s 是和 sum 的缩写n 的起始值为 100 而且是整数 */printf( 输入你要的三位数的和: n );/RTscanf(%d,&s);/ 输入 swhile(n1000)/ 在 n1000 即小于等于 999 之前一直寻找以下符合条件的数字int a=n%10;/a 个位int b=n/10;/b 十位int c=n/100;/c 百位n+;/i 的自增if(a+b+c=s)/ 如果 abc 加起来符合你输入的三位数之和printf( %d,n);/ 输出所有符合条件的 100

20、-999 的数字system(pause);/dos 黑框停留【2-2】#include#define f(x) (x+3)*(x+3)-7)/ 宏定义void main()float a=-3,b=0,c,eps=1e-5;/a 下界 b 上界 c 是中间变量 eps=1e-5 是区间的极限大小 while (b-a)eps)/ 当上界下界还大于极小的极限时执行下面c=(a+b)/2;/ 对区间区中值if(f(c)=0)/ 如果 c 是函数的根break;/ 跳出循环else/否则if(f(a)*f(c)0) b=c;/ 是否 c 是else a=c;否则c作为新的a也就是缩小下界print

21、f( 实数根 =%fn,c); system(pause);【2-3】#includevoid main()int i,n=-1;/ 定义整型变量 i ndouble s,t;定义双精度浮点小数s twhile(n0):);/ 显示 scanf(%d,&n);/ 输入s=0;/【1】s的初始值for(i=1;i=n; i+)/【 2】 i 从 1 开始 执行次数取决于 nt=2.0*i;/ 分母是奇数(从 1 开始)的二倍 s=s+(2.0*i-1)*(2.0*i+1)/(t*t);/ 【3】累加求和直到循环部分结束 printf(nThe result is: %fn,s);/ 输出【 3-

22、1 】#include#include#define N 11/看到 N 全部换成 11void main()intn=0,aNN,i,j; /定义n行从0开始的杨辉三角,二维数组a1111,i行,j列printf( 请输入杨辉三角的行数: ); scanf(%d,&n);printf(n%d 行杨辉三角为: nn,n);for(i=1;i=n;i+)/ 杨辉三角的两边的数为 1ai1=aii=1;/ 控制二位数组的边和对角线,把边和对角线全赋值成1,循环从 1 开始,ai1为第一个数for(i=3;i=n;i+)for(j=2;j=i-1;j+)/ 控制除了边及对角线的内部的数aij=ai-

23、1j-1+ai-1j;/ 某一个数 =上一排同列的数 +上一排左一列的数,除了边和对角线for(i=1;i=n;i+)for(j=1;j=i;j+)/j=i 控制输出下三角 ,不输出其它的数, printf(%5d,aij);printf(n);/ 当一行输出完以后换行继续下一行的输出 为了数字不堆一起 美观printf(n);/ 美观system(pause);/ 防闪退【3-2】#includemain()int a7=1,2,4,6,7,9,i,j,x;/ 定义一个 7位数组 printf( 现有排列 1 2 4 6 7 9 nn 请输入一个数: nn); scanf(%d,&x);/

24、输入 xfor(i=0;i7;i+)if(xi;j-)aj=aj-1; 由倒二 a6开始往倒一 a7前移,即 a6a7 a5a6aj=x;/ 新的挪出来的空位填入 xprintf(nn 现在的排列是: nn);/ 输出for(i=0;i7;i+)printf( %d,ai);/ 输出重排数组printf(nn);【3-3】#include#define N 7void main() int i,aN=1,3,5,7,9,11,13,k,x,low,high,mid; /low,high 查找数组元素范围的下标 printf(a 数组中的数据如下 :);for(i=0;iN;i+) printf

25、(%4d,ai);printf(n);printf( 输入要查找的数 x:);scanf(%d,&x);low=0;high=6; / 设置 low,high 初始查找范围 while(low=high) / 当有查找范围 ,进入循环 mid=(low+high)/2; / 求 mid ,查找范围的中间元素下标if(x=amid) / 如果中间元素等于被查找数,找到,跳出循环k=mid; break; else if(xamid) /m 比中间元素小 high=mid-1; /m 应该在中间元素的左边,修改查找范围 else low=mid+1; /m 应该在中间元素的右边,修改查找范围if

26、(lowhigh ,已经没有查找范围了【4-1】#includesp(int x,int y)定义一个叫sp的函数(sp前没有,表示缺省int),形参or入口函数为int x,int y int t,i;/t=x;/x 的值赋给 tx=y;/y 的值赋给 xy=t;/t的值赋给y(x的值赋给y)实现对xy的值互换/省略 return 或无任何表达式无返回值mai n()无返回值int a,b;/a=7;/b=9;/printf( 函数调用前 a=%d b=%dn,a,b);/sp(a,b);调用函数printf( 函数调用后 a=%d b=%dn,a,b);/省略 return 或无任何表达式

27、无返回值【4-2】#includevoid del(int b,int n,int y)/ b是数组,n是数组元素总共有几个,假设y是查找并要删的 int i,j,cnt=0;/cnt 是次数for(i=0;in;i+) if(bi=y)/ 当找到第 i 个等于 y 时for(j=i;jn;j+)bj=bj+1;/ 把后面的值赋到 i 的位置#define N 6void main()int aN=4,8,9,7,0,1,i,x;printf( 请输入要查找并删除的数据: );scanf(%d,&x);del(a,N,x);/ 调用函数for(i=0;iN-1;i+)printf(%dt,ai);/ t 能够让间距变大 printf(n);【5-1】void fun(int*a,int*b)/ 实参 ab 作为形参直接改动int k;k=*a;*a=*b;*b=k;/a 指向 k b 指向 a k 指向 b void main()int a=3,b=6;int *x,*y;/ 定义指针 xy printf(be

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论