c程序设计实验题目(下)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七函数程序设计(二)
练习1.用递归方法解决猴子吃桃子的问题(P129习题6.10)。

运行结果:1534
练习2.编写一个程序,其中包含一个子函数,功能为删除字符串中指定的某个字符,并显示删除后的字符串。

子函数要求:
形式为:void delete_string(char str[],char ch);
运行结果示例:
练习3.编写一个程序,其中包含一个子函数,功能为求出一个二维数组(从键盘读入)中每列的最小元素,并依次放入一个一维数组中。

例:
子函数要求:形式为:void fun(int tt[M][N],int pp[N]);
(其中,tt是一个M行N列的二维数组,pp为存放结果的一维数组。


*练习4.编写一个程序,功能为将一个无序数组b(包含5个元素)中的每个元素插入另一个有序数组a (包含10个元素)中的适当位置,使插入后的数组a依然有序。

其中,包含3个子函数,各函数要求如下:
●子函数1:功能为读入一包含n个元素的数组;形式为:void input(int a[],int n);
●子函数2:功能为将一个数值x插入到包含n个元素的有序数组中;
●形式为:void insert(int a[],int n,int x);
子函数3:功能为输出一包含n个元素的数组;
形式为:void output(int a[],int n);
实验八指针程序设计(一)
练习1.用指针变量的处理方法编写一个程序,功能为读入一组(10个)数据后,逆向输出。

程序要求:
练习2.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。

程序要求:程序中对数组的处理全部使用指针方式。

练习3.用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好序的数组(共10个数),再输入一个数,将此数按次序规律将它插入到数组中后输出结果。

函数要求:
实参为指针变量,形参为数组名,且形式为:void insert(int x[ ], int m);
其中:形参m为要插入的数据;函数无返回值。

练习4.用指针变量的处理方法编写一个函数,功能为把读入的一维数组(10个数据)中的所有奇数放在另一个数组中,并输出新数组的内容。

函数要求:实参为指针变量;形参为指针变量,且形式为:int sel ect(int *p, int *q);其中:
指针p用来接收原数组(的地址),指针q用来接收新数组(的地址);函数返回新数组元
素的个数。

提示:两个数组全部在主函数中定义。

练习5.用指针变量的处理方法编写一个程序,功能为将一维数组s(数组元素的个数和数值均由用户即时输入的值决定)中的数据进行逆置,并输出结果。

程序要求:使用两个指针,指针p从数组首部向后移动,指针q从数组尾部与之同步向前移动。

练习6.利用随机数生成一个M*M的二维数组(数据在0~20范围),以4*4矩阵为例:
⑴分别以上三角和下三角形式显示矩阵;
子函数形式:void out(int *p[]);
⑵求出矩阵两条对角线上所有元素之和;
子函数形式:void add(int *p[]);
⑶将矩阵的第一行与最后一行对应元素交换位置存储,并输出新矩阵的结果。

子函数形式:void exchan ge(int *p[]);
程序要求:程序中对数组的处理全部使用指针数组方式。

实验九指针程序设计(二)
练习1.用指针变量的处理方法编写一个程序,功能为统计某一字符在已知字符串“This is a c/c++ program.”中出现的次数。

要求:程序中不得出现数组。

练习2.用指针变量的处理方法编写一个程序,其中包含一个子函数,功能为将字符串s中的字符c1用字符c2替换。

子函数形式为:void replace(char *str,char c1,char c2);
练习3.用指针数组的处理方法编写一个程序,其中包含一个子函数,功能为从键盘输入四个字符串,找出其值最小的一个字符串。

子函数形式为:int min(char *p[],int n);
(其中:n为字符串的个数,子函数返回值为最小字符串的指针数组元素的下标)
练习4.编写一个程序,其中包含一个子函数,功能为统计一个字符串在另一个字符串中出现的次数。

要求:
int strat(char *a,char *sub);
子函数形式为:
练习5.利用随机数生成一个M*M的二维数组(数据在0~20范围),以4*4矩阵为例:
⑴分别以上三角和下三角形式显示矩阵;子函数形式:void out(int *p[]);
⑵求出矩阵两条对角线上所有元素之和;子函数形式:void add(int *p[]);
⑶将矩阵的第一行与最后一行对应元素交换位置存储,并输出新矩阵的结果。

子函数形式:void exchan g e(int *p[]);
程序要求:程序中对数组的处理全部使用指针数组方式。

*练习6.编写一个程序,其中包含一个子函数,功能为将a,b两个字符串中共有的字符存储至数组c中并输出。

要求:子函数形式为:void seek(ch ar *a,*b,*c);
指定测试数据:
实验十结构体程序设计(一)
练习1.编写一个程序,功能为输入5个学生的姓名和年龄,然后输出其中年龄最大和最小学生的姓名和年龄。

要求:5个学生的数据不得使用数组,且仅使用两个结构体变量max和min,分别存储最大的和最小的学生姓名和年龄。

练习2.编写一个程序,功能如下:⑴输入若干人员的姓名及电话号码(8位),以字符“#”结束输入;
⑵当输入姓名时,能查找出该人的电话号码(如果没有此人,则显示未找到该记录)。

练习3.有4个学生,每个学生的数据包括学号、姓名、三门课的成绩,要求:
⑴从键盘输入4个学生的数据;⑵求出每门课的平均成绩;⑶求出每个学生的平均成绩。

程序主框架:
#include "iostream.h"
#include "string.h"
#define N 4
struct student
{
int num;
char name[20];
int score[3];
};
void input(struct student stu[])
{
}
void danke(struct student *p)
{
}
void everyone(struct student *p)
{
}
void main()
{
struct student stu[N];
input(stu);
danke(stu);
everyone(stu);
}
练习4.编写一个程序,其中包含一个子函数,功能为将字符串s2中所有未出现在s1中的字母添加到s1的末尾,然后输出。

要求:
●子函数形式为:char *addat(char *s1,char *s2);即:使用指针型函数
的方式定义子函数,函数返回值为字符串s1的地址。

练习5.编写一个程序,功能为读入多个正整数(以输入-1作为结束标志),输出其中的最大值、最小值。

●要求:所有数据均不得使用整型变量,而全部使用malloc( )函数。

●提示:申请创建3个空间,分别用一个指针加以指向(例如:int *p,*max,*min;)。

实验十一结构体程序设计(二)
练习1.编写一个程序,功能为读入一组正整数(以-1作为结束标志),将它们存储在一个动态链表中。

再读入一个数m,在链表中搜索值为m的结点,输出从该结点开始直至链表结束的所有数据。

此功能为可重复多次的,直至用户输入'N'结束程序。

要求:程序包含2个子函数,各函数要求如下:
子函数1:功能为创建包括n个结点的链表并读入数据;形式为:struct LNod e *creat(void);
子函数2:功能为输出链表中的从m值开始的所有结点;形式为:void print(st ruct LNode *head,int m);
提示:程序可根据需要设置一个全程变量n,用于计结点个数;
练习2.编写一个程序,功能为输入10个整数,将它们存储在一个动态链表中。

再读入一个数n,将链表从第n个结点开始重组(即以第n个结点作为头结点,而将前n-1个结点平移至链表的末尾),并输出重组后的链表结果。

要求:程序包含3个子函数,各函数要求如下:
子函数1:功能为创建包括10个结点的链表并读入数据;形式为:struct LNod e *creat(void);
子函数2:功能为平移(重组)链表;形式为:st ruct LNo de *mo ve(stru ct LNod e *h ead,int n);其中:函数返回值为调整后的新“头指针”的地址;
●子函数3:功能为输出链表中的所有结点;形式为:void print(st ruct LNode *h ead);
练习3.编写一个程序,功能为输入并存储一组文具的明细单(以’#’作为结束)。

文具的类型以(单个大写)字母标识,并且不同类型的文具其规格也不同。

其中:P为铅笔,规格为铅芯直径;G为签字笔,规格为颜色;R为尺子,规格为尺子的长度(cm)。

●要求:程序包含1个子函数,其功能要求为输出指定类型文具的信息;
形式为:v o i d c o u n t(S TA a[],i n t n,c h a r t y p e);
●提示:程序中数组的类型为S TA,应使用t yp edef定义;n为数组元素的个数;type为要统
计的文具类型(单个大写字母)。

*练习4.编写一个程序,功能为输入一组正整数(以-1作为结束标志),将它们存储在一个动态链表中并输出。

然后,将链表中所有偶数值结点删除,并输出链表删除后结果。

要求:程序包含3个子函数,各函数要求如下:
子函数1:功能为创建包括n个结点的链表并读入数据;形式为:NUM *creat(void);
子函数2:功能为输出链表中的所有结点;形式为:void print(NUM *h ead);
子函数3:功能为删除链表中的所有偶数值结点;形式为:NUM *dele(NUM *h ead);
提示:程序中结点的类型为NUM,应使用t yped ef定义;
⑴正常情况:
⑵特殊情况:
实验十二文件的操作
练习1.编写一个程序,功能为先创建一个从键盘输入指定文件名的文本文件(如a1.dat),并输入可多行的数据(以“#”结束)作为其内容;然后将该文件的信息复制到指定名称的另一个文本文件(如a2.dat)中,最后输出两个文件的内容。

要求:使用fgetc和fputc函数。

练习2.编写一个程序,功能为从键盘读入一组数值(10个整数),将其中的奇数和偶数分别在磁盘文件“odd.c”和“even.c”中存放(以二进制方式)并输出。

要求:使用fread和fwrite函数。

练习3.有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生的数据,要求:⑴将读入的数据存入磁盘文件“stu.txt”中;⑵从磁盘文件“stu.txt”中读出并显示所有学生数据;
⑶将指定课程、指定分数段范围内的学生数据另存入磁盘文件“range.txt”中;
⑷从磁盘文件“range.txt”中读出并显示学生数据。

⑸用记事本打开磁盘文件“stu.txt”和“range.txt”验
证其内容。

要求:使用fscanf和fprintf函数。

程序主框架:
#include "stdlib.h"
#include "io stream.h"
#include "stdio.h"
#define F ORM AT "%d %s %d %d %d" // 定义格式控制符
#define N 5
struct stud ent
路漫漫其修远兮,吾将上下而求索
- 百度文库
11
{
int nu m;
char n ame[20];
int sco re[3];
}stu[N];
void input(char a[])// a用于接收要写入数据的文件名
{
}
void output(ch ar a[],int sn) // sn用于接收要输出文件中的学生人数
{
}
int select(char a[],char b[])// 函数返回值为挑选出来的学生人数
{
}
void main()
{
int sn;
input("stu.t xt");
output("stu.t xt",N);
sn=sel ect("stu.t xt","range.txt");
output("ran ge.t xt",sn);
}
*练习4.利用提供的密码本(cipher.txt)进行查询,将输入的数码翻译成电文。

要求:
⑴每四位数码代表一个汉字;
⑵密码以输入“.”作为结束。

要求:使用fgets和fputs函数。

密码本内容示例:
运行结果示例:
近期会放出部分实验的解析。

相关文档
最新文档