77范文网 - 专业文章范例文档资料分享平台

2014湖南大学c语言实验题目及其答案 (3)(2)

来源:网络收集 时间:2019-02-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

本实验旨在巩固学生对指针这种数据结构的理解,增强程序设计能力。在这个实验中,学生将练习:

? 定义一个一维数组,含有11个数组元素并且赋予10个初值。 ? 利用循环语句,进行替换前的输出。 ? 使用scanf()函数,输入待替换的数。

? 以实参为数组名、数组的大小及待替换的数调用匹配函数。 ? 在匹配函数中,查找待替换的数。

? 从替换函数返回一个地址,将0送入该地址所指单元。 ? 利用循环语句,进行替换后的输出。

在强化练习中,学生将练习:

? 在该程序中,若将数组定义为”int a[10]”,当在数组中找不到待查找数时会产生什么后果?

? 若数组中有两个相同的待查找数据,编程查看是哪个待查找数据被置换。 ? 将指定位置的数据置换为0。

问题描述

编写程序,在一个整型数组中查找输入的一个整数,找到后把该数置换为0,没找到数组不变。

示例输出 替换前的输出:1 2 3 4 5 6 7 8 9 10 输入待替换的数:6 替换后的输出:1 2 3 4 5 0 7 8 9 10

程序模板

#include \

/*匹配函数的说明*/ void main( )

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

int b, i;

/*提示替换前的输出*/ for(i=0;i<10;i++) printf(\ /*输出回车换行*/

printf(\输入待替换的数:\ /*用scanf()输入待替换的数*/ /*调用匹配函数并将数字0存入该函数的返回值中*/ printf(\替换后的输出:\ for(i=0;i<10;i++)

/*输出数组a的数组元素的值,并且每两个值之间空一格*/

printf(\

}

int *match(int *p, int n, int b) { int i;

/*循环语句,循环条件是数组的下标没超过10并且还没找到相匹配的数*/

/*返回待查找数据的单元地址或数组最后一个数组元素的地址*/ }

问题解答提示

1.match()函数是指针型函数,在说明和定义它时要在其函数名前写上“*”。

2.match()函数是指针型函数,它的返回值是地址值,所以在主函数中要用取内容运算符”*”,将数值0放入该单元。

3.因为match()函数的返回值是地址值,所以其调用可以放在赋值运算符的左边 4.在这10个数中如果查找不到待查找数的话,就会返回a[10]的地址,所以主函数中数组a的大小应定义为11。

5.如果在实验中碰到任何问题,请向实验老师寻求帮助。

强化练习

1.根据程序模板,若将数组定义为”int a[10]”,当在数组中找不到待查找数时会产生什么后果。

2.若数组中有两个相同的待查找数据,编写程序查看是哪个待查找数据被置换。 3.修改程序,将指定位置的数据置换为0。

实验练习4:编写程序,输入10个整数,将其中最小的数与第一个数交换,最大的数与最后一个数交换。

本练习要求在封闭式实验课中在助教或者讲师的指导下完成。本练习分成6个部分: 1.实验目的 2.问题描述 3.事例输出 4.程序模板 5.问题解答提示 6.后续问题和任务

程序模板是完整的、可实际运行的C程序,其中关键的一行或者多行代码已经替换为注释。请先阅读问题描述,分析事例输出;然后研究模板的代码。参考问题解答提示,用C代码替换/* */注释。编译并执行程序,并将输出结果与提供的事例输出进行比较。然后回答强化练习。

实验目的

本实验旨在巩固学生对指针这种数据结构的理解,增强程序设计能力。在这个实验中,学生将练习:

? 定义一个输入函数,从键盘输入10个整数并存入数组中。 ? 定义一个求最大值和最小值的函数max_min()。

? 在max_min()函数中,共定义四个指针变量,分别指向最大值、最小值、数组尾部及一个临时指针。

? 将指针array_end指向数组的尾部。 ? 先将指针max、min指向数组的第一个元素,然后利用循环和临时指针使max、min分别指向数组中的最大值和最小值。

? 使最小值与第一个数交换,最大值与最后一个数交换。 ? 定义一个输出函数,输出重排后的数组。

在强化练习中,学生将练习:

? 在max_min()中,只定义两个指针变量,不定义指向最大数和最小数的指针。 ? 将数组定义为全局数组。

? 将输入和输出函数部分插入到主函数中。

问题描述

编写程序,从键盘输入10个整数并存入数组,将其中最小的数与第一个数交换,最大的数与最后一个数交换,然后输出重排后的数组

。 示例输出 Input 10 integer: 78 25 36 98 12 66 58 69 79 32 Output 10 integer 12 25 36 32 78 66 58 69 79 98

程序模板

#include \

/*输入函数input()的头部*/ { int i;

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

/*scanf()函数输入整数*/ }

void max_min(int num[ ])

{ /*定义指针变量max、min*/ int *p,*array_end;

/*使指针array_end 指向数组的最后一个数据之后*/ /*使指针max、min指向数组的第一个数据*/ /*for循环的头部。指针p为循环控制变量,循环条件是:当p指向数组的

最后一个数据之后时结束循环,每次使指针p下移一个数据*/ if(*p>*max) /*使max与p的指向相同*/ else if(*p<*min) min=p;

/*使最小值与第一个数交换*/

*p=num[9]; num[9]=*max; *max=*p; }

void output(int num[ ]) { int *p;

/*输出信息的提示*/

for(p=num;p

void main( )

{ int number[10]; /*调用输入函数*/

/*调用max_min()*/ /*调用输出函数*/ }

问题解答提示

1.在max_min()中,为保证数组的最后一个数据能得到处理,将指针变量array_end指向数组的最后一个数据之后。

2.p++是指针下移,在C中每次下移两个单元。因为在C中整数占两个单元。 3.语句max=p;,是把p中存放的地址值赋给max,即p和max指向同一单元。

4.条件*p<*min是指若p所指向单元中的数据小于min所指向单元中的数据,则交换。不能把它写成p

5.num[0]中数据与min所指向的单元中的最小数据交换,即是num[0]与*min交换。不能写成num[0]与min交换。

6.如果在实验中碰到任何问题,请向实验老师寻求帮助。

强化练习

1.根据程序模板,在max_min()中,只定义两个指针变量,不定义指向最大数和最小数的指针,重编程序,

2.将数组定义为全局数组,试对程序做相应的修改。

3.重新编写程序,将输入和输出函数部分插入到主函数中。

8.4 综合练习

1.求矩阵a[2][3]={11,22,33,44,55,66}的转置矩阵t[3][2],并按矩阵的形式输出两矩阵,要求用指针实现。

分析:本题的关键是以指针实现两矩阵中数据传递交换,根据需要可定义两个指针int (*p)[3]和int (*q)[2]用以分别指向矩阵a和b。

#include \void main()

{ int a[2][3]={11,22,33,44,55,66},t[3][2]; int (*p)[3],(*q)[2],i,j; p=a; q=t;

}

for(i=0;i<2;i++) for(j=0;j<3;j++) *(*(q+j)+i)=*(*(p+i)+j); printf(\矩阵A:\\n\ for(i=0;i<2;i++) { for(j=0;j<3;j++)

printf(\ \ printf(\ }

printf(\矩阵B:\\n\ for(i=0;i<3;i++) { for(j=0;j<2;j++)

printf(\ \ printf(\ }

2.有几个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人退出圈子,问最后留下的是几号? 分析:利用含n个元素的数组,它的下标代表每个人的编号。数组元素num[i](或*(p+i))中存放着编号为i的人是否在圈内的情况,其值为非0表示该人在圈内,为1表示该人在圈外。

#include \

#define max 15 void main( )

{ int i, k,n,m, num[max], *p; scanf(\ p=num;

for(i=0;i

while(*p= =0)

p++;

printf(\ %d\\n\

}

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2014湖南大学c语言实验题目及其答案 (3)(2)在线全文阅读。

2014湖南大学c语言实验题目及其答案 (3)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/476478.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: