上机4参考解答.docx

上传人:b****6 文档编号:3105097 上传时间:2022-11-17 格式:DOCX 页数:7 大小:16.89KB
下载 相关 举报
上机4参考解答.docx_第1页
第1页 / 共7页
上机4参考解答.docx_第2页
第2页 / 共7页
上机4参考解答.docx_第3页
第3页 / 共7页
上机4参考解答.docx_第4页
第4页 / 共7页
上机4参考解答.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

上机4参考解答.docx

《上机4参考解答.docx》由会员分享,可在线阅读,更多相关《上机4参考解答.docx(7页珍藏版)》请在冰豆网上搜索。

上机4参考解答.docx

上机4参考解答

上机4数组

一、目的

数组是有序数据的集合。

本实验通过上机掌握一维和二维数组的使用,以及字符串处理函数的使用方法。

二、要求

1.掌握一维数组的定义和数组元素引用的正确方法。

2.掌握二维数组的定义和数组元素引用的正确方法。

3.熟练掌握一维数组与二维数组的常见算法。

4.熟悉在什么情况下使用数组,并熟练运用数组来解决实际问题。

5.掌握字符串处理函数的使用方法。

三、内容及步骤

1.编写程序,计算Fibonacci数列的前16个数,并将其存放到一维数组f中,然后输出结果。

【指导】

①Finonacci数列具有以下特点:

它的第1和第2个数分别是0和1,从第3个数开始每个数是它前面两个数之和,从0112358132134…。

②用数组实现,即f[k]=f[k-1]+f[k-2](k=2,…,16)。

因此可以用循环实现finonacci数列前16个数的计算。

(1)程序代码如下,请将填补程序代码中的空缺:

#defineN16

#include<>

voidmain()

{

intf[N],k;

f[0]=0;

f[1]=1;

for(k=2;k

{

f[k]=f[k-1]+f[k-2];

}

for(k=0;k

{

printf(“%d”,f[k]);

if((k+1)%4==0)

printf(“\n”);

}

}

(2)编译运行程序,程序输出的结果是:

0112

35813

21345589

144233377610

2.读程序,说明程序的功能和输出结果。

#include<>

#include<>

voidmain()

{

inta[3][4]={{4,6,3,-7},{5,2,7,-4},{8,6,4,-1}};

intmin,p,i,j;

for(i=0;i<=2;i++)

{

min=abs(a[i][0]);

p=0;

for(j=0;j<=3;j++)

if(abs(a[i][j])

{

min=abs(a[i][j]);

p=j;

}

printf("%d\t(%d,%d)\n",a[i][p],i,p);

}

}

【指导】

(1)程序最终输出的是a[i][p],i,p的结果,那么,a[i][p],i,p在程序中分别代表什么。

a[i][p]表示每行中绝对值最小的数

i表示该数所在的行

p表示该数所在的列

(2)程序运行的结果是:

3(0,2)

2(1,1)

-1(2,3)

3.完善程序,使其能输出如下的图形。

*****

*****

*****

*****

*****

【指导】

①图形由5行,每行5个“*”字符组成,每个字符“*”之间有2个空格。

②首先输出每行前面的空格,每一行前面的空格数是不同的,呈递增的规律,可以考虑用一个循环实现。

③然后输出每一行的5个“*”。

程序代码如下,请将空缺处补充完整。

#include<>

voidmain()

{

inti,j;

charspace='';用一维数组编写程序。

从键盘上输入由5个字符组成的一个字符串str,然后输出该字符串。

要求用两种方法实现:

(1)按字符逐个输入和输出。

(2)按字符串输入和输出。

(1)按字符逐个输入和输出。

源程序:

#include<>

voidmain()

{

charstr[6];

inti;

for(i=0;i<6;i++)

scanf("%c",&str[i]);

for(i=0;i<6;i++)

printf("%c",str[i]);

printf(“\n”);

}

 

(2)按字符串输入和输出。

源程序:

#include<>

voidmain()

{

charstr[6];

gets(str);

puts(str);

}

 

5.程序是查询某学生是否为该班学生的程序,试填空完成该程序。

【指导】

(1)字符串的比较要用strcmp()函数,不能用相等运算符“==”进行比较。

(2)程序中的变量flag是一个控制参数,用于控制输出结果,它的初始值为0。

当for循环中的if语句中的判断条件为真,flag的值改变为1。

由此可见,如果查找结束时,flag的初始值0没有被改变,说明查找不成功,否则(即flag的值改变为1)查找成功。

程序代码如下,请将空缺处补充完整。

#include<>

voidmain()

{

charclassStu[5][8]={"王小华","张三","赵四","向玲","丁一"};

inti,flag=0;

charname[8];

printf("请输入要查询的学生姓名:

");

gets(name);

for(i=0;i<5;i++)不用strcat()函数,将两个字符串连接起来,试完善。

【指导】

将字符数组s2连接到字符数组s1后面的算法步骤如下:

(1)确定s1的串尾位置。

(2)将s2连接到s1后面。

(3)在s1串尾加结束符(如果不加结束符,输出时可能在串的末尾有非法字符)。

程序代码如下,请将空缺处补充完整。

#include<>

voidmain()

{

chars1[80],s2[40];

inti=0,j=0;

printf("Enters1:

");

scanf("%s",s1);

printf("Enters2:

");

scanf("%s",s2);

for(;s1[i]!

=’\0’;i++);

for(;s2[j]!

=’\0’;i++,j++)

s1[i]=s2[j];

s1[i]=’\0’;

printf("\nResultis:

%s",s1);

}

 

四、编程

1.给整型一维数组b[10]输入10个数据,计算并输出数组中所有正数之和、所有负数之和。

源程序1:

#include<>

voidmain()

{

intb[10];

inti;

intsum1=0,sum2=0;

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

scanf("%d",&b[i]);

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

{

if(b[i]>0)

sum1+=b[i];

elseif(b[i]<0)

sum2+=b[i];

}

printf("正数之和为:

%d,负数之和为:

%d\n",sum1,sum2);

}

 

2.青年歌手参加歌曲大奖赛,有10个评委进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。

【指导】这道题的核心是排序。

将评委所打的10个分数利用数组按增序(或降序)排列,计算数组中除第一个和最后一个分数以外的数的平均分。

源程序2:

#include<>

#defineN10

voidmain()

{

intscore[N];

inti,j;

floataverage=0,sum=0;

for(i=0;i

scanf("%d",&score[i]);

//将成绩按照降序排列

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

for(j=1;j<=N-i;j++)

if(a[j-1]>a[j])

{t=a[j-1];a[j-1]=a[j];a[j]=t;}

for(i=1;i

sum+=score[i];

average=sum/8;

printf("%f\n",average);

}

 

精心搜集整理,只为你的需要

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1