上机 参考解答_第1页
上机 参考解答_第2页
上机 参考解答_第3页
上机 参考解答_第4页
上机 参考解答_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上机4 数组一、 目的数组是有序数据的集合。本实验通过上机掌握一维和二维数组的使用,以及字符串处理函数的使用方法。二、 要求1. 掌握一维数组的定义和数组元素引用的正确方法。2. 掌握二维数组的定义和数组元素引用的正确方法。3. 熟练掌握一维数组与二维数组的常见算法。4. 熟悉在什么情况下使用数组,并熟练运用数组来解决实际问题。5. 掌握字符串处理函数的使用方法。三、 内容及步骤1. 编写程序s4-1.c,计算Fibonacci数列的前16个数,并将其存放到一维数组f中,然后输出结果。【指导】Finonacci数列具有以下特点:它的第1和第2个数分别是0和1,从第3个数开始每个数是它前面两个数

2、之和,从0 1 1 2 3 5 8 13 21 34。用数组实现,即fk=fk-1+fk-2(k=2,16)。因此可以用循环实现finonacci数列前16个数的计算。(1)程序代码如下,请将填补程序代码中的空缺:#define N 16#include <stdio.h>void main() int fN,k;f0= 0 ;f1= 1 ;for(k= 2 ;k< N ;k+) fk=fk-1+fk-2; for(k=0;k<N;k+)printf(“%d ”,fk);if(k+1)%4=0)printf(“n”);(2)编译运行程序,程序输出的结果是: 0 1 1

3、2 3 5 8 13 21 34 55 89 144 233 377 610 2. 读程序s4-2.c,说明程序的功能和输出结果。#include <stdio.h>#include <math.h>void main()int a34=4,6,3,-7,5,2,7,-4, 8,6,4,-1;int min, p, i, j;for (i=0;i<=2; i+)min=abs(ai0);p=0; for(j=0;j<=3;j+)if(abs(aij)<min)min=abs(aij); p=j;printf("%dt (%d,%d)n&quo

4、t;, aip,i,p); 【指导】(1)程序最终输出的是aip,i,p的结果,那么,aip,i,p在程序中分别代表什么。 aip 表示每行中绝对值最小的数 i表示该数所在的行 p表示该数所在的列 (2)程序运行的结果是: 3 (0,2) 2 (1,1) -1 (2,3) 3. 完善程序s4-3.c,使其能输出如下的图形。* * * * * * * * * * * * * * * * * * * * * * * * *【指导】图形由5行,每行5个“*”字符组成,每个字符“*”之间有2个空格。首先输出每行前面的空格,每一行前面的空格数是不同的,呈递增的规律,可以考虑用一个循环实现。然后输出每一行

5、的5个“*”。程序代码如下,请将空缺处补充完整。#include <stdio.h>void main()int i,j;char space=' '/变量space存放的是一个空格字符for(i=0;i<5;i+)for( j=0;j<3*i;j+ )/输出每行的空格 printf ("%c",space); for(j=0;j<5;j+ )/输出每行的* printf ("%c ",*); printf(“n”);4. 用一维数组编写程序s4-4.c。从键盘上输入由5个字符组成的一个字符串str,然后输出

6、该字符串。要求用两种方法实现:(1)按字符逐个输入和输出。(2)按字符串输入和输出。(1)按字符逐个输入和输出。源程序:#include <stdio.h>void main()char str6;int i;for(i=0;i<6;i+)scanf ("%c",&stri); for (i=0;i<6;i+)printf ("%c",stri);printf(“n”);(2)按字符串输入和输出。源程序:#include <stdio.h>void main() char str6; gets(str); pu

7、ts(str);5. 程序s4-5.c是查询某学生是否为该班学生的程序,试填空完成该程序。【指导】(1)字符串的比较要用strcmp()函数,不能用相等运算符“=”进行比较。(2)程序中的变量flag是一个控制参数,用于控制输出结果,它的初始值为0。当for循环中的if语句中的判断条件为真,flag的值改变为1。由此可见,如果查找结束时,flag的初始值0没有被改变,说明查找不成功,否则(即flag的值改变为1)查找成功。程序代码如下,请将空缺处补充完整。#include <stdio.h>void main()char classStu58="王小华",&qu

8、ot;张三","赵四","向玲","丁一"int i, flag=0;char name 8;printf("请输入要查询的学生姓名:");gets (name);for(i=0;i<5;i+)/与初始化中的5个人进行比较 if ( strcmp(name,classStui) =0) flag=1;if ( flag=1 ) printf("%s是这个班的。n",name);else printf("%s不是这个班的。n",name);6. 不用strcat

9、()函数,将两个字符串连接起来,试完善s4-6.c。【指导】将字符数组s2连接到字符数组s1后面的算法步骤如下:(1)确定s1的串尾位置。(2)将s2连接到s1后面。(3)在s1串尾加结束符(如果不加结束符,输出时可能在串的末尾有非法字符)。程序代码如下,请将空缺处补充完整。 #include <stdio.h>void main() char s180,s240;int i=0,j=0;printf("Enter s1:");scanf("%s",s1);printf("Enter s2:");scanf("%

10、s",s2);for (;s1i!=0;i+); for (;s2j!=0;i+,j+) s1i=s2j; s1i=0; printf("nResult is:%s",s1);四、 编程1.给整型一维数组 b10输入10个数据,计算并输出数组中所有正数之和、所有负数之和。源程序1: #include <stdio.h>void main() int b10; int i; int sum1=0,sum2=0; for(i=0;i<10;i+) scanf("%d",&bi); for(i=0;i<10;i+) i

11、f(bi>0) sum1+=bi; else if(bi<0) sum2+=bi; printf("正数之和为:%d,负数之和为:%dn",sum1,sum2);2.青年歌手参加歌曲大奖赛,有10个评委进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。【指导】这道题的核心是排序。将评委所打的10个分数利用数组按增序(或降序)排列,计算数组中除第一个和最后一个分数以外的数的平均分。源程序2: #include <stdio.h>#define N 10void main ()int scoreN; int i,j;float average=0,sum=0; for(i=0;i<N;i+) scanf("%d",&score

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论