当前位置:文档之家› C语言习题与实验

C语言习题与实验

习题与上机实验总的目的和要求目的:实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。

C 程序设计课程实践性很强,即要求独立编写程序,学会独立上机调试程序。

学会独立上机调试程序。

也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。

计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。

对程序设计来说,要求会编写程序并上机调试通过。

因此调式程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。

调式程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。

因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。

甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。

这样的学习才会有真正的收获。

实验目的可归纳如下:1.验证自己已建立起来的概念或所编写的程序是否正确;2.加深对课堂所学内容的理解和语法规则的记忆;3.理解和掌握运用计算机高级语言进行编程的思想方法;4.掌握常用算法的设计与应用实现;5.熟悉UNIX等程序开发环境,掌握C程序常用的调试手段;6.学会上机调试程序的方法,不断积累调试经验,提高排错能力;7.使自己具有独立的应用编程和熟练的程序调试能力。

要求:1.做好每一次上机前的准备以提高上机效率:①预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来;②按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。

③将想要上机验证的问题草拟提纲;制定一个简捷的程序调试计划。

2.上机时输入和调式自己所编写的程序。

在使用键盘时,应采用正确的指法击键,为今后正确使用键盘打下基础;应该一人一组,尽量独立思考,上机过程中出现的问题,除了是系统的问题外,一般应自己独立处理,尤其对“出错信息”,应善于自己分析判断,并充分利用开发工具提供的错误信息和调试手段解决出现的问题,及时修改与完善源程序,随时记录有价值的内容。

解决问题是学习调式程序的良好机会。

初学者切不可不编程序或抄别人的程序去上机,应从一开始就养成严谨的科学作风。

3.程序调试通过后,应运行程序并根据事先准备的典型数据验证结果,在运行时要注意在输入不同数据时所得到的不同结果(如解一元二次方程上时,不同的a、b、c 组合应得到实根、复根的不同结果)。

此时应运行几次,分别检查在不同情况下程序是否正确。

4.为便于教师检查和以后复习,请不要删除已通过的程序,包括有问题待答疑的程序,应保存在自己的工作目录内。

源程序名应能反映哪一次实验的哪一个题目,如exp1_1.c表示实验一的第一题,exp3_5.c表示实验三的第五题,exp5_1_1.c和exp5_1_2.c 分别表示实验五中第一题的方法1和方法2。

若有未完成调试的源程序,可以作存盘保存处理,待下一次实验继续完成。

5.上机结束后,应整理出实验报告,实验报告应包括以下内容:①实验目的;②题目;③程序清单(附算法描述或流程图);④运行结果(必须是程序清单所对应的输入数据和打印输出的结果);⑤调式分析和体会。

这是实验报告中最重要的一项,也是最容忽视的一项。

实验过程中大量的工作是程序调式,在调式过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高编程的能力。

应此,对实验的总结,最重要的是程序调式经验的总结。

调式分析也包括对结果的分析。

体会主要是指通过本次实验是否达到了实验目的,有那些基本概念得到了澄清等。

习题与实验一: C程序的运行环境与运行一个C程序的过程一、目的要求:1.了解所使用的计算机系统的基本操作方法,学会独立使用该系统。

2.掌握在该系统上如何编辑、编译、连接和运行C程序。

3.通过编写和运行简单的C程序,了解程序的基本结构和函数的定义形式,理解系统库函数的说明性预处理文件(stdio.h,math.h等)的概念,掌握函数的定义和系统库函数的使用。

初步了解C源程序的特点。

二、习题与实验内容:1.学习从开机开始的操作,包括按帐号登录、列文件目录、显示文件内容、删除文件、复制文件等。

2.调用文本编辑程序,输入范例程序,并进行编译和运行。

应了解所用的系统是用什么命令进行编译和运行的。

编译和连接后所到的目标程序的后缀是什么?3.了解如何在运行时向程序变量输入数据和输出运行结果。

4.运行自己编写的上机习题:1,2,3,4。

三、上机习题:1.编写一个C程序,输出以下信息:**********************Very Good!**********************2.编写计算半径为R、高度为H的圆柱体体积的程序。

要求R和H的数值由键盘输入。

3.阅读程序分析运行结果,并上机验证。

#include <stdio.h>main(){char c1,c2,c3,c4;scanf("%c%c",&c1,&c2);getchar();c3=getchar(); c4=getchar();printf("%c %c %c %c\n",c1,c2,c3,c4);printf("%c,%d\n",c1,c1);printf("%d,%d\n",sizeof(c1),sizeof("1234"));}若从键盘分行输入以下数据,则输出结果是什么?12↙3456↙提示说明:执行getchar()函数时,首先直接从输入缓冲区中读取字符,直到输入缓冲区为空才等待从键盘继续输入。

一行上输入的所有字符一并送入缓冲区,输入完毕,getchar()函数从缓冲区读取一个字符,只要缓冲区还有剩余的字符,后面的getchar()函数就会直接从中读取。

空格和回车符都属于字符,很有必要充分注意和掌握字符输入的特殊性及其输入方❷sizeof为长度运算符(参看教材P375),运算对象(即括号中的内容)可以是常量、变量、表达式和数组名等,运算结果为运算对象地存储字节长度,对表达式而言是表达式值的字节长度。

❸注意思考解决源程序中第五行的功能是什么的问题。

4. 修改范例prg2.c程序文件,使程序中的变量均为float类型,并验证结果是否正确,分析原因(提示:从数据精度上找原因)。

习题与实验二:数据类型、运算符和表达式一.目的要求:1.掌握C语言数据类型、熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法。

2.掌握数据的输入输出的方法,能正确使用各种格式转换符。

3.掌握C的各类运算符的使用,以及包含这些运算符的表达式的运算求值,特别是自加(++)和自减(--)运算符的使用。

4.了解函数参数的求值顺序,UNIX等系统采用自右至左的顺序求函数参数的值,因此右边参数中的变量值的改变会影响左边参数中相应变量的值和表达式的值。

5.进一步熟悉C程序的编辑、编译、连接和运行的过程。

二.习题与实验内容:1.将本题后给出的范例prg2_1.c改用scanf函数输入数据而不用赋值语句,scanf函数调用语句如下:scanf(“%d%d%c%c%f%f”,&a,&b,&c1,&c2,&d,&e);scanf(“%lf,%lf,%ld,%ld,%u,%u”,&f,&g,&m,&n,&p,&q);输入的数据如下:61 62ab3.56 –6.78↙3157.890121, 0.123456789,50000,-60000,32768,4000↙应输出如下结果:sizeof:4, a=61, b=62sizeof:1, c1=a, c2=bsizeof:4, d=3.56 , e=-6.78sizeof:8, f=3157.890121 , g=0.123456789000sizeof:4, m=50000, n=-60000sizeof:4, p=32768, q=4000要求:运行修改后的程序并分析运行结果。

然后将scanf函数中的%lf和%ld改为%f和%d,运行程序并观察分析结果。

范例源程序文件prg2_1.c清单:#include <stdio.h>main(){int a,b; char c1,c2; float d,e; double f,g;a=61; b=62;c1='a'; c2='b';d=3.56; e=-6.78;f=3157.890121; g=0.123456789;m=50000; n=-60000;p=32768; q=4000;printf("sizeof:%d, a=%d, b=%d\n",sizeof(int),a,b);printf("sizeof:%d, c1=%c, c2=%c\n",sizeof(char),c1,c2);printf("sizeof:%d, d=%-6.2f, e=%-6.2f\n",sizeof(float),d,e);printf("sizeof:%d, f=%-15.6f, g=%-15.12f\n",sizeof(double),f,g);printf("sizeof:%d, m=%ld, n=%ld\n",sizeof(long),m,n);printf("sizeof:%d, p=%u, q=%u\n",sizeof(unsigned),p,q);}提示:lf和ld格式符分别用于输入double型和long型数据。

若输入格式符与相应存储单元规定的格式不符,则将引起存储错误,最终将会导致运算结果的错误。

2. 输入并运行以下程序:#include <stdio.h>main(){int i,j,m,n;i=8; j=10;m=++i; n=j++;printf(“%d,%d,%d,%d\n”,i,j,m,n);}然后分别作以下改动并运行:①将第四行改为:m=i++; n=++j;②程序改为:main(){int i,j,m,n;i=8; j=10;printf(“%d,%d\n”,i++,j++);}③在②的基础上,将printf语句改为:printf(“%d,%d\n”,++i,++j);④再将printf语句改为:printf(“%d,%d,%d,%d\n”,i,j,++i,++j);⑤程序改为:main(){int i,j,m=0,n=0;i=8; j=10;m+=i++; n-=--j;printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);}要求:在上机前先用人工分析程序写出应得结果,上机后将两者对照。

相关主题