C语言实验指导书.doc_第1页
C语言实验指导书.doc_第2页
C语言实验指导书.doc_第3页
C语言实验指导书.doc_第4页
C语言实验指导书.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

C语言上机实验指导实验一 熟悉C语言程序开发环境 一 目的要求1 熟悉在所用的计算机系统上如何编辑、编译、连接和运行一个C语言程序。2 掌握C语言的数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法。3 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的使用。4 通过运行简单的C语言程序,初步了解C语言程序的结构特点。二 实验内容1 调用编辑程序,输入以下程序,并进行编译和运行。熟悉所用的系统使用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式?main( )printf(“This is a c program.n”);2 从键盘依次输入两个整数,计算并输出这2个整数之差。 # include “stdio.h”main() float a,b,c; printf(“input a,b,:n”); scanf(“%d, %d,”,&a,&b); c=a-b; printf(“c=%dn”,c);具体要求: 在Turbo C或其他编译环境编辑窗口输入该程序,然后进行编译连接。如果在编译过程中有错误发生,则仔细检查并修改程序,再进行编译连接,直到没有错误为止。 运行时按程序中要求的格式依次输入下列2个数:212,84 3输入并运行以下程序,分析结果,体会自增自减运算符的特点,上机验证; main( ) int i,j,m,n,u=0,v=0; i=8;j=10; m=+i;n=j+; u+=i-;n-=-j; printf(“i=%d,j=%d,m=%d,n=%d,u=%d,v=%dn”,i,j,m,n,u,v);4输入并运行下面的程序。 main() int m,n; m=120; n=112; printf(“%dt%dn”,m,n); 要求:运行程序记下结果。 在程序的最后增加一句:printf(“%ct%cn”,m,n);再运行程序,并分析结果。 将第2行改为:char m,n;再运行程序,并观察结果。 将第3行和第4行改为:m=x;n=p;再运行程序,并观察结果。 将第3行和第4行改为:m=x;n=p;再运行程序,并观察结果。如果产生了错误,说明是什么引起的? 再将第3行和第4行改为:m=280; /*用大于255的整数*/n=320;再运行程序,并观察分析运行结果。实验二 顺序结构程序设计一 目的要求1 掌握数据的输入输出的方法,能正确使用有关格式转换符;2 熟悉顺序结构程序中语句的执行过程。3 掌握顺序结构程序的设计方法。二实验内容1编写C程序,按下列公式计算并输出S的值。其中a和b的值由键盘输入。 源程序清单: main int a,b; float s; scanf (“%d,%d”,&a,&b); s=2.0*a*b/((a+b)*(a+b)); printf (“s=%fn”,s); 具体要求:输入并调试上述源程序;对源程序进行编译、连接;运行源程序并存盘(文件名自定);将scanf函数改为:scanf (“%d%d”,&a,&b)再编译、连接、运行;写出程序运行结果。输入数据4,5输入修改后数据4 54 5 运行结果运行结果原 因原 因2、编写下列程序,并上机调试运行程序。(1)编程:设圆的半径为r=1.5,求圆周长、圆面积与圆球的体积。要求用scanf函数输入数据,输出计算结果。输出时取小数点后两位数据。(2)程:输入一个华氏温度,要求输出摄氏温度。公式为c=5/9(f-32)。(3)编程:用getchar函数读入两个字符,然后分别用putchar函数和printf函数输出这两个字符。上机运行程序,比较用putchar和printf函数输出字符的特点。实验三 选择结构程序设计 一 目的要求1 学会正确使用关系运算符和关系表达式;2 学会正确使用逻辑运算符和逻辑表达式;3 学会使用逻辑表达式和关系表达式等表达条件;4 熟练掌握if语句和switch语句;5 熟悉选择结构程序中的语句执行过程;并掌握选择结构程序的设计方法;二 实验内容1、编写程序,判断从键盘上输入的一个字符,并按下列要求输出。(1)若该字符是数字,输出字符串“0-9”;(2)若该字符是大写字母,输出字符串“A-Z”;(3)若该字符是小写字母,输出字符串“a-z”;(4)若该字符是其他字母,输出字符串“!,,”。 部分源程序清单: main( ) char c; scanf(“%c”,&c) if(0=cc= 9) else if( ) printf(“A-Zn”); (a= cc= z) printf (“a-zn”); printf (“!,n”); 具体要求: 输入、完善上述源程序,并调试; 对源程序进行编译、连接; 运行源程序并存盘; 写出程序运行结果(输入四组数据,分别对应四种情况)。输入数据运行结果原 因2、编写下列程序,并上机调试运行程序。(1)有一函数 y= 用函数输入的值(分别为小x1,1=x=10三种情况),求y值。(2)给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A, 8189分为B,7079分为C,6069分为D,60分以下为E。用switch 语句实现。(3)给一个不多于5位的正整数,要求:求出它是几位数;分别打印出每一位数字;按逆序打印出各位数字,例如原数为321,应输出123。(4).编程:要求输入a、b、c三个值,输出其中最大者(5)输入四个整数,要求按大小顺序输出。实验四 循环结构程序设计一、 目的要求1 熟悉用while语句,do-while语句和for语句实现循环的方法;2 掌握在程序设计中用循环的方法实现各种算法;3 理解循环结构程序中语句的执行过程;二、 实验内容1、编一个C程序,计算并输出数列:1,3,5,2n-1,的前几项之和,其中n由键盘输入。要求分别用三种循环语句实现。 方法1:用for语句实现。 main( ) long s, n, k, i; scanf(“ ”,n); k=2*n-1; ; for(i=1;i=k; )s+=i; printf(“1+3+%ld=%ldn”,k,s); 方法2:用while语句实现。 main( ) long ,n,i=1; scanf(“%ld”,n); while( ) s+=i; ; printf(“1+3+%ld=%ldn”,2*n-1,s); 方法3:用do语句实现。 main( ) long s=0,n, ; scanf(“%ld”,n); do s+=i ; i=i+2; while( ); printf(“1+3+%ld=%ldn”,2*n-1,s); 具体要求: 输入、完善上述源程序,并用热键调试; 对源程序进行编译、连接; 运行源程序并存盘; 写出程序运行结果。方法1方法2方法3输入数据运行结果2、编写程序并上机调试运行:(1)输入两个正整数,求其中最大公约数和最小公倍数。(2)求1!+2!+3!+20!(3)一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?(4)打印出以下图案。 * * * * * * *(5)猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想在吃时,见只剩下一个桃子了。求第一天共摘了多少个桃子。(6)打印九九乘法表。实验五综合运用三种基本结构进行程序设计一、目的要求1 进一步掌握选择结构程序设计的方法和技巧。2 进一步掌握循环结构程序设计的方法和技巧。3 综合运用三种基本结构进行程序设计。三、 实验内容编写程序并上机调试运行:1 百马百担问题。有100匹马,驮100担,大马驮3担,中马驮2担,两个小马驮1担。问大,中,小马各多少?(程序应考虑适当减少重复次数)2 输入一行字符,分别统计其中的英文字母、空格、数字和其它字符的个数。3 打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如153是一水仙花数。4 将一个正整数分解成质因数的乘积。例如:输入90,打印902*3*3*5。5 利用循环语句编写程序:对一个正整数,将各位数字反序后的数输出。例如原数是12345,则计算机输出是54321;原数是987,则计算机输出是789。6 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:6its factors are 1,2,37实验六 数 组一、 目的要求1 掌握一维数组和二维数组的定义、赋值和输入输出的方法;2 掌握字符数组和字符串函数的使用;3 掌握与数组有关的算法(特别是排序算法)。二、 实验内容1、从键盘输入一个整数n(n10)和n个整数,存入数组a中,先依次输出各个数组元素的值,然后对数组a的所有元素值按从小到大的顺序重新排列后,再依次输出。 源程序清单: main( ) int a10,n,i,j: ; printf(“input n=”); scanf(“%d”,n); printf(“input array a0 a1a%d:n”,n-1); for(i=0;in;i+) scanf(“%d”, ); printf (“before sort:arrayn”); for(i=0;in;i+) printf (“%d”,ai); printf (“n”); for(i=0;i ;i+) min=i; for(j= ;jn;i+) if(ajamin) ; ax= ; ai=amin; =ax; printf (“after sort:arrayn”); for(i=0;in;i+) printf (“%d”,ai); printf (“n”); 具体要求: 输入、完善并调试上述源程序; 对源程序进行编译,连接,运行; 写出程序运行结果(输入三组数据)。输入整数n输入n个整数输出(排序前)输出(排序后)2、编写程序并上机调试运行:(1)用选择法对10个整数排序。10个整数用scanf函数输入。(2)已有一个已排好序的数组,现输入一个数,要求按原来排序的规律将它插入数组中。(3)求一个3*3矩阵两对角线元素之和。(4)打印出以下杨辉三角形(要求打印10行)。11 11 2 11 3 3 11 4 6 4 1 (5)将两个字符串连接起来,不要用strcat函数。(6)*.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。实验七、八 函数与预处理一、 目的要求1 掌握定义函数的方法;2 掌握函数实参与形参的对应关系,以及“值传递”的方式和数组名作为参数的传递方式;3 掌握函数的嵌套调用和递归调用的方法;4 掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。5 理解宏的概念,掌握宏的定义。6 了解文件包含的概念,掌握其用法。二、 实验内容1、从键盘输入10个数存入数组a中,调用fmax求数组中的最大值并输出。 #include main() int a10,i,jmax; for(i=0;i10;+i) scanf(“%d”,&ai); fmax( ,10,jmax); printf(“%d”,jmax); fmax(int b,int t,int imax) int i; imax=b0; for(i=1,iimax) ; 具体要求: 输入并完善源程序; 对源程序进行编译、连接、运行; 写出程序运行结果。2、编写下列程序,并上机调试运行:(1)求方程 ax+bx+c=0 的根,用三个函数分别求当b-4ac大于0,等于0和小于0时的根,并输出结果。从主函数输入a、b、c的值。(2)写一个判素数的函数,在主函数输入一个整数,输出是否为素数的信息。(3)编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果。(4)输入10个学生5门课程的成绩,分别用函数求:(1)每个学生平均分;(2)每门课的平均分;(5)用递归法求n阶勒让德多项式的值,递归公式为 (6)写一函数,输入一个十六进制数,输出相应的十进制数。(7)定义一个带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。(8)输入两个整数,求它们相除的余数。用带参的宏来实现,编程序。注:该实验可用4学时。实验九、十 指 针一、 目的要求1 掌握指针的概念,会定义和使用指针变量;2 掌握指针的运算;3 学会使用数组的指针和指向数组的指针变量;4 学会使用字符串的指针和指向字符串的指针变量;5 了解指向函数的指针变量;6 了解指向指针的指针的概念及其使用方法。二、 实验内容1、有如下程序。 #include main() char ch25=“1213”,“8421”,*p2; int i,j,s=0; for(i=0;i2;i+) pi= ; for(i=0;i0&pijS2,则输出正值;如S1S2则输出负值。两个字符串S2、S2由main 函数输入,strcmp函数的返回值也在main 函数输出。(9)用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和整数在主函数中输入。最后在主函数中输出。注:该实验可用4学时。实验十一 结构体和共用体一、 目的要求1 掌握结构体类型变量的定义和使用;2 掌握结构体类型数组的概念和应用;3 掌握链表的概念,初步学会对链表进行操作;4 掌握共用体的概念与使用。二、 实验内容1、分析并验证以下程序的结果。 #include struct student long num; char *name; float score; stu5= 930001,“Wang”,80.5, 930002,“Zhang”,79.6, 930003, “Li”,95.3, 930004, “Zhao”,84.5, 930005, “Huang”,91.2 ; void main(void) int i; struct student *sp; sp=stu; for(i=0;iscore=90.0) printf(“%10ld%10s%6.1fn”,sp-num,sp-name,sp-score); 具体要求: 输入调试上述源程序,直到无错误为止; 对源程序进行编译,连接,运行; 写出程序运行结果。2、编程并上机调试运行。(1)有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入 个学生数据,要求打印出三门课总平均成绩,以及最高分的学生数据(包括学号、姓名、三门课的成绩、平均分数)。 要求用一个input函数输入5个学生数据;用一个average函数求总平均分;max函数找出最高分学生数据;总平均分和最高分的学生的数据都在住函数中输出。(2)13个人围成一圈,从第一个人开始顺序报号1、2、3。凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。(3)输入和运行以下程序:union dataint I2;float a;long b;char c4;main( )union data u;scanf(“%d,%d”,&u.i0,&u.i1);printf(“i0=%d,i1=%dna=%fnb=%ldnc0=%c,c1=%c,c2=%c, c3=%cn”,u.i0,u.i1,u.a,u.b,u.c0,u.c1,u.c2,u.c3);输入零个整数10000、20000给u.i0和u.i1。分析运行结果。然后将scanf语句改为: scanf(“%ld”,&u.b);输入60000给b。分析运行结果。(4).建立一个链表,每个节点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的节点所包含的年龄等于此年龄,则将此节点删去。实验十二 位运算和文件一、 目的要求1 加深对二进制的认识;2 理解位运算的概念,掌握各种位运

温馨提示

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

最新文档

评论

0/150

提交评论