C语言程序设计实验指导书(师院信计教学用)

更新时间:2024-05-16 10:44:01 阅读量: 综合文库 文档下载

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

《C程序设计》实验指导书

(第一版)

(14~26学时)

数信学院

2012年3月1日

目 录

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

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

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

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

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

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

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

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

一、实验学时 ......................................................................................................................................... 37

二、实验目的 ......................................................................................................................................... 37 三、预习要求 ......................................................................................................................................... 37 四、实验内容 ......................................................................................................................................... 37 五、实验注意事项 ................................................................................................................................. 39 六、思考题 ............................................................................................................................................. 39 实验九 函数 ................................................................................................................................................. 41

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

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

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

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

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

前 言

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

1×9=9 ? ? ? 9×9=81

每个算式可以归为:i×j=?的形式,而且每行中的算式数量随着行数变化。考虑外层循环变量和内层循环变量应当取何值呢?

程序的基本结构为: for( i=1; i<=9; i++ ) { for(j=1; __________; j++ ) 输出乘法算式; 输出回车换行符;

}

/* c5-2.c 输出九九乘法表 */ #include \ void main( ) { }

(三)编程求100~300之间的素数和。

编程提示:首先,弄清素数的概念是本题的关键,素数:只能被1和它本身整除的数为

素数。判断一个数是否为素数需要使用循环结构才能实现,求出100~300之间的全部素数要使用循环的嵌套结构。程序结构提示如下:

/* c5-3.c 求100~300之间的素数和 */ #include \

void main( ) { 定义变量;

外层循环变量i从100递增到300 { 标志变量赋0;

内层循环变量从2递增到i-1

如果不是素数(能整除),则标志变量赋1,跳出循环; 如果标志变量为0(是素数),进行求和; } 输出求和结果; }

(四)编程输出以下图形。 * *** *****

编程提示:输出图形的这一类问题,首先要看一看图形的特点,找到规律:一共有几行,

每行先输出什么字符,输出几个;后输出什么字符,输出几个。一般外循环变量控制行数,内循环变量控制各种字符的数量。

程序的基本结构为: for(i=0; i<=2; i++) { 连续输出若干空格; 连续输出若干个“*”;

23

输出一个换行;

}

/* 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++)

24

{ 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”); } }

25

实验六 一维数组程序设计

一、实验学时

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(\ \

26

}

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 */

27

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 \

28

void main( )

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

scanf(\ for( ;i>=0;i--)

printf(\ /* 按照逆序输出 */ printf(\}

(三)下面程序的功能是:输出一维数组a中的最小值及其下标。请在程序中的横线上填入正确的内容。

#include \void main( )

{ int i,p=0,a[10]; /* 定义a为数组名,p为下标名 */ for(i=0; i<10; i++) scanf(\ for(i=1; i<10; i++)

if (a[i]

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

}

(四)下面程序的功能是:求一维数组中下标为偶数的元素之和并输出。请在程序中的横线上填入正确的内容。

#include \void main( )

{ int i,sum=0;

int a[ ]={2,3,4,5,6,7,8,9}; for(i=0; i<8; ) sum+=a[i];

printf(\ }

29

实验七 二维数组程序设计

一、实验学时

2学时

二、实验目的

(一)掌握二维数组的定义、赋值及输入输出的方法; (二)掌握与二维数组有关的算法如查找、矩阵转置等;

(三)掌握在程序设计中使用数组的方法。数组是非常重要的数据类型,循环中使用数组能更好地发挥循环的作用,有些问题不使用数组难以实现。

(四)掌握在VC++环境下上机调试二维数组程序的方法,并对结果进行分析。

三、预习要求

熟悉二维数组的定义、引用和相关算法(求最大值、最小值)的程序设计,同时要掌握在程序设计中利用双重循环来实现二维数组的输入和输出。

四、实验内容

(一)二维数组的初始化,即给二维数组的各个元素赋初值。下面的几个程序都能为数组元素赋值,请输入程序并运行,比较这些赋值方法有何异同。

1.在定义数组的同时对数组元素分行初始化。 /* c7-1.c 二维数组的初始化(分行)*/ #include \void main( )

{ int i,j,a[2][3]={{1,2,3},{4,5,6}}; for(i=0; i<2; i++) { for(j=0; j<3; j++) printf(\printf(\} }

2.不分行的初始化。把{ }中的数据依次赋值给数组的各个元素。 /* c7-2.c 二维数组的初始化(不分行)*/ #include \void main( )

{ int i,j,a[2][3]={1,2,3,4,5,6}; for(i=0;i<2;i++)

{ for(j=0;j<3;j++)

printf(\printf(\} }

3.为部分数组元素初始化。

30

如:数组定义语句为:int i,j,a[2][3]={{1,2},{4}};

4.可以省略第一维的定义,但不能省略第二维的定义。 如:int a[ ][3]={1,2,3,4,5,6};

依次运行以上程序,比较这四种定义方式的不同之处。

(二)求一个4×4矩阵的主对角线元素之和,填空并运行程序。

编程提示: 1.定义一个4行4列的二维数组a。

2.可利用双重循环的嵌套为该二维数组的各个数组元素赋值,一般格式为: for(i=0; i<4; i++) for(j=0; j<4; j++) scanf(\

3.用循环求和,并注意矩阵对角上线元素的特征是:行下标和列下标相同。 4.输出对角线元素之和。

/* c7-3.c 求一个4×4矩阵的主对角线元素之和*/ #include \void main( )

{ int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,sum=0;

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

_____; /*把对角线元素的和放在变量sum中 */ printf(\ /*输出对角线元素的和*/ }

(三)打印出以下的杨辉三角(要求打印出10行) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1

编程提示:

1.杨辉三角的特点是:第1列和对角线上的元素为1,其它各元素的值都是上一行上一列元素和上一行前一列元素之和。

2.定义一个10×10的二维数组a。

3.先用一个单层循环为第一列和对角线上的元素赋值。如: for(i=0; i<10; i++) { a[i][i]=1;a[i][0]=1; } 4.再用一个双重循环嵌套为其它元素赋值。 for( ; i<10; i++)

31

for( ; ; j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; 想一想,划横线的地方应当填入什么内容?

5.计算之后再用一个双重循环嵌套输出杨辉三角。注意各层循环变量的初值和终值怎样确定。

(四)统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩。填空并运行程序。

/* c7-4.c 学生成绩处理 */ #include \void main( )

{ int stu[3][4],i,j,t[3]; float sum=0,a[3];

for(i=0; i<3; i++) /* 输入三个学生的4门课程考试成绩 */ for(j=0; j<4; j++)

scanf(\ for(i=0; i<3; i++) { t[i]=0;

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

{ sum+=stu[i][j]; /* sum存放三个学生的4门课程总成绩 */ t[i]+=stu[i][j]; /* t[i]存放第i个学生的4门课程成绩 */ }

printf(\输出第i个学生的总成绩 */ ;

printf(\存放第i个学生的4门课程平均成绩*/ }

printf(\}

(五)已知二维数组a中的元素为: 4 4 34 37 3 12 5 6 5

求二维数组a中的最大值和最小值。程序的输出应为:The max is: 37 The min is: 3

填空并运行程序。

/* c7-5.c 求二维数组中元素的最大值与最小值 */ #include \void main( )

{ int a[3][3]={4,4,34,37,3,12,5,6,5},i,j,max,min; max=a[0][0];

; for( i=0; i<3; i++) for( j=0; j<3; j++)

32

{ if ( max < a[i][j] ) max = a[i][j]; if ( min > a[i][j] ) min = a[i][j]; }

printf(\ printf(\ }

(六)以下程序是查找二维数组a的最大元素及其下标,填空并运行程序。 /* c7-6.c 求二维数组中元素的最大值及其下标 */ #include \void main() { int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};

int i,j,max,l,c; /* max存放最大值,l、c分别存放行和列的下标 */ max=a[0][0]; for(i=0; i<4; i++) for(j=0; j<4; j++)

if(max

(七)下面的程序是自动形成并输出如下矩阵,填空并运行程序。 1 2 3 4 5 1 1 6 7 8 1 1 1 9 10 1 1 1 1 11 1 1 1 1 1

/* c7-7.c 生成指定的矩阵*/ #include \void main( )

{ int i,j,k,a[5][5]; k=2;

for(i=0; i<5; i++) /* 行循环 */ for(j=0; j<5; j++) /* 列循环 */

if( ) a[i][j]=1; /* 产生矩阵的下三角元素 */ else a[i][j]=k++; /* 产生矩阵的上三角元素 */ for(i=0; i<5; i++) { for(j=0; j<5; j++) printf(“M”,a[i][j]);

printf(“\\n”); /* 每输出一行后换行 */ }

}

33

(八)下面程序的功能是实现方阵(如:3行3列)的转置(即行列互换) 如:如果原来的矩阵:100 200 300 400 500 600 700 800 900 程序输出应为:

100 400 700 200 500 800 300 600 900 填空并运行程序。

/* c7-7.c 矩阵转置*/ #include \void main( ) { int i,j,temp;

int array[3][3]={{100,200,300},{400,500,600},{700,800,900}}; printf(\原来的矩阵为:\\n\ for(i=0; i<3; i++)

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

{ for(j=0; ;j++)

{temp=array[i][j];array[i][j]=array[j][i];array[j][i]=temp;} } printf(\转置后的矩阵为:\\n\ for(i=0; i<3; i++)

{ for(j=0; j<3; j++) printf(\ } /*输出一行后要换行*/ }

请将此矩阵转置程序与教材上的矩阵转置程序进行比较,各用于何种类型矩阵比较合适?

五、实验注意事项

(一)C规定,二维数组的行和列的下标都是从0开始的。

例如,有定义:int b[3][[5]; 则数组b的第一维下标的上界为2,第二维下标的上界为4。说明定义了一个整型二维数组b,它有3行5列共3*5=15个数组元素,行下标为0,1,2,列下标为0,1,2,3,4,则数组b的各个数组元素是:

b[0][0],b[0][1],b[0][2],b[0][3],b[0][4] b[1][0],b[1][1],b[1][2],b[1][3],b[1][4] b[2][0],b[2][1],b[2][2],b[2][3],b[2][4]

(二)要对二维数组的多个数组元素赋值,应当使用循环语句并在循环过程中,使数组元素的下标变化。可用下面的方法为所有数组元素赋值:

int i,j,a[3][3]; for(i=0; i<3; i++)

34

for(j=0; j<3; j++) scanf(\

六、思考题

(一)定义一个5行5列的二维数组a,使下三角的所有元素初始化为1,在划线处填空。 int i,j,a[5][5]; for(i=0; i<5; i++) for(j=0; j<5; j++)

if( ) a[i][j]=1;

(二)求一个4×4矩阵的主对角线元素之和,填空并运行程序。 #include \

void main( )

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

int i,sum=0; for(i=0; i<4; i++) ;

printf(“sum=%d\\n”,sum); }

(三)求二维数组a中的最大元素及其下标,填空并运行程序。 #include \ void main( )

{int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}}; int i,j,max,l,c; max=a[0][0]; for(i=0; i<4; i++) for(j=0; j<4; j++)

if( max

(四)统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩,填空并运行程序。 #include \ void main( )

{ int stu[3][4],i,j,t[3];

float a[3],sum=0; for(i=0; i<3; i++) for(j=0; j<4; j++) scanf(\for(i=0; i<3; i++) { t[i]=0;

35

for(j=0; j<4; j++) { sum+=stu[i][j]; t[i]+=stu[i][j]; }

printf(\ ; printf(\ }

printf(\ }

36

实验八 字符数组程序设计

一、实验学时

2学时

二、实验目的

(一)掌握字符数组的定义、初始化和应用; (二)掌握字符串处理函数的使用。

三、预习要求

重点预习的内容:C语言中字符串的存储表示;字符数组输入输出的方法;常用的字符串处理函数的使用。

四、实验内容

(一)输入下面的程序并运行,观察程序运行的结果,并分析原因(注意程序第2行中有些单引号之间是空格)。

/* c8-1.c 字符数组的输出*/

#include \void main( )

{ char a[10]={ ’I’, ’ ’, ’a’, ’m’, ’ ’, ’a’, ’ ’, ’b’, ’o’, ’y’}; printf(\}

将字符数组a的大小改为11,再运行程序,并将结果与修改前的结果进行比较,分析原因。

(二)按照要求编写程序:有一行文字,不超过80个字符,分别统计出其中英文大写字母、小写字母、数字、空格、及其它字符的个数。

编程提示: 1.定义一个一维字符数组。

2.定义5个整型变量分别统计大写字母、小写字母、数字、空格和其它字符的个数(即作为5个计数器使用),并为这5个变量赋初值。

3.用scanf函数或gets函数为字符数组赋一个字符串。

4.在循环中对字符数组的每个元素进行判断,相应的计数器加1。注意循环控制的条件和进行判断的条件怎样设置。

5.循环结束后输出各计数器的值。

思考:如果是对一篇英文文章进行统计,又该怎么编程呢?文章的行数和每行字数可以自己来设。提示:对文章的内容要用二维字符数组来存储。

/* c8-2.c 统计字符个数 */

#include \

37

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

Top