《语言实验报告》word版_第1页
《语言实验报告》word版_第2页
《语言实验报告》word版_第3页
《语言实验报告》word版_第4页
《语言实验报告》word版_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

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 <stdio.h>void main( ) printf(“Th

3、is is a C program.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 <stdio.h>void main( ) int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is %dn”,sum);保存源程序文件,输入文件名T1_2。 进行编译、连接,然后运行程序,观察运行结果。运行结果: 6输入并运行一个需要在运行时输入数据的程序 选择File菜单中的New,使编辑窗口变成空白,输入下面的程序。#include <stdio.h>void main( )

5、int a,b,c;printf("input a , b: ");scanf("%d,%d ",&a,&b);c=max(a,b);printf("max=%d ",c);int max(int x,int y) int z;if(x>y)z=x;else z=y;return(z); /*所有程序全部输入,max部分也是整个C程序的一部分*/按功能键F2进行存盘,输入文件名T1_3。 编译并运行,在运行时从键盘输入整数2和5,然后按回车键,按Alt+F5键,观察运行结果。运行结果: 7运行一个自己编写的程序题

6、目:输入a、b、c三个值,输出其中最大者。 输入自己编写的源程序,以T1_4作为文件名。(可仿照上一题程序)源程序: 运行程序,输入数据,观察结果。运行结果: 用FileNew将编辑窗口清空,再选FileLoad将该文件读入,检查编辑窗口中的内容是否是刚才保存的程序。 选择FileQuit关闭Turbo C,也可用ALT+X关闭。 实验2 数据类型、运算符和表达式一、实验目的(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。(2)掌握不同的类型数据之间赋值的规律。(3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+ +)和自减()

7、运算符的使用。(4)进一步熟悉C程序的编辑、编译、连接和运行的过程。二、实验内容和步骤1输入并运行下面的程序#include <stdio.h>void main( ) char cl,c2;cl='a';c2='b'printf("%c%cn",cl,c2);运行此程序。运行结果: 在此题最后增加一个语句:printf("%d%dn",c1,c2);再运行。运行结果: 将第3行改为:int c1,c2;再使之运行。运行结果: 再将第3,4行改为:c1=a; /*不用撇号*/c2=b;再使之运行。分析出错原因

8、再将第4、5行改为:c1="a" /*用双撇号*/c2= "b "再使之运行,分析其运行结果。分析出错原因 再将第4、5行改为:c1=300; /*用大于255的整数,在char cl,c2;的基础上*/c2=400;再使之运行。运行结果: 2输入并运行教材第3章习题3.6给出的程序#include <stdio.h>Void main( ) char c1='a',c2='b',c3='c',c4='101',c5='116'printf("a%c b

9、%ctc%ctabcn",c1,c2,c3)printf("tb%c %c",c4,c5);上机前先用人工分析程序,写出应得结果: 上机运行结果: 3输入并运行下面的程序#include <stdio.h>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 ,f); 请对照程序和运行结果分析 将一个负整数

10、赋给一个无符号的变量,会得到什么结果。并分析原因。结果: 原因: 将一个大于32767的长整数赋给整型变量,会得到什么结果。并分析原因。结果: 原因: 将一个长整数赋给无符号变量,会得到什么果.。并分析原因。结果: 原因: 4输入习题3.10#include <stdio.h>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编程序并上机运行要

11、将“China”译成码,译码规律是:用原来字母后面的第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、

12、c3、c4、c5的初值为:'T'、'o'、'd'、'a'、'y',修改程序并运行。运行结果为: 实验3 最简单的C程序设计一、实验目的 (1)掌握C语言中使用最多的一种语句赋值语句的使用方法。 (2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 二、实验内容和步骤1掌握各种格式转换符的正确使用方法 输入程序#include <stdio.h>Void main ( ) int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned p,

13、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("f=%15.6f,g=%15.12fnm=%1d,n=%1dnp=%u,q=%un",f,g,m,n,p,q); 运行此程序写出结果: 在此基础上,修改程序的第813行:a=61;b

14、=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);运行程序,写出结果: 2编写程序设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf

15、输入数据(r,h),输出计算结果。输出时要有文字说明,取小数点后两位数字。源程序:(以T3_2作为文件名。)运行结果:3编程序,输入一个华氏温度,要求输出摄氏温度。公式为输出时要有文字说明,取2位小数。(注意:在什么情况下为实型除法,这里不是指整型除法哦!)源程序:(以T3_3作为文件名。)分别用90,100,32做为测试数据,写出运行结果:实验4 逻辑结构程序设计一、实验目的(1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。(2)学会正确使用逻辑运算符和逻辑表达式。(3)熟练掌握if语句和switch语句。(4)结合程序掌握一些简单的算法。(5)学习调试程序。二、实验内容

16、本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。1有一函数:要求用scanf函数输入x的值,求y值并用printf函数输出y。源程序:(以T4_1作为文件名。)运行程序,分别用-4,6,28做为测试数据,写出运行结果:输入:-4输出: 输入 :6输出: 输入:28输出: 2给一个不多于5位的正整数,要求:求出它是几位数;分别打印出每一位数字;按逆序打印出各位数字,例如原数为321,应输出123。源程序:(以T4_2作为文件名。)运行程序,分别用2,18,135,3467,45796做为测试数据,写出运行结果:输入:2输出: 输入:18输出: 输入:135输出: 输入:34

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

18、盘接收3个数,输出最大数和最小数源程序:(以T4_4作为文件名)实验5 循环控制一、实验目的熟悉掌握用while语句,do-while语句和for语句实现循环的方法。掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。进一步学习调试程序。二、实验内容编程序并上机调试运行。1输入两个正整数m和n,求它们的最大公约数和最小公倍数。在运行时,输入的值m>n,观察结果是否正确。重新运行,输入时使m<n,观察结果是否正确。源程序:(以T5_1作为文件名。)运行程序,分别用8和12、22和10做为测试数据,写出运行结果:2猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,

19、还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第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是同构数;252=625,25在625的右边,25是同构数。源程序:(以T5

20、_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,请编程求满足条件的a和b的值。(提示:满足条件的a,b的值唯一)4

21、 一个自然数除以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)掌握字符数组和字符串函数的使用;(

22、3)掌握与数组有关的算法(特别是排序算法)。二、.实验内容编程序并上机调试运行。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 6

23、0 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 输入一串字符,以?结束,统计各字

24、母出现的次数,并按字母出现的多少输出,不出现的字母不输出。例:输入 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 分别将有

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

26、回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。源程序:(以T7_1作为文件名。)#include <stdio.h>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); 运行程序,测

27、试数据为: 35 215结果: 用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输出它们的值。修改程序如下:(以T7_1_1作为文件名。) 2递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数。源程序:(以T7_2作为文件名。)运行程序,测试数据分别为:1234结果为: 测试数据分别为:783结果为: 测试数据分别为:46778结果为: 3写一函数,输入一个两位的十六进制数,输出相应的十进制数。子函数:(以T7_3作为文件名。)void main ( ) ch

28、ar hx2;int d;printf("please input a num(hex): ") scanf("%c%c",&hx0,&hx1); d=change(hx); printf("this num is: ",d);运行程序,测试数据分别为:AB结果为: 4验证歌德巴赫猜想(任何充分大的偶数都可以由两个素数之和表示)。用一个函数进行判定素数,再用此函数将一个偶数用两个素数之和表示,主函数中输出4100之间的所有偶数用两个素数之和表示:(以T7_4作为文件名。)子函数1:子函数2:main( ) int i;

29、for(i=4;i<=100;i=i+2) print(i); /*将i用两个素数之和表示*/ printf(" n "); 运行程序结果为:课后思考题(以前考试题):1 用递归的方法求n!。2 自己设计一mystrcat()函数,实现将字符串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)能正确使用数组

30、的指针和指向数组的指针变量;(3)能正确使用字符串的指针和指向字符串的指针变量;(4)能正确使用指向函数的指针变量;(5)了解指向指针的指针的概念及其使用方法。二、实验内容1写结果并分析原因:swap1(int x,int y) int t; 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);

31、 printf("%d,%dn",a,b); 运行结果为: 将 swap1(a,b)改为 swap2(a,b),运行结果为: 将 swap1(a,b)改为 swap2(a,b),运行结果为: 分析原因: 2.将一个3×3的矩阵转置,用一函数实现之。要求: 在主函数中用scanf函数输入矩阵元素, 用数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。源程序代码: (以T8_2作为文件名。)运行程序,测试数据为1 3 57 9 1113 15 19结果:3.下面findmax函数将计算数组中的最大元素及其下标和地址值,请编写findmax函数(以T8_3作为文件名。) #include <stdio.h> 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,*add); 运行结果为: _

温馨提示

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

评论

0/150

提交评论