C语言实验报告.doc

上传人:仙人指路1688 文档编号:2384596 上传时间:2023-02-17 格式:DOC 页数:29 大小:83KB
返回 下载 相关 举报
C语言实验报告.doc_第1页
第1页 / 共29页
C语言实验报告.doc_第2页
第2页 / 共29页
C语言实验报告.doc_第3页
第3页 / 共29页
C语言实验报告.doc_第4页
第4页 / 共29页
C语言实验报告.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《C语言实验报告.doc》由会员分享,可在线阅读,更多相关《C语言实验报告.doc(29页珍藏版)》请在三一办公上搜索。

1、C程序设计实验报告(2007-2008学年第一学期理科类)系: 班级: 学号: 姓名: 信息工程学院200791实验1 C程序的运行环境和运行方法一、实验目的 (1)了解如何编辑、编译、连接和运行一个C程序。 (2)通过运行简单的C程序,初步了解C程序的特点。 二、实验内容和步骤1进入C的工作环境(Turbo C2.0)Windows环境下:找到“TC”文件夹,双击TC.EXE文件。此时屏幕上出现Turbo C的工作环境。(最大化用ALT+Enter组合键)2熟悉Turbo C2.0集成环境 了解和熟悉编辑(Edit)窗口和信息(Message)窗口的作用。按功能键F5,观察它有什么作用,再按

2、一次F5,再观察它有什么作用。按F6,观察它有什么作用;再按一次F6,再观察它有什么作用。F5的作用: F6的作用: 按功能键F10,并按回车键,观察“File”菜单,了解它们的作用和用法。 选择File菜单中的New,在编辑窗口中随意输入几行字符,观察窗口顶部左端line和col后面数字的变化。所有源程序应按章号和题号命名(如文件名T1_1表示第一章第一个实验题),并提到网上,以备后查3输入并运行一个简单的程序 选择File菜单中的New命令,新建新的源程序文件(编辑窗口变成空白)。输入下面的程序。#include void main( ) printf(“This is a C progr

3、am.n”); 选择File菜单中的save保存,输入文件名T1_1(选择好路径),也可按功能键F2进行存盘。 选择compile菜单中的compile命令编译源程序,观察屏幕上显示的编译信息。如果出现“出错信息”,则应找出原因并改正之,再进行编译,最后生成.obj文件,(也可按功能键ALT+F9进行编译) 选择compile菜单中的link命令连接,生成可执行程序文件(.exe文件)。 、步也可通过选择compile菜单中的make命令连接来一次性完成 如果编译无错误,选择run菜单中的run命令运行程序,(也可按Ctrl+F9键使程序运行) 按Alt+F5键,切换到用户屏,观察运行结果。按

4、任意键返回。运行结果: 4输入并编辑一个C程序 再选择FileNew,使编辑窗口变成空白。 输入以下程序。#include void main( ) int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is %dn”,sum);保存源程序文件,输入文件名T1_2。 进行编译、连接,然后运行程序,观察运行结果。运行结果: 6输入并运行一个需要在运行时输入数据的程序 选择File菜单中的New,使编辑窗口变成空白,输入下面的程序。#include void main( ) int a,b,c;printf(input a , b: );scanf(%d,%d ,

5、&a,&b);c=max(a,b);printf(max=%d ,c);int max(int x,int y) int z;if(xy)z=x;else z=y;return(z); /*所有程序全部输入,max部分也是整个C程序的一部分*/按功能键F2进行存盘,输入文件名T1_3。 编译并运行,在运行时从键盘输入整数2和5,然后按回车键,按Alt+F5键,观察运行结果。运行结果: 7运行一个自己编写的程序题目:输入a、b、c三个值,输出其中最大者。 输入自己编写的源程序,以T1_4作为文件名。(可仿照上一题程序)源程序: 运行程序,输入数据,观察结果。运行结果: 用FileNew将编辑窗口

6、清空,再选FileLoad将该文件读入,检查编辑窗口中的内容是否是刚才保存的程序。 选择FileQuit关闭Turbo C,也可用ALT+X关闭。 实验2 数据类型、运算符和表达式一、实验目的(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。(2)掌握不同的类型数据之间赋值的规律。(3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+ +)和自减()运算符的使用。(4)进一步熟悉C程序的编辑、编译、连接和运行的过程。二、实验内容和步骤1输入并运行下面的程序#include void main( ) char cl,c2;cl=a;c

7、2=b;printf(%c%cn,cl,c2);运行此程序。运行结果: 在此题最后增加一个语句:printf(%d%dn,c1,c2);再运行。运行结果: 将第3行改为:int c1,c2;再使之运行。运行结果: 再将第3,4行改为:c1=a; /*不用撇号*/c2=b;再使之运行。分析出错原因 再将第4、5行改为:c1=a; /*用双撇号*/c2= b ;再使之运行,分析其运行结果。分析出错原因 再将第4、5行改为:c1=300; /*用大于255的整数,在char cl,c2;的基础上*/c2=400;再使之运行。运行结果: 2输入并运行教材第3章习题3.6给出的程序#include Vo

8、id main( ) char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a%c b%ctc%ctabcn,c1,c2,c3)printf(tb%c %c,c4,c5);上机前先用人工分析程序,写出应得结果: 上机运行结果: 3输入并运行下面的程序#include void main ( )int a,b;unsigned c,d;long f;a=100;b=100;c=32769;f= 65580;printf(“%d,%dn”,a,b);c=a;d=b;printf(“%u,%un”,c,d);a=f;c=f;printf(“%d,%u,%un”,a ,c

9、,f); 请对照程序和运行结果分析 将一个负整数赋给一个无符号的变量,会得到什么结果。并分析原因。结果: 原因: 将一个大于32767的长整数赋给整型变量,会得到什么结果。并分析原因。结果: 原因: 将一个长整数赋给无符号变量,会得到什么果.。并分析原因。结果: 原因: 4输入习题3.10#include Void main ( ) int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%d,i,j,m,n); 运行程序,注意i、j、m、n各变量的值。运行结果: 将第4、5行改为:m= i +;n= + j;再运行。运行结果: 5编程序并上机运行要将“C

10、hina”译成码,译码规律是:用原来字母后面的第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为C、h、i、n、a,经过运算,使c1、c2、c3、c4、c5分别变为G、1、m、r、e,并输出。 源程序:(以T2_5为文件名) 改变c1、c2、c3、c4、c5的初值为:T、o、d、a、y,修改程序并运行。运行结果为: 实验3 最简单的C程序设计一、实验目的 (1)掌握C语言中使用最多的一种语句赋值语句的使用方法。 (2)掌握各种类型数据的输入输出

11、的方法,能正确使用各种格式转换符。 二、实验内容和步骤1掌握各种格式转换符的正确使用方法 输入程序#include Void main ( ) int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned p,q;a=61;b=62;c1=a;c2=b;d=3.56; e=6.87;f=3157.890121; g=0.123456789;m=50000; n=60000;p=32768; q=40000;printf(a=%d,b=%dnc1=%c,c2=%cnd=%6.2f,e=%6.2fn,a,b,c1,c2,d,e);printf(

12、f=%15.6f,g=%15.12fnm=%1d,n=%1dnp=%u,q=%un,f,g,m,n,p,q); 运行此程序写出结果: 在此基础上,修改程序的第813行:a=61;b=62;c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=60000;运行程序,写出结果: 将printf语句改为:printf(a=%d,b=%dnc1=%c,c2=%cnd=%15.6f,e=%15.12fn,a,b,c1,c2,d,e);printf(f=%f,g=%fnm=%d,n=%dnp=%d,q=%dn,f,g,m,n,p,q

13、);运行程序,写出结果: 2编写程序设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据(r,h),输出计算结果。输出时要有文字说明,取小数点后两位数字。源程序:(以T3_2作为文件名。)运行结果:3编程序,输入一个华氏温度,要求输出摄氏温度。公式为输出时要有文字说明,取2位小数。(注意:在什么情况下为实型除法,这里不是指整型除法哦!)源程序:(以T3_3作为文件名。)分别用90,100,32做为测试数据,写出运行结果:实验4 逻辑结构程序设计一、实验目的(1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。(2)学会正确使用

14、逻辑运算符和逻辑表达式。(3)熟练掌握if语句和switch语句。(4)结合程序掌握一些简单的算法。(5)学习调试程序。二、实验内容本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。1有一函数:要求用scanf函数输入x的值,求y值并用printf函数输出y。源程序:(以T4_1作为文件名。)运行程序,分别用-4,6,28做为测试数据,写出运行结果:输入:-4输出: 输入 :6输出: 输入:28输出: 2给一个不多于5位的正整数,要求:求出它是几位数;分别打印出每一位数字;按逆序打印出各位数字,例如原数为321,应输出123。源程序:(以T4_2作为文件名。)运行程序,分别

15、用2,18,135,3467,45796做为测试数据,写出运行结果:输入:2输出: 输入:18输出: 输入:135输出: 输入:3467输出: 输入:45769输出: 除此之外,程序还应当对不合法的输入作必要的处理。例如:输入负数;输入的数超过5位。程序修改部分:输入:-3输出: 输入:123456输出: 3输入一个日期(含年、月、日),编程序输出该日期是该年度中的第几天。要求:输入格式为年/月/日;程序应当对不合法的输入作必要的处理。如:月份超过12,日期超过31年月日为负数。源程序:(以T4_3作为文件名。)运行程序,分别用以下测试数据测试,写出运行结果:输入:2002/3/23输出: 输

16、入:2004/15/34输出: 输入:-1004/4/-5输出: 4下列程序实现从键盘接收3个数,输出最大数和最小数源程序:(以T4_4作为文件名)实验5 循环控制一、实验目的熟悉掌握用while语句,do-while语句和for语句实现循环的方法。掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。进一步学习调试程序。二、实验内容编程序并上机调试运行。1输入两个正整数m和n,求它们的最大公约数和最小公倍数。在运行时,输入的值mn,观察结果是否正确。重新运行,输入时使mn,观察结果是否正确。源程序:(以T5_1作为文件名。)运行程序,分别用8和12、22和10做为测试数据,写

17、出运行结果:2猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。源程序:(以T5_2作为文件名。)运行程序,写出运行结果: 3编程计算1+(1+2)+(1+2+3)+(1+2+3+4)+.+(1+2+3+.+n)的值。(本题中的n从键盘输入,且假设在20以内)源程序:(以T5_3作为文件名。)4试编程:找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例52=25,5在25的右边,5是同构数

18、;252=625,25在625的右边,25是同构数。源程序:(以T5_4作为文件名。)运行程序,写出运行结果: 4 编程求100300之间的全部素数的和源程序:(以T5_5作为文件名。)运行程序,写出运行结果: 5 运行程序,写出运行结果: 课后思考题(以前考试题):1 利用下面公式求s的值(求20项之和)s=1/(1*2*3)-1/(2*3*4)+1/(3*4*5)-1/(4*5*6)+.+1/(19*20*21)-1/(20*21*22)2 一个素数加上1000以后是43的倍数,求满足这个条件的最小素数。3 有2个小于40的正整数a和b,a的平方与b的和是1053,b的平方与a的和是873

19、,请编程求满足条件的a和b的值。(提示:满足条件的a,b的值唯一)4 一个自然数除以2余1,除以3余2,除以4余3,除以5余4,除以7余5,求满足这个条件的最小的自然数?5 求所有的水仙花数之和。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个水仙花数,因为:153=1*1*1+5*5*5+3*3*3。6 分别计算500到1300之间所有既能被7整除又能被13整除的奇数和偶数之和。7 统计用0-9之间不同的3个数构成一个三位数有多少种方法实验6 数组 一、实验目的 (1)掌握一维数组和二维数组的定义、赋值和输入输出的方法;(2)掌握字符数组和字符串函数的使用;(3)

20、掌握与数组有关的算法(特别是排序算法)。二、.实验内容编程序并上机调试运行。1 已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中,要插入的数用scanf函数输入。源程序:(以T6_1作为文件名。)运行程序,测试数据为:有序数组 3,5,6,17,23,41,45,54,68,90,102,123,156,178,195输入:2结果: 输入100结果: 2 找出一个二维数组的“鞍点”的值及位置,即该位置上的元素在该行上最大,在该列上最小。若没有鞍点,则输出“无鞍点”。源程序:(以T6_2作为文件名。)运行程序,测试数据为:二维数组有鞍点9 80 205 4090 60

21、96 1210 3 101 89结果: 二维数组没有鞍点9 80 205 4090 60 196 1210 3 101 8945 54 156 7结果: 3 判断输入的字符串是否回文(即顺读和倒读都一样,例如:ABCBA,字符串首部和尾部的空格不参与比较),是输出“yes”,否则输出“no”。源程序:(以T6_3作为文件名。) 输入ABCDCBA,结果是: 输入ABCDEFG,结果是: 4删除字符串s(从键盘输入)中的所有数字字符,然后输出源程序:(以T6_4作为文件名。)运行程序,测试字符串为:“ab1,C2D34,E”结果: 5 输入一串字符,以?结束,统计各字母出现的次数,并按字母出现的

22、多少输出,不出现的字母不输出。例:输入 5B3A+4-HDEH5DH? 输出 A 1 B 1 D 2E 1 H 3源程序:(以T6_5作为文件名。)运行程序,测试数据为:5BBB3AD+4366TM-HDEH5DH?结果: 课后思考题(以前考试题):1 用冒泡法对输入的10个整数进行排序2 用选择法对输入的10个整数进行排序3 从键盘输入10个整数存入数组a中,再将数组中的元素逆序存放后输出。4 有15个有序数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。要找的数用scanf函数输入。5 分别将有序数组a和b中的数归并到c数

23、组中(C数组中仍然有序)。6 编程输出以下的杨辉三角形(输出前7行)。实验7 函数一、实验目的(1)掌握定义函数的方法;(2)掌握函数实参与形参的对应关系以及“值传递”的方式;(3)掌握函数的嵌套调用和递归调用的方法;(4)掌握全局变量和局部变量、动套变量、静态变量的概念和使用方法。(5)学习对多文件程序的编译和运行。二、实验内容编程序并上机调试运行。1求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一

24、起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。源程序:(以T7_1作为文件名。)#include gcd(int a,int b) gxd(int a, int b,int g) void main ( ) int x,y;int i,j; scanf(%d%d,&x,&y); i=gcd(x,y); j=gxd(x,y,i); ptintf(%d and %d gcd is %d,gxd is %dn,x,y,i,j); 运行程序,测试数据为: 35 215结果: 用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最大公约数

25、和最小公倍数都设为全局变量,在主函数中输出它们的值。修改程序如下:(以T7_1_1作为文件名。) 2递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数。源程序:(以T7_2作为文件名。)运行程序,测试数据分别为:1234结果为: 测试数据分别为:783结果为: 测试数据分别为:46778结果为: 3写一函数,输入一个两位的十六进制数,输出相应的十进制数。子函数:(以T7_3作为文件名。)void main ( ) char hx2;int d;printf(please input a num(hex): ) scanf(%c%c,&hx

26、0,&hx1); d=change(hx); printf(this num is: ,d);运行程序,测试数据分别为:AB结果为: 4验证歌德巴赫猜想(任何充分大的偶数都可以由两个素数之和表示)。用一个函数进行判定素数,再用此函数将一个偶数用两个素数之和表示,主函数中输出4100之间的所有偶数用两个素数之和表示:(以T7_4作为文件名。)子函数1:子函数2:main( ) int i;for(i=4;i=100;i=i+2) print(i); /*将i用两个素数之和表示*/ printf( n ); 运行程序结果为:课后思考题(以前考试题):1 用递归的方法求n!。2 自己设计一mystr

27、cat()函数,实现将字符串b连接到字符串a的后面。3 输出100200之间的全部素数的和(用一函数来判断一个数是否为素数)4 用递归的方法计算F(n)(n给定,F(n)函数定义如下:F(1)=1, F(2)=1, F(n)=F(n-1)+F(n-2))。实验8 指针一、实验目的(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能正确使用数组的指针和指向数组的指针变量;(3)能正确使用字符串的指针和指向字符串的指针变量;(4)能正确使用指向函数的指针变量;(5)了解指向指针的指针的概念及其使用方法。二、实验内容1写结果并分析原因:swap1(int x,int y) int t;

28、 t=x; x=y; y=t;swap2(int *x,int *y) int t; t=*x; *x=*y; *y=t;swap3(int *x,int *y) int a, int *t=&a; t=x; x=y; y=t;main() int a=10,b=30; int *p1=&a, *p2=&b; swap1(a,b); printf(%d,%dn,a,b); 运行结果为: 将 swap1(a,b)改为 swap2(a,b),运行结果为: 将 swap1(a,b)改为 swap2(a,b),运行结果为: 分析原因: 2.将一个33的矩阵转置,用一函数实现之。要求: 在主函数中用sc

29、anf函数输入矩阵元素, 用数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。源程序代码: (以T8_2作为文件名。)运行程序,测试数据为1 3 57 9 1113 15 19结果:3.下面findmax函数将计算数组中的最大元素及其下标和地址值,请编写findmax函数(以T8_3作为文件名。) #include int *findmax( ) main( ) int a10=12,23,4,45,413,65,34,76,23,11,k,*add; add=findmax(a, 10, &k); printf( %d,%d,%dn ,ak,k,*

30、add); 运行结果为: _课后思考题(以下各题均用指针实现):1. 不使用strcpy()函数,将字符串a复制到字符串b中去。2. 输入字符串,输出该字符串中ASCII码值最大和最小的字符。实验9 结构体和共用体一、实验目的1掌握结构体类型变量的定义和使用;2掌握结构体类型数组的概念和使用;3掌握共用体的概念与使用。二、实验内容1有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。要求用input函数输入10个学生数据;用average函数求总平均分;用max函数找出

31、最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。源程序: (以T9_2作为文件名。)2输入和运行以下程序#include union data int i2;float a;long b;char c4;u;main( ) scanf(%d,%d,&u.i0,&u.i1);printf(i0=%d,i1=%da=%fd=%1dc0=%c,c1=%c,c2=%c,c3=%c, u.i0,u.i1,u.a,u.b,u.c0,u.c1,u.c2,u.c3;输入两个整数10000、20000给u.i0和u.i1,分析运行结果。 然后将scanf(%1d,&u.b);输入60000给b,分析运行结果。 实验10 文件 一、实验目的 (1)掌握文件以及缓冲文件系统、文件指针的概念;(2)学会使用文件打开、关闭、读、写等文件操作函数;(3)学会用缓冲文件系统对文件进行简单的操作。二、实验内容1 编写一程序,实现类似DOS命令COPY的功能(磁盘文件复制)。源程序: (以T10_2作为文件名)2有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。设5名学生的学号、姓名和3门课成绩如下:99101 Wang 89,98,67.599103 Li 60,80,9099106 Fu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号