




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习任务七参考答案
应用举例77:求数组各元素之和,依据题意将代码补充完整。
#incIude"stdio.h"
#incIude"stdIib.h"//用rand()函数需要包含的头
文件
#defineN10
voidarrin(int*a,intn)〃为数组元素赋值的函数
(
inti;
for(i=0;i<n;i++)
a[i]=rand()%50;〃为数组元素赋0-49的随机
值
}
voidarrout(inta[],intn)//输出数组元素的函数
(
inti;
for(i=0;i<n;i++)
printf("%d",a[i]);;
}
intarrsum(inta[N],intn)〃求各数组元素之和
(
inti,s=0;
for(i=0;i<n;i++)
s=s+a[i];
returns;
)
voidmain0
(
inta[N],s;
arrin(a,N);〃调用输入函数为数组赋值
arrout(a,N);;//调用输出函数输出数组元素
s=arrsum(a,N);//调用求和函数将和值赋给s
printf("\ns=%d",s);
getchar();
}
应用举例7-2:求数组元素的最大值,依据题意将代码补充完整。
#incIude"stdio.h"
#incIude"stdIib.h"
#defineM50
voidarrin(doubIes[],intn)〃为数组元素赋值的函数
t
inti;
for(i=0;i<n;i++)
s[i]=rand()%100*1e-2;〃为数组元素赋实型数
}
voidarrout(doubIea[M],intn)
(
inti;
for(i=0;i<n;i++)
(
printf("%5.2f",a[i]);
if((i+1)%10==0)//每输出10个元素换行
printf("\n");
)
)
doubIefun(doubIe*s,intn)〃求最大值的函数
(
inti;
doubIem=s[0];〃首先认为第一个数组元素
值最大
for(i=1;i<n;i++)〃搜索其它元素,有比m大的
就更新m
if(m<s[ij)
m=s⑴;
returnm;
}
voidmain()
(
doubIea[M],max;
intn=40;〃只使用了40个元素
arrin(a,n);〃调用函数,为数组元素赋值
arrout(a,n);〃调用函数,输出数组元素
max二fun(a,n);//调用函数,获得数组元素的
最大值
printf("\nmax=%5.2f",max);
getchar();
)
问题77:编写程序计算数组元素的最小值。
#incIude"stdio.h"
intfun(int*s,intn)//返回数组元素最小值的函数
{inti;
intm=s[0];
for(i=1;i<n;i++)
if(m>s[i])
m=s[i];
returnm;
)
voidmain()
(
intmin,a[10]={12,5,78,34,65,9,32,41,54,60};
min=fun(a,10);
printf("\nmin=%d",min);
getchar();
)
问题7-2:删除a数组中的偶数,并输出。
#incIude"stdio.h"
intfun(int*a,intn)
(
inti,j;
for(i=0,j=0;i<n;i++)
if(a[i]%2==1)
a[j++]=a[i];
returnj;
}
voidmain()
inta[]=[1,2,3,4,5,6},i,k;
k=fun(a.6);〃a数组6个数,删除偶数后为k个数
for(i=0;i<k;i++)〃输出a数组
printf("%3d",a[i]);
getchar();
)
应用举例7-4数值统计,将代码补充完整。
s[i]=rand0%10;〃将0-9之间的数赋给各数组
元素
问题7-3:统计各年龄段的人数。
#incIude<stdio.h>
#defineN50
#defineM11
voidfun(int*a,int*b)
(
inti;
for(i=0;i<M;i++)
b⑴=0;
for(i=0;i<N;i++)
if(a[i]<100)
b[a[i]/10]++;
eIse
b[10]++;
)
doublernd0〃获得一个随机数的函数
{statict=29,c=217,m=1024,r=0;
—r=(r*t+c)%m;return((doubIe)r/m);
|
voidmain()
{intage[N],i,d[M];
for(i=0;i<N;i++)
age[i]=(int)(115*rnd());〃赋年龄值
printf("Theoriginaldata:\n");
for(i=0;i<N;i++)
printf((i+1)%10==0?"%4d\n":"%4d",age[i]);
printf("\n\n");
fun(age,d);
for(i=0;i<10;i++)printf("%4d-一%4d:%4d\n",i*10,i*10+9,d
⑴);
printf("Over100:%4d\n",d[10]);
getchar();
}
编程训练7T-1数组元素的引用和输入/输出。
(1)
输入:23569056985678988712
输出:23569056985678988712
(2)
#incIude"stdio.h"
#defineM5
voidmain()
(
inti,s[M],*p=s;
for(i=0;i<M;i++)
scanf("%d",s+i);
for(i=M-1;i>=0;i—)
printf("%d",*(s+i));
getchar();
}
输入:2356905698
输出:9856905623
(3)
#define5M改为:#defineM5
inti,s[M];改为:inti,p[M];
编程训练7-1-2按要求计算数组元素之和o
(1)
#incIude"stdio.h"
#incIude"stdIib.h"
#defineM30
voidarrin(int*a)
inti;
for(i=0;i<M;i++)
a[i]=rand()%50;
|
voidarrout(int*a)
(
inti;
for(i=0;i<M;i++)
{printf("%4d",a[i]);
if((i+1)%10=0)
printf("\n");
)
)
intfun(int*a,intn)〃从a地址开始的连续n个元
素求和
(
inti,sum=0;〃为sum赋初值
for(i=0;i<n;i++)
sum=sum+a[i];〃计算数组元素和
returnsum;
}
voidmain()
inta[M],s
arrin(a);
arrout(a);
s=fun(a,M);
printf("数组元素和s=%d\n",s);
getchar();
输出:
411734019242881214
5453127114145422736
41423423221161845
数组元素和s=731
(2)将上面主函数中的s=fun(a,M);改为:s二fun(a+1,3);重新
运行程序,回答以下问题。
数组元素和s=51
这个和值是哪些数组元素之和?a[1]+a[2]+a[3]—
如思求a[82+a[9]+a[10L如何写:s=fun(a+8,3);
如果求a[8]+a[9]+a[10]+a[18]+a[19]+a[20],如何写:s=
fun(a+8,3)+fun(a+18,3)
调试程序写出验证结果:输出如下,正确。一
411734019242881214
5453127114145422736
41423423221161845
数组元素和s=135
(3)用形参传递结果,计算数组元素的奇数和和偶数和。
#incIude"stdio.h"
voidfun(int*a,intn,int*odd,int*even)
{inti;
*odd=0,*even=0;〃程序中的*odd就是主函数的
s1,为s1和s2赋初值
for(i=0;i<n;i++)
if(a[i]%2)//如果数组元素是奇数
*odd=*odd+a[i];
eIse
*even=*even+a[i];
}
voidmain0
tinta[]={1,2,3,4,5,6),s1,s2;〃定义数组的同时初始化
数组
fun(a,6,&s1,&s2);〃调用函数为s1,s2赋值
printf("奇数和:%d,偶数和:%d\n",s1,s2);
getchar();
)
输出:奇数和:9,偶数和:12
编程训练7-2-1求数组元素最大值的下标。
#incIude"stdIib.h"
#defineM50
voidarrin(ints[],intn)〃为数组赋100以内的随机数
{inti;
for(i=0;i<n;i++)
s[i]=rand()%100;
)
voidarrout(inta[M],intn)〃输出函数,每输出10个数换
行
{inti;
for(i=0;i<n;i++)
{printf("%4d",a[i]);
if((i+1)%10==0)
printf("\n");
}
|
intfun(int*s,intn)〃返回值是下标,是整型
(
inti,m=0;//m存最大值下标,默认最大值下标为
0
for(i=1;i<n;i++)〃从下标为1开始向后搜一边
if(s[i]>s[m])〃如果下标i的元素大于下
标m的元素,更新m
m=i;
returnm;
}
voidmain()
(
inta[M];
intk;//k用于接收最大值下标
arrin(a,M);
arrout(a,M);
k=fun(a,M);
printf("\nk=%4d,max=%4d\n",k,a[k]);〃输出最大值
下标和最大值
getchar();
)
输出:
4167340692478586264
5458127619195422736
914253928221161895
47267138691267993594
3112233736441115368
k=37,max=99
编程训练7-2-2将最大值放在a[0]中
voidarrin(ints[],intn)//为数组赋100内的随机数
{略}
voidarrout(inta[M],intn)//输出函数,每输出10个数换
行
{略}
voidfun(int*s,intn)//无需返回值
(
inti,m=0,t;〃m存最大值下标是整型,初
值。
for(i=1;i<n;i++)〃从下标为1开始向后搜一
边
if(s[m]<s[i])〃如果下标i的元素大于下标m的
元素,更新m
m=i;
t=s[m].s[m]=s[0],s[0]=t;〃s[m]与s[0]交
换
|
voidmain()
(
inta[M];
arrin(a,M);
arrout(a,M);
fun(a,M);//调用fun函数
printf("\nmax=%4d",a[0]);〃输出数组元素的最大值
getchar();
)
输出:max二99
编程训练7-2-3将最大值放在a[0]中,次大值放在a[1]中
#incIude"stdio.h"
#incIude"stdIib.h"
#defineM50
voidarrin(ints口,intn)
{略}
voidarrout(inta[M],intn)
{略}
voidfun(int*s,intn)
inti,m=0,t;
for(i=1;i<r);i++)
if(s[m]<s[i])
m=i;
t—s[m],s[m]—s[0],s[0]—t;
m=1;〃默认次大值的下标是1
for(i=2;i<n;i++)〃从下标为2开始向后搜一遍
if(s[m]<s[i])〃如果下标i的元素大于下
标m的元素,更新m
m=i;
t=s[m],s[m]=s[1],s[1]=t;〃将下标m的元素与第2个
数组元素s[1]交换
}
voidmain()
inta[M];
arrin(a,M);
arrout(a,M);
fun(a,M);
printf("\n最大和次大值是:%4d,%4d",a[0],a[1]);
getchar();
}
输出:最大和次大值是:99,95
编程训练7-2-4降序排序
#incIude"stdio.h"
#incIude"stdIib.h"
#defineM50
voidarrin(ints[],intn)
{略}
voidarrout(inta[M],intn)
{略}
voidfun(int*s,intn)〃返回值是下标,是整型
{
inti,m=0,t;〃m存最大值下标是整型,初
值0
for(i=1;i<n;i++)
if(s[m]<s[i])//注意是s[m]与s[i]比较,
更新m
m=i;
t=s[m],s[m]=s[0],s[
m=1;
for(i=2;i<n;i++)
if(s[m]<s[i])〃注意是s[m]与s[i]比较,
更新m
m=i;
t=s[m],s[m]=s[1],s[二t;
}
voidmain()
(
inta[3];〃定义数组长度为3
arrin(a,3);〃为数组赋值
arrout(a,3);〃输出数组元素
fun(a,3);〃调用函数实现降序排序
printf("\n");
arrout(a,3);;〃再次输出数组元素
getchar();
)
输出:
416734
674134
编程训练7-2-5选择排序
#incIude"stdio.h"
#incIude"stdIib.h"
#defineM50
voidarrin(ints口,intn)
{inti;
for(i=0;i<n;i++)
s[i]=rand()%100;
)
voidarrout(inta[M],intn)
{inti;
for(i=0;i<n;i++)
{printf("%4d",a[i]);
if((i+1)%10==0)
printf("\n");
}
}
voidsort(int*s,intn)
(
inti,m,t,j;
for(j=0;j<n-1;j++)
{m=j;
for(i=j+1;i<n;i++)
if(s[m]<s[i])
m=i;
t=s[m],s[m]=s[j],s[j]=t;
}
)
voidmain()
(
inta[10];
arrin(a,10);
arrout(a,10);
sort(a,10);
printf("\n");
arrout(a,10);
getchar();
)
输出:
4167340692478586264
7869676462584134240
编程训练7-3-1人数固定
#include"stdio.h"
#incIude"stdIib.h"
#defineM50〃某班50名学生
voidarrin(ints[],intn)〃模拟录入成绩
{inti;
for(i=0;i<n;i++)
s[i]=rand0%101;
}
voidarrout(inta[M],intn)//输出各分数
{inti;
for(i=0;i<n;i++)
{printf("%4d",a[i]);
if((i+1)%10=0)
printf("\n");
}
)
doubIeave(int*s,intn)〃返回平均分
inti;
doubIeav=0
for(i=0;i<n
av+=s[i]
returnav/n
)
voidfun(inta[M]rintn,intb口)〃统计各分数段人数,放在
b数组中
{inti;
for(i=0;i<5;i++)
b[i]=0;
for(i=0;i<n;i++)
if(a[i]>=90)
b[4]++;
eIseif(a[i]<60)
b[0]++;
b[(a[i]-50)/10]++;
}
voidsort(ints[M],intn)〃降序排列
(
inti,m,t,j;
for(j=0;j<n-1;j++)
{m=j;
for(i=j+1;i<n;i++)
if(s[m]<s[i])
m=i;
t=s[m],s[m]=s[j],s[j]=t;
}
)
voidmain()
(
inta[M],b[5],i;
arrin(a,M);
arrout(a,M);
printf("\n平均分:%.2f\n",ave(a,M));
fun(a,M,b);
printf("不及格人数:%d\n",b[0]);
for(i=1;i<5;i++)
printf("%d分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能教育与培训解决方案合作协议
- 保密协议金融方面
- 影视行业制作管理与后期剪辑方案
- Unit8 lesson 6教学设计 - 2024-2025学年冀教版英语七年级上册
- 川教版三上信息技术3.2 添加角色 教学设计
- 全国冀教版信息技术四年级上册新授课 第7课 Internet Explorer下载 教学设计
- 2025年简易网站服务合同5篇
- 19 食物与营养 教学设计-2024-2025学年科学三年级上册苏教版
- 电子支付商户合作协议8篇
- 标准驾校培训合同范本8篇
- 2025年苏州工业园区服务外包职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2023湖南文艺出版社五年级音乐下册全册教案
- 中职数学单招一轮总复习《集合》复习课件
- 纸箱车间双色水性印刷机作业指导书及质量标准
- 2022-2023年(备考资料)辐射防护-医学x射线诊断与介入放射学历年真题精选一含答案10
- 浅谈班级的文化建设课题论文开题结题中期研究报告(经验交流)
- PMC年终个人总结精编ppt
- DBJ∕T 15-129-2017 集中空调制冷机房系统能效监测及评价标准
- Q∕GDW 11612.41-2018 低压电力线高速载波通信互联互通技术规范 第4-1部分:物理层通信协议
- 闽教版(2020版)六年级下册信息技术整册教案
- 疫情期间离市外出审批表
评论
0/150
提交评论