C语言程序设计习题答案与上机指导实验要求
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)实验思考