C语言程序设计习题答案与上机指导实验要求

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

C语言程序设计习题答案与上机指导实验要求

课堂实验应与课堂讲授内容同步,按教材章节编制实验单元。学生按照“理解程序”→“模仿程序”→“改写程序”→“编写程序”四步曲,循序渐进地学习,逐步提高学生的编程能力。

课程实验包括程序跟踪调试、程序阅读、程序改错、程序填空、程序编写多种类型(在程序阅读题中引入程序的跟踪调试,因此程序阅读题难度不大,这类题一般在前章:3~7章),可从多角度培养学生的编程能力。每章实验有基本类实验(2~3个)和提高类实验(1~2个),基本类实验要求每个同学必须完成,提高类实验学生可根据自己的能力有选择性的完成,完成者该实验可加分。每一章实验可按以下要求编写(以第X章为例):

第X章数据组织——数组

1.1 知识要点

数组是基本的构造类型,是一组具有相同类型数据的有序集合,数组中的元素在内存中连续存放。用数组名和下标可以唯一地确定数组元素。

以下略

1.2 实验名称螺旋方阵(提高类)

1)实验目的

(1)熟练理解和掌握二维数组的使用

(2)熟练理解循环嵌套的含义与使用方法

2)实验任务

(1)实验内容

如图所示,已知一个N*N(3≤N≤25)的方阵,从左上角第1个格式子开始,按顺时针螺旋方向将1,2,3…的数据布满整个方阵。

N=4时的方阵

(2) 实验要求

输入N,产生N阶螺旋方阵中的所有数据,保存到二维数组,并输出该螺旋方阵。

测试用例:

(3)实验要点分析

①问题分析

螺旋方阵数据的产生有一定规律。从外到内,可以以圈为单位生成数据。比如N=4时,刚好就是两圈数据:

第1圈:

1 2 3 4

12 5

11 6

10 9 8 7

第2圈

13 14

16 15

基本规律是:当N为偶数时,需要N/2圈;当圈为奇数时,也需要N/2圈,但是最后还会生成一个数据:N*N。

②实验要点:

使用二维数组存储螺旋方格子中的数据;二维数组所有数据的生成,可使用循环,根据所需要的圈数,从左→右→下→左→上,四个方向来产生数据。

(4)实验思考

如果按逆时针方向来产生螺旋方阵,请修改相应程序。

参考程序(该部分可不要,如果难度较大可给出流程图)

//从左→右→下→左→上,四个方向来产生数据

#include "stdio.h"

#define N 5

int main(])

{

int i,j,k,m=1,n,a[N][N];

j=0;k=0;

while(k<=N/2)

{

i=k;

for(j=k;j<=N-k-1;j++) {

a[i][j]=m++;

}

j=N-k-1;

for(i=k+1;i<=N-k-1-1;i++) {

a[i][j]=m++;

}

i=N-k-1;

for(j=N-k-1;j>=k;j--)

{

a[i][j]=m++;

}

j=k;

for(i=N-k-1-1;i>=k+1;i--) {

a[i][j]=m++;

}

k++;

}

if(N%2!=0) //如果N为a奇数,最后要生成一个数N*N a[(N-1)/2][(N-1)/2]=a[(N-1)/2][(N-1)/2]-1;

for(i=0;i

{

for(j=0;j

printf("%5d",a[i][j]);

printf("\n");

}

return 0;

}

每个实验按以下格式:实验名称

1)实验目的

2)实验任务

(1)实验内容

(2)实验要求

(3)实验要点分析

①问题分析

②实验要点

(4)实验思考

相关文档
最新文档