藏头诗c语言实验报告,c语言程序设计期末实验报告

62e50291a81fc54b507f33cb80033297.gif c语言程序设计期末实验报告

(23页)

a3a330549d241d66e8dd63623e70ba42.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

14.9 积分

实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:实验一顺序结构程序设计一、 实验目的和要求1. 掌握变量定义的方法和基本数据处理;2. 掌握输入输出函数的功能、格式及使用方法,会用顺序结构编写C程序。二、 实验仪器和设备Codeblocks 16. 01;Windows 10.三、 实验内容输入一个两位数,将其个位数与十位数交换形成一个新数,输岀该数。四、 程序清单、程序运行及其分析1?源代码#include#include〈windows. h>int main(){int a, b; int temp;scanf (“%d%cT, &a, &b);printf (,zAftter sorted:a=%d b=%d,z, b, a);system (/zpause/z);return 0;}2. 程序运行S3 C:\UsEr5\zgy\Desktop\H6时文件\2017 12 21 .exe2 3Aftter sorted:a=3 b=2请按任意键继续???3. 程序分析① 每一个语句结朿后都要用结束语句;② 在输入函数中,变量前必须加取址符“&”,因为内存处理数据是按照地址读取 变量的;③ 输出(入)函数printf (scanf)中内的内容会按照格式化输出,主要 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师: 起提示作用;五、实验体会通过本次实验课,我人致了解了顺序程序设计的总体思路,对于基本数据类型以 及变量的定义有了初步认识,同时掌握了最基本的C程序设计,这也将为我以后 设计更复杂的程序奠定基础。实验二条件选择程序设计一、实验目的和要求1. 熟练掌握if、else if> if else if语句,理清if语句的多重嵌套关系,能够利用if条件语句实现分支选择结构;2. 熟练掌握switch语句的用法,利用switch实现分支选择结构;3. 综合上述两种语句,能够根据不同的算法选择恰当的语句。二、 实验仪器和设备Codeblocks 16. 01;Windows 10;三、 实验内容1?计算分段函数(判断x是否小于0):输入x,计算并输出下列分段函数f(x) 的值。试编写相应程序。r V7f (x) =. x?0X +2x+l x<02. 输入10个字符,统计字符,包括空格或回车、数字字符和其他字符。试编写 相应程序。四、 程序清单、程序运行及分析1. 源程序©#include#include#includeint niQin() 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:double x, y;printf ("input x :; scanf (〃%lf〃,&x);if(x<0)y=pow(x, 5)+2*x+1/x;else if(x>=0) y=sqrt (x);printfff(x)= %lf〃,y); system("pause");rcturn 0;}②#include#includeint main(){int blank二0,digit二0, other=0;int i; char ch;printf (,zEnter 10 characters "); for(i=l;i<=10;i++){ ch=gctchar (); switch(ch)case■?case'\n‘:blank++;break;case'O':caseT':case ' 2’ : case '3':case'4':case'5':case,6’ : case,T :case'8':case'9':digit++;break;default : other++;break;}}printf (,zblank=%d digit=%d othcr=%d,z, blank, digit, other); system("pause");return 0;}2. 程序运行input x : 3f(x)二1. 732051请按任意键继续???Enter 10 characters 154jih o blank=3 digit=3 other=4it按任意铁 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:3. 程序分析① 程序一是最基本的条件分支结构,if和else if都可以实现对定义变量的条 件判断,其基木框架为if (条件式){语句} else if {语句}以及其嵌套多重结构;② 程序二是对字符数量的统计,其基本框架为switch(变量){case xx :表达 式},若出现相同的XX,则可以合并,最后只有一个表达式;注意:每一个(case XX:表达式;)结束后,一定耍加上break终止循坏;若caes中没有所输入的值, 则可以用default结束,根据需要配上相应的语句。五、实验体会条件选择在顺序结构上加上了不同条件下所输出的函数值,更加贴合实际需求, 使C语言的结构更灵活,但它的结构依然建立在顺序结构的基础上。实验三循环程序设计一、 实验目的和要求1. 熟悉掌握wh订e语句、do wh订e语句以及for循环语句的运用;2. 进一步学会调适程序。二、 实验仪器和设备Codeblocks 16.01;Windows 10三、 实验内容1. 从键盘中读入一个整数,统计该数的位数;2. 计算1! +2! +3! +???+n!四、 程序清单、程序运行及分析1 ?源程序①#include#includcint main(){int number, count二0;printf(〃Enter an integer “);seanf("%d〃, &number);if(number<0) number=-number; 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:do {number=number/10;count++;} while(number!二0); printf (,ZT t contains %d dig its ,z, count);system("pause");return 0;}②#include#includeint main(){int n, i;double item二1, sum二0; printf(〃Enter n “); scanf (〃%d", &n);for(i=l;i<=n;i++){item二item*i;sum=sum+item;}printf (,zl! + + n!= %c,z, sum);system(z,pausez,);return 0;}2. 程序运行”nte:r an integer 19564 It cont ains 5 dig its 请#Enter n 1001!+ + n!= 9. 426900e+1573. 程序分析①对于程序一,采用的是do { }wh订e ()循环,其特点是先执行后判断,在本 题屮使用do while结构为最适,如果先判断再执行的话,就要考虑number=0 的情况;②对于程序二,首先要注意的是在定义变量时要用double型求和,在 for循环中先执行第一条语句代入表达式后,再执行第三条语句,最后执行第二 条判断条件是否成立,如不成立,则跳出循环;其中item=item*i就体现了迭代 的思想,同时要注意sum要初始化为0o五、实验体会 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师: 很显然,循环语句能够解决许多具有规律性变化的复杂计算,通过计算机反复计 算,求岀最终结果,更体现了算法相较于人工它的优越性。实验四数组程序设计一、 实验目的1. 掌握一维数组、二维数组的定义、赋值及使用方法;2. 掌握字符数组的定义和引用,常用字符串处理函数;3. 掌握与数组有关的常用算法(特别是排序算法)。二、 实验设备Codeblocks 16. 01;Windows 10。三、 实验内容1. 采用冒泡排序法或者选择排序法对输入的n个数进行由小到大的排序;2. 分类统计字符个数:输入一行字符,统计出其中的英文字母、空格、数字和 其他字符的个数,试编写相应程序;3. 定义一个3X2的二维数组a,数组元素的值由下式给出,按照矩阵的形式输岀肌 a[i][j]=i+j (0WiW2, OWjWl)四、 程序清单、程序运行及分析1 ?源程序① #include#includcint main(){int a[100] ; int i, k, j,n, x;int temp;printf ("Enter n二〃);scanf ("%d〃,&n);prin tf("E nter a[%d]=/z, n);for(i=0;ia[j+l]){ temp二a[j];a[j]=a[j+l]; a[j+l]=temp;}}printf (,zAfter sorted a[%d]二",n);for(x=0;x〈n;x++)printf (z,%3dz,, a[x]);system(,zpause,z);return 0;}②#include#include®indows? h>int main(){int count二0,counta=0, countb=0, countc=0, i=0;char str[20]; printf("Entcr a string ”);while((str[i] =getchar ()) !=,\n,)i++;str[i]=,\0';for(i二0;str[i]!二'\0,;i++){if (str [i] >=,O' &&str [i] <=,9?)count++;else if (str[i] >=,A' &&str [i]〈二'Z')counta++;else if (st讥i]>=,a &&str[i]〈二'z )countb++;else if (str [i]==,')countc++;}printf (〃cnglish=%d\nkonggc=%d\nshuzi二%d\nothcrcharacters=%dz,, counta+countb, countc, count, i-counta-countb-countc-coun 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:t);system("pause"); return 0;}③ #include#include〈windows? h>int main(){int i, j ; int a[3] [2]; for(i=0;i<3;i++)for(j=0;j<2;j++) a[i][j]二 i+j;for(i=0;i<3;i++)for (j=0;j<2;j++) printf C,%4d,/, a[i] [j]);}printf (,,\n,/);}system("pause");return 0;程序②}程序①程序③1 2 Ouo 1 22. 程序运行Entei? a stTing jissh oo4sc p english=10kongge=5shuzi = lother characters=0请按任意键继续.3. 程序分析①冒泡法是将相邻的两个数之间进行比较然后进行交换或者不交换,将最值逐渐 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师: 向后排,最终按照大小顺序排出所有数。在冒泡排序算法中,以上述代码为例, 总共要进行k-1轮比较,每一轮比较中乂会进行n-k此两两比较,最终排出数字。 要注意的是,在进行数字交换时,需要定义temp作为临时参数,否则会导致交 换后两者相同(覆盖问题);②统计字符个数:是将各个字符依次按照顺序存储 在数组str[i] (i从0开始)中,其屮,\(T是结束符,占用字节,通过条件选 择,不同的字符统计到不同的变量中。③程序三是一个二维数组,在a[i][j]中, i可以看成矩阵中的行数,j可以看成矩阵中的列数,i和j均从0开始,此程 序是先存储,后输出,先存行数,再存列数。五、实验体会数组可以将数据按照一定顺序在内存中按序存放,按序输出,它也是最基本的构 造类型,用数组名和下标可以唯一地确定数组元素,这样便使得同一类别的元素 能够归到一个类别中并且顺序存放。实验五函数一、实验目的1. 掌握函数的定义、调用,参数说明及返冋值;2. 掌握实参与形参的对应关系,以及参数Z间的“值传递”方式;3. 掌握函数的嵌套调用及递归调用的设计方法;4. 在编程中加深理解函数调用的程序设计思想。二、实验设备Codcblocks 16.01;Windows 10。三、 实验内容1. 输入圆柱的高和半径,求圆柱体积volume= n Xr2Xho要求定义和调用函数 cyl inder (r, h)计算圆柱体的体积。2. 使用递归定义编写实现阶乘函数。四、 程序清单、程序运行及分析1 ?源程序①#include#includcdouble cyl inder (double h,double r);实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:int main(){double volume, height, radius;printf(^Enter height and radius “); scanf (z,%lf %lf", &height, &radius); volume=cylinder(height, radius); printf (,zvolume is %. 31f/z, volume); system("pause");return 0;}double cyl inder (double h,double r){double result;result=3. 1415926*r*r*h;rcturn result;}② #include#includeint main(){int fac (int n);int n,result;printf(〃Enter n “);scanf (〃%d", &n); rcsult=fac (n);printf (“%d!=%cT, n, result); system ("pause");return 0;}int fac (int n){int f;辻(n〈0) printf (,zData is error! ! !,z); else if(n二二01|n二二1) f二1;else f二n*fac(n~l);return (f);实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:耳ntet n 1010!二362茨00请按任意键继续???2. 程序运行Enter height and radius 10 3 volume is 282. 743请按任意键继续???3. 结果分析①程序一包含了函数的声明(定义)、函数的调用、参数的传递以及函数结果返 回(return ***),首先要进行函数声明(注意加号),括号()里面的是 形参,在被调用时会被函数体括号O里的具体值代入,最后用return将结果 返回到volume, volume就被赋予了具体值,参与计算;②递归定义,函数的递 归调用是在函数调用中不断地重复调用自身。五、实验体会函数的抽象化可以变成很多问题的模型,将函数以及多垂嵌套函数(打包)存储 起來可以进行反复地调用,使得设计算法时可以大大缩减其复杂程度,递归定义 函数虽然简单,但执行效率不高。充分发挥函数功能,可以使程序容易编写、阅 读、调适和修改。实验六指针实验一、实验目的1. 掌握指针的基木概念和基木用法。包括指针变量的定义、初始化、赋值、指 定内容及基本运算;2. 掌握数组指针以及指针数组的概念;3. 掌握字符串与指针的关系并能够用指针处理字符串问题4. 能够使用指针编写程序。二、实验设备Codcblocks 16.01;Windows 10。三、实验内容1. 利用指针实现数字的“角色互换S2. 输入10个整数作为数组元素,分别使用数组和指针来计算和输岀它们的和。3. 解密藏头诗。所谓藏头诗,就是将一首诗的每一句的第一个字连起來,所组 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师: 成的内容就是该诗的隐含信息。编写程序,输出一首藏头诗的隐含信息。四、程序清单、程序运行及分析1.源程序①#include#i nc1ude void swap (int *px, int *py);int main()int a=l,b=2;int *p沪*pb二&b; swap (pa, pb);printf (,za=%d b=%d〃,a, b);system (z/pausezz);return 0;}void swap (int *px, int *py){int t;t=*px;*px=*py;*py二t;}②#include#includeint main(){int i, a[10], *p二&a;long sum=0;printf ("Enter 10 integers : 〃);for(i=0;i <10;i++) scanf ("%d〃,&a [ i ]);for(p=a;p<=a+9;p++)sum二sum+*p;printf ("calculatded by pointer, sum二%d\n〃,stun); system(〃pause〃);return 0; 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:③ #include#includechar *change(char s[][20]);int main(){int i;char *poem[4] = {〃一叶轻舟向东流,〃,“帆梢轻握杨柳手,〃,“风纤碧波微起 舞 〃4页水任从雅克悠。〃};char mcan[10];for (i=0;i<4;i++){mean[2*i]二*(poem[i]);mean[2*i+l]=*(poem[i]+1);}mean[2*i]=,\0';printf (,z%s\n,z, mean);system("pause");return 0;}2.程序运行a=2 b=lEnter 10 integers : 123456789 10 calculatded by pointer, suitf55 请按任意键继线???3. 程序分析①程序一实现了数字的交换,函数的实参是指针变量g和pb,其值分别是变量 a和b的地址,将实参pa和pb的值传递给形参px和py。这样,px和py中就 分别存放了已和b的地址。由于*px和a代表同一个存储单元,只要在函数屮改 变*卩乂的值,就改变了该存储单元的内容,即达到了交换数据的目的;②程序二 是利用指针计算数组元素之和,P=a (a是数组变量)的意思是指针p指向了 a 的首地址,只要对P进行运算,就实现了对变量a的计算;③程序三中,分别从 指针数组poem指向的四句诗中取出第一个汉字,然后按照顺序存入mean的字符 数组中,尾部添加字符“\0”生成一个字符串,此字符串即为解密内容。由于一 个汉字由两个字符组成,所以在实际操作时是取出字符串的前两个字符,程序中 实验报告实验项目名称:高级语言编程实验 实验学时:3实验地点:B316 批改时间: 批改成绩: 批改教师:*(poem[i])对应第i个字符串的第一个字符,*(pome[i]+l)对应第i个字符串的 第2个字符。五、实验体会指针可以随意申请不连续的数据存储空间,节省内存;指针可以通过地址直接操 作内存,效率很高;指针可以和数组、结构体、函数等结合使用,使得程序更加 灵活。说“指针” C语言的灵魂,通过指针及指针的进阶,有利于对内存有更深 入的了解。 关 键 词: 语言程序设计 期末 实验 报告

524d6daf746efaa52c3c71bbfe7ba172.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值