《C程序设计基础》实验指导 下载本文

12345678 A =

910111213141516编写程序,用二维数组存储矩阵元素,从键盘输入数据,将矩阵转置后按行输出。

实验9 使用指针的程序设计

【实验目的】

1. 掌握使用指针变量的方法。

2. 掌握带有指针形参的函数的定义及调用方法。 3.正确使用函数指针调用函数。 4.正确使用指针操作数组元素。 5.正确使用指针数组操作字符串。 【实验内容】

1. 编写程序,使用指针实现打印一维数组所有元素的操作。

要求: 每行打印4个元素。

从键盘输入下面一组数据进行测试:

5,12,2,6,1,24,15,11,7,3,19,20,13,8

2.编写程序,实现交换两个变量值的操作。

要求: 使用形参为指针的函数swap完成交换功能。 主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换。 输出交换前后的变量值进行比较。

3.编写程序,实现两个字符串拷贝的函数strcopy。

要求: 不允许使用C的字符串函数strcpy。

目标串的长度不应该超过源串的长度。对这个条件进行检查。

主程序中从键盘输入两个字符串。调用strcopy函数实现字符串拷贝操作。 输出拷贝前后,两个字符串的内容。

4.下面的程序是一个使用函数指针调用函数的实例。阅读程序,输入、编译、连接,运行并观察结果。体会使用函数指针调用函数的步骤。

#include int max(int x,int y) { int m=x; if (y>m) m=y; return m; }

11

main()

{ int a,b,c;

int (*funp)(int,int); /*定义函数指针*/ printf(\ scanf(\

funp=max; /*函数指针指向具体的函数*/ c=(*funp)(a,b); /*用函数指针调用函数*/ printf(\}

实验10 使用结构和联合进行程序设计

【实验目的】

1.掌握结构类型变量与数组的定义和使用。

2.掌握使用结构指针和结构变量名使用结构成员的方法。 3.掌握链表的基本概念和操作。 4.掌握联合的概念与使用。 【实验内容】

1.从键盘输入5个人的姓名、年龄和性别,然后输出。

要求:分别通过结构指针和结构变量名输出信息。用函数data_in实现数据输入,用函数data_pout实现通过结构指针输出结构数据的操作,用函数data_nout实现通过结构变量名输出结构数据的操作。

2.输入10本书的名称和单价,按照单价进行排序。

要求:采用结构数组存储数据,使用冒泡或选择排序算法实现排序。

3.下面的程序,构造一个如下图所示的三个结点的链表,并顺序输出链表中结点的数据。

10 20 30 h NULL

a b c

实验10 第3题图示

#include struct node { int data;

struct node *next; /* 指向本结点类型的指针是实现链表的基础 */ }; main()

{ struct node a,b,c,*h,*p; /* 定义三个结点 h是头指针*/

12

a.data=10; b.data=20; c.data=30; /* 结点的数据赋值 */ h=&a; /* 头指针指向a结点 */

a.next=&b; /* a结点的指针指向b结点 */ b.next=&c; /* b结点的指针指向c结点 */

c.next=NULL; /* c结点的指针值为空,表示最后一个结点 */ p=h; /* 遍历每一个结点,打印数据 */ while (p)

{ printf(\

p=p->next; /* 指针移到下一个结点 */ } }

阅读程序,输入、编译、连接,运行并观察结果。体会构造和使用链表的方法。 4.输入并运行下面程序,观察结果,分析联合变量的存储特点。

#include { union

{ int i[2]; long k; char c[4]; } t, *s=&t; s->i[0]=0x39; /* 按照整型成员的类型赋值 */ s->i[1]=0x38; printf(\ /* 按照长整型成员的类型使用储存内容 */ printf(\/* 按照字符型成员的类型使用储存内容 */ }

程序的输出结果为: 380039 9

实验11 使用文件的程序设计

【实验目的】

1.掌握文件与文件指针的概念。

2.学习使用文件打开、文件关闭、读写文件等基本的文件操作函数。 【实验内容】

编写程序,从键盘输入某宿舍楼6家住户某月的水电消耗量及水费和电费标准,计算各户应交纳的水费和电费。

数据及要求如下:

1.水费标准为:1.5元/吨,电费标准为:0.5元,6户人家的信息如下表:

住户地址 水耗(吨) 电耗(度) 101 201

5 4 13

150 90 301 401 501 601 4 3 5 6 120 78 60 105 将表中信息按下面格式组织在文件input.dat中: 1.5 0.5 101 5 150 102 4 90 103 4 120 104 3 78 105 5 60 106 6 105

要求程序从文件input.dat中读取上述数据。

2.分别计算每户应交纳的电费、水费以及电费水费的总和。 2. 汇总全部住户水费、电费的总和。

3. 将计算结果按下面格式写入文件charge.dat中。表格线不必输出,如果实验环境不支持

中文,第一行内容可使用英文或拼音码表示。

住户地址 水耗(吨) 水费(元) 电耗(度) 电费(元) 合计(元) 101 201 301 401 501 601 total

5 4 4 3 5 6 27 7.5 6 6 4.5 7.5 9 40.5 150 90 120 78 60 105 603 75 45 60 39 30 52.5 301.5 82.5 51 66 43.5 37.5 61.5 342 14