C语言程序设计实验指导书 - V2.0

更新时间:2023-11-25 03:57:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《程序设计基础》实验指导书

(第一版)

(14~26学时)

信息学院

《程序设计基础》教研组

2011年3月1日

目 录

前 言 ............................................................................................................................................................... 1 实验一 C程序的运行环境和简单C源程序的调试 ................................................................................... 2

一、实验学时 ........................................................................................................................................... 2 二、实验目的 ........................................................................................................................................... 2 三、预习要求 ........................................................................................................................................... 2 四、实验内容 ........................................................................................................................................... 2 五、实验注意事项 ................................................................................................................................... 7 六、思考题 ............................................................................................................................................... 7 实验二 数据类型、运算符和表达式 ........................................................................................................... 9

一、实验目的 ........................................................................................................................................... 9 二、实验要点 ........................................................................................................................................... 9 三、实验要求 ........................................................................................................................................... 9 四、实验内容 ........................................................................................................................................... 9 五、思考与总结 ..................................................................................................................................... 10 实验三 选择结构程序设计 ..........................................................................................................................11

一、实验学时 ..........................................................................................................................................11 二、实验目的 ..........................................................................................................................................11 三、预习要求 ..........................................................................................................................................11 四、实验内容 ..........................................................................................................................................11 五、实验注意事项 ................................................................................................................................. 13 六、思考题 ............................................................................................................................................. 13 实验四 循环结构程序设计(一) ............................................................................................................. 15

一、实验学时 ......................................................................................................................................... 15 二、实验目的 ......................................................................................................................................... 15 三、预习要求 ......................................................................................................................................... 15 四、实验内容 ......................................................................................................................................... 15 五、实验注意事项 ................................................................................................................................. 19 六、思考题 ............................................................................................................................................. 19 实验五 循环结构程序设计(二) ............................................................................................................. 21

一、实验学时 ......................................................................................................................................... 21 二、实验目的 ......................................................................................................................................... 21 三、预习内容 ......................................................................................................................................... 21 四、实验内容 ......................................................................................................................................... 21 五、实验注意事项 ................................................................................................................................. 23 六、思考题 ............................................................................................................................................. 23 实验六 一维数组程序设计 ......................................................................................................................... 25

一、实验学时 ......................................................................................................................................... 25 二、实验目的 ......................................................................................................................................... 25 三、预习要求 ......................................................................................................................................... 25 四、实验内容 ......................................................................................................................................... 25 五、实验注意事项 ................................................................................................................................. 27 六、思考题 ............................................................................................................................................. 27 实验七 二维数组程序设计 ......................................................................................................................... 29

一、实验学时 ......................................................................................................................................... 29 二、实验目的 ......................................................................................................................................... 29 三、预习要求 ......................................................................................................................................... 29 四、实验内容 ......................................................................................................................................... 29 五、实验注意事项 ................................................................................................................................. 33 六、思考题 ............................................................................................................................................. 34 实验八 字符数组程序设计 ......................................................................................................................... 36

一、实验学时 ......................................................................................................................................... 36 二、实验目的 ......................................................................................................................................... 36

三、预习要求 ......................................................................................................................................... 36 四、实验内容 ......................................................................................................................................... 36 五、实验注意事项 ................................................................................................................................. 38 六、思考题 ............................................................................................................................................. 38 实验九 函数 ................................................................................................................................................. 40

一、实验学时 ......................................................................................................................................... 40 二、实验目的 ......................................................................................................................................... 40 三、预习要求 ......................................................................................................................................... 40 四、实验内容 ......................................................................................................................................... 40 五、实验注意事项 ................................................................................................................................. 45 六、思考题 ............................................................................................................................................. 45 实验十 指针(一) ..................................................................................................................................... 48

一、实验学时 ......................................................................................................................................... 48 二、实验目的 ......................................................................................................................................... 48 三、预习要求 ......................................................................................................................................... 48 四、实验内容 ......................................................................................................................................... 48 五、实验注意事项 ................................................................................................................................. 50 六、思考题 ............................................................................................................................................. 50 实验十一 指针(二) ................................................................................................................................. 51

一、实验学时 ......................................................................................................................................... 51 二、实验目的 ......................................................................................................................................... 51 三、预习要求 ......................................................................................................................................... 51 四、实验内容 ......................................................................................................................................... 51 五、实验注意事项 ................................................................................................................................. 52 六、思考题 ............................................................................................................................................. 52 实验十二 结构体、共用体和位运算 ......................................................................................................... 54

一、实验学时 ......................................................................................................................................... 54 二、实验目的 ......................................................................................................................................... 54 三、预习要求 ......................................................................................................................................... 54 四、实验内容 ......................................................................................................................................... 55 五、实验注意事项 ................................................................................................................................. 58 六、思考题 ............................................................................................................................................. 58 实验十三 文件 ............................................................................................................................................. 59

一、实验学时 ......................................................................................................................................... 59 二、实验目的 ......................................................................................................................................... 59 三、预习要求 ......................................................................................................................................... 59 四、实验内容 ......................................................................................................................................... 59 五、实验注意事项 ................................................................................................................................. 61 六、思考题 ............................................................................................................................................. 61 附录:常见错误提示信息的英汉对照 ......................................................................................................... 62

前 言

C 语言是现代最流行的通用程序设计语言之一,它既具有高级程序设计语言的优点,又具有低级程序设计语言的特点,既可以用来编写系统程序,又可以用来编写应用程序。因此,C 语言正在被迅速地推广和普及。上机实验是该课程教学的一个重要环节,因此要求学生做一定数量的上机实验。本指导书可增强同学上机实验的针对性。整个教学和实验中,采用VC++6.0 作为实验环境,强调学生切实培养动手实践能力,掌握调试程序的方法,通过调试理解 C语言程序运行的过程以及C 语言的语法规则,为后续的课程设计,计算机等级考试及其他应用做好充分的准备。

本实验指导书通过大量的实例,循序渐进地引导学生做好各章的实验。根据实验教学大纲,共选择编写了13个实验,其中必做11个,选做 2个 。每个实验内容结构如下:

(1)实验学时 (2)实验目的 (2)预习要求 (4)实验内容 (5)实验注意事项 (6)思考题

其中思考题属于扩展应用部分,学生可以根据自己的学习情况选择完成。

在实验之前,要求学生对实验作好预习工作。在实验中,学生根据实验指导中的内容进行验证与总结,然后再去完成实验内容中安排的任务。一般要求准备好相关代码,实验课中最好以调试和讨论为主。

实验结束后,应及时提交实验报告,报告具体内容可根据实验内容和实验要求进行增删。实验报告一般要求包含:

(1)实验题目

(2)设计思路或算法分析 (3)流程图 (4)程序源代码

(5)程序运行结果及分析 (6)存在的问题。

1

实验一 C程序的运行环境和简单C源程序的调试

一、实验学时

2学时

二、实验目的

(一)掌握在Visaul C++ 环境如何编辑、编译和运行C源程序; (二)掌握C语言的各种数据类型以及整型、字符型、实型变量的定义; (三)掌握C语言中有关算术运算符及表达式的使用。

三、预习要求

熟悉C程序的书写规则、上机调试步骤;熟悉C语言的数据类型;熟悉C语言表达式的构成、运算规则等内容。

(一)Visual C++6.0 集成开发环境简介

由于这些年C++语言程序的普及,Visual C++6.0集成开发环境作为一种功能强大的程序编译器也被相当多的程序员所使用,使用Visual C++也能够完成C语言的编译。

由于Visual C++集成开发环境运行于Windows下,对于习惯于图形界面的用户来说是比较易学的,因此,简要介绍一下如何用Visual C++来完成C语言程序的设计。Visual C++也有多种版本,本书中使用比较普及的Visual C++ 6.0集成开发环境。

(二)Visual C++6.0 集成开发环境安装

Visual C++中文版集成开发环境的安装比较简单,在输入SETUP执行后,可以按照提示信息完成程序安装,在这里不再详述。

四、实验内容

(一) 创建一个新的文件夹

为了方便管理自己的C语言程序,在启动Visual C++ 6.0集成开发环境前,首先在E盘创建一个新的文件夹,以便存放自己的C语言程序。

(二) 启动Visual C++ 6.0集成开发环境

如图1-1所示,单击“开始”→“程序”→Microsoft Visual Studio 6.0→Microsoft Visual C++ 6.0,就可以启动Visual C++ 6.0集成开发环境。

启动后的Visual C++ 6.0集成开发环境如图1-2所示。

(三)开始一个新程序

1.创建文件

单击主菜单中的“文件”→“新建”菜单命令,弹出“新建”对话框,在“新建”对话框中选择“文件”选项卡。在左边列出的选项中,选择“C++ Source File”;在右边的相应对话框中,输入文件名称“c1-1.c”及保存的位置,如图1-3所示。单击“确定”按钮。

2

#include \void main( )

{ _________ a=7;

float x=2.5,y=4.7,z;

z= x + a % 3 * (int) (x + y) % 2 / 4;

printf(\

程序中空格处应填_______________。

8

实验二 数据类型、运算符和表达式

一、实验目的

(1)了解C 语言数据类型的意义,掌握基本数据类型变量的特点和定义方法。 (2)学会使用C 的算术运算符,以及包含这些运算符的算术表达式。 (3)掌握自加(++)和自减(--)运算符的使用。

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

二、实验要点

基本数据类型包括整型、字符型、实型。

三、实验要求

(1)上机前先阅读和编写以下要调试的程序。 (2)上机输入和调试程序并存在磁盘上。 (3)检查实验结果是否正确。

四、实验内容

(以下内容在实验报告中的实验预习报告内容中完成) 1. 调试程序,分析输出结果

(1)输入并运行以下程序。 main()

{ float a,b;

a=123456.789e5; b=a+20;

printf(\}

将第二行改为: double a,b;

再运行,分析运行结果。

说明:由于实型变量的值是用有限的存储单元存储的,因此其有效数字的位数是有限的。float型变量最多只能保证7 位有效数字,后面的数字是无意义的,不能准确表示该数。

(2)输入并运行以下程序。 main()

{ char c1,c2; c1=97;c2=98;

printf(\printf(\}

① 将第二行改为:int c1,c2;再运行。

9

② 再将第三行改为:c1=300;c2=400;再运行,分析运行结果。

说明:字符型数据可作为整型数据处理,整型数据也可以作为字符型数据处理,但应注意字符数据只占一个字节,它只能存放0-255 范围的整数。

2.完成以下填空,并把程序调通,写出运行结果。 下面的程序计算由键盘输入的任意两个整数的平均值: main()

{ int x,y ;

;

scanf(“%d,%d”,&x,&y); ;

printf(\}

3. 指出以下程序的错误并改正,上机把程序调通 main(); { int a;

a=5;

printf(“a=%d, a) }

4. 编写程序并上机运行

要将“China”译成密码,译码规律是:用原来字母后面的第3 个字母代替原来的字母。例如,字母“A”后面第4 个字母是“E”,用“E”代替“A”。因此,“China”应译为“Fklqd”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5 五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5 分别变为‘F’、‘k’、‘l’、‘q’、‘d’、,并输出。输入程序,并运行该程序。分析是否符合要求。

五、思考与总结

(1)总结各种整型变量的取值范围。

(2)总结各种实型变量的有效数字位数和取值范围。 (3)总结算术运算符和自加、自减运算符的优先级与结合性。

10

实验三 选择结构程序设计

一、实验学时

2学时

二、实验目的

(一)掌握C语言关系表达式和逻辑表达式的运算和使用;

(二)正确使用条件控制语句(if语句、switch语句)进行选择结构程序设计。

三、预习要求

(一)关系运算符和关系表达式、逻辑运算符和逻辑表达式;

(二)if语句的三种形式(单分支、双分支、多分支),以及if语句的嵌套; (三)switch语句的形式。

四、实验内容

(一)分析下面程序,掌握关系及逻辑表达式的运算规则。 /* c3-1.c 关系及逻辑表达式运算规则 */ #include \void main( )

{ int a=3,b=5,c=8;

if(a++<3 && c--!=0) b=b+1;

printf(\}

注意该程序中的条件判断表达式a++<3 && c--!=0是一个逻辑表达式,关系表达式a++<3的值为假,因此后一部分c--!=0就不再计算。

(二)输入下面两段程序并运行,掌握case语句中break语句的作用。 1./* c3-2.c */ /* c3-3.c */

/* 不含break的switch */ /* 含break的switch */ #include \ #include \void main( ) void main( ) { int a,m=0,n=0,k=0; { int a,m=0,n=0,k=0; scanf(\ scanf(\ switch(a) switch(a) { case 1: m++; { case 1: m++; break; case 2: case 2: case 3: n++; case 3: n++; break; case 4: case 4: case 5: k++; case 5: k++; } }

printf(\ printf(\} }

11

分别从键盘上输入1、3、5,写出程序运行的结果。

(三)完善程序,从键盘上输入x的值,按下式计算y的值。 ┌ x x<1 y= ┤ 2x-1 1≤x<10 └ 3x-11 x≥10

编程提示:注意逻辑表达式的正确表达方法,数学中的1≤x<10应使用C语言的逻辑表

达式(x>=1 && x<10)来表示。

下面是用多分支选择结构实现本题的程序结构: /* c3-4.c if 语句实现的多分支结构 */ #include \ void main( ) { 定义变量; 输入x;

if ( _______________ ) 按y=x为变量y赋值;

else if( _______________ ) 按y=2x-1为变量y赋值; else

按y=3x-11为变量y赋值; printf(\ }

注意:在赋值语句中加乘号。

(四)编写程序,给出一个百分制成绩,要求输出相应的等级A、B、C、D、E。90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。

编程提示: 1.先定义一个整型变量存放百分制成绩、定义一个字符型变量存放相应的等级成绩; 2.输入百分制成绩;

3.将百分制成绩按10分,分档作为switch语句中括号内的表达式; 4.按

case 10: case 9: case 8: case 7: case 6: default:

这六种匹配情况分别选择不同的入口; 5.输出转换后的等级成绩。

(五)下面程序运行时从键盘上分别输入(20,15),(15,20),写出运行结果。 /* c3-5.c 分支结构中的复合语句*/ #include \ void main( ) { int a,b,t; t = 0;

12

输出一个换行;

}

/* c5-4.c 输出字符图形 */ #include \ void main( ) { }

想一想,输出下面的三种图形分别应当怎样实现: ****** ******** * ****** ***** ***** ****** *** ********* ****** * *************

(五)运行以下程序,分析程序的运行结果并上机验证。 /* c5-5.c 循环结构程序 */ #include \ void main( ) { int i=0, a=0; while( i<20 ) { for( ; ; )

{ if((i)==0) break; else i--;} i+=11;a+=i; }

printf(\ }

五、实验注意事项

(一)对于双重循环来说,外层循环往往是控制变化较慢的参数(例如所求结果的数据项的个数、图形的行数等),而内层循环变化快,一般控制数据项的计算、图形中各种字符的数量等。

(二)注意在循环结构程序设计中,正确使用{ }构成复合语句。 (三)外层循环变量增值一次,内层循环变量从初值到终值执行一遍。 (四)程序书写时,最好使用缩进结构以使程序结构清晰。

六、思考题

(一)根据公式:sum=1?111????,计算sum的值,请把程序补充完整。 2!3!n!/* 求数列和 */

#include \ void main( ) { long int n,j; float sum=0,t;

for(n=1; n<=20; n++)

23

{ t=1.0;

for(j=1; j<=n; j++) t=t*j;

________________; }

printf(\ }

(二)下面函数的功能是输出九九乘法表,请把程序补充完整。 /* 输出九九乘法表 */ #include \ void main( ) { int i,j;

for( i=1; i<=9; i++ )

{ for( j=1; __________; j++ )

printf(\ printf(\}

(三)下面函数的功能是求出100~300间的素数和,请把程序补充完整。 /* 求100~300间的素数和 */ #include \void main( )

{ int i, j, flag, sum=0;

for( i=100; i<=300; i++ ) { flag=0;

for( j=2; j<=i-1; j++ )

if( i%j==0 ) { flag=1;break; } if( ________ ) sum+=i; }

printf(\ }

(四)下面程序的功能是:输出以下图形:

*

*** *****

请把程序补充完整。 /* 输出字符图形 */ #include \ void main( ) { int i,j,k;

for(i=0;i<=2;i++)

{ for( j=0; j<=10-i ;j++ ) printf(\

for( k=0; _______________ ;k++ ) printf(\ printf(“\\n”); } }

24

实验六 一维数组程序设计

一、实验学时

2学时

二、实验目的

(一)掌握一维数组的定义、初始化方法; (二)掌握一维数组中数据的输入和输出方法; (三)掌握与一维数组有关的程序和算法; (四)了解用数组处理大量数据时的优越性。

三、预习要求

(一)理解数组的概念、利用数组存放数据有何特点; (二)一维数组的定义、初始化方法; (三)一维数组中数据的输入和输出方法。

四、实验内容

(一)下面的几个程序都能为数组元素赋值,请输入程序并运行。比较一下这些赋值方法的异同。

1.在定义数组的同时对数组初始化。

/* c6-1.c 在定义数组的同时对数组初始化*/ #include \void main( )

{ int a[4]={0,1,2,3};

printf(\ %d %d %d\\n\}

2.不使用循环对单个数组元素赋值。

/* c6-2.c 不使用循环对单个数组元素赋值*/ #include \void main( )

{ int a[4]; a[0]=2;a[1]=4;a[2]=6;a[3]=8;

printf(\}

3.用循环结构,从键盘输入为每个数组元素赋值,输出各数组元素。 /* c6-3.c 利用循环通过键盘对数组元素赋值*/ #include \ void main( ) { int i,a[4];

for(i=0; i<4; i++)

scanf(\ printf(\

for(i=0; i<4; i++)

printf(\ \

25

}

printf(\

(二)编写一程序,为一维数组a中的元素赋值,并按照逆序输出。

编程提示:通过对一维数组的输入输出来实现。

1. 首先复习教材上知识点,充分理解例题。

2. 对一维数组的输入可以参照实验内容(一)中的三种方法,选择其一输出,用循环结构来实现。

3. 注意是逆序输出,可以通过输出时,在for语句中利用循环变量递减的方法来实现。 /* c6-4.c 利用循环实现一维数组的输入输出*/ #include \void main( )

{ int i,a[10]; /* 定义循环变量i和一维数组a */ for (i=0;i<=9;i++)

scanf(\

for ( ____ _) /* 请补充完整循环语句 */ printf(\ \ /* 按照逆序输出 */ printf(\} (三)编写程序,输出一维数组a中的元素最小值及其下标。

编程提示: 1.定义一个整型变量存放最小值下标,将其初始化为0 ,例如:int p=0;即从数组第零个元素开始判断。

2.通过循环,依次判断数组中的每一个元素a[i]是否小于a[p],如果是,则将p和a[p]的值作相应的改变。

/* c6-5.c 输出一维数组中元素的最小值及其下标*/ #include \void main( )

{ int i,m,p,a[10]={9,8,7,6,1,3,5,18,2,4}; /* m为最小值,p为其下标 */ m=a[0]; p=0;

for(i=1;i<10;i++) if (a[i]

{ ; p=i;} /* 请补充完整此语句 */

printf(\ /* 输出一维数组a中的最小值及其下标 */ }

(四)编写一程序,求一维数组中下标为偶数的元素之和。

编程提示: 1.定义一个数组a并初始化。

2.定义一个整型变量sum,存放下标为偶数的元素和,并初始化为0。

3.从数组的第0个元素开始,每次循环变量递增2,一直到数组的最后一个元素,将其累加到sum变量。

4.输出sum变量即为下标为偶数的元素之和。

/* c6-6.c 求一维数组中下标为偶数的元素之和*/ #include \void main( )

{ int i,sum=0; /* 初始化sum为0 */

26

int a[]={2,3,4,5,6,7,8,9};

for(i=0; i<8; ) /* 请补充完整循环语句 */ sum+=a[i];

printf(\}

(五)编写一程序,将100以内的素数存放到一个数组中。

编程提示:这是一个双层循环嵌套的程序。

1.首先复习教材上的内容,掌握判断素数的方法。

2.定义一个数组存放100以内的素数,想一想该数组的大小应该为多少? 3.定义一个整型变量作循环变量。

4.定义一个整型变量作为数组元素下标的计数器,想一想该变量应赋什么样的初值? 5.在外层循环中,对1~100之间的所有整数进行判断;内层循环则判断每个整数是否为素数。如果是素数,存放到数组中,并使数组下标变量加1;否则继续判断下一个整数。

6.用循环语句输出数组中的所有素数,注意循环变量的初值和终值如何确定。

(六)将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1,2,要求改为按2,1,4,5,6,8的顺序存放(注意是逆序存放而不是逆序输出)。

编程提示: 1.定义一个数组,为该数组赋值(可以在定义时初始化,也可以用循环语句)。 2.在循环中,使第0个元素与第5个元素交换,第1个元素与第4个元素交换,第2个元素与第个3元素交换(注意循环次数按n/2确定,n为数据个数)。

3.输出逆序存放后的各数组元素(使用循环语句)。

五、实验注意事项

(一)C规定,数组的下标下界为0,因此数组元素下标的上界是该数组元素的个数减1。 例如,有定义:int a[10]; 则数组元素的下标上界为9。

(二)由于数组的下标下界为0,所以数组中下标和元素位置的对应关系是:第一个元素下标为0,第二个元素下标为1,第三个元素下标为2,依次类推,第n个元素下标为n-1。

(三)数值型数组要对多个数组元素赋值时,使用循环语句,使数组元素的下标依次变化,从而为每个数组元素赋值。

例如:int a[10],i;

for(i=0;i<10;i++) scanf(\不能通过如下的方法对数组中的全部元素赋值。

int a[10],i; scanf(\

六、思考题

(一)定义一个数组名为ftop且有5个int类型元素的一维数组,同时给每个元素赋初值为0,请写出数组的定义语句 。

(二)下面程序的功能是:为一维数组a中的元素赋值,并按照逆序输出。请在程序中的横线上填入正确的内容。

#include \

27

本文来源:https://www.bwwdw.com/article/c70t.html

Top