首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。 注意:部分源程序存在PROGI.C中,请勿改动主函数maln和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include voi
请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。 注意:部分源程序存在PROGI.C中,请勿改动主函数maln和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include voi
admin
2020-06-16
71
问题
请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。
注意:部分源程序存在PROGI.C中,请勿改动主函数maln和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
void NONO();
void fun (int *a,int *b,int *c,int *d)
{
}
main()
{int a,b, c,d;
printf("请输入4个整数:");
scanf("%d% d% d% d", &a, &b, &c, &d);
printf("原始顺序:%d,%d,%d,%d\n",a,b,c,d);
fun(&a,&b,&c,&d);
printf("处理后:%d,%d,%d,%d\n”,a,b,c,d);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp,*wf;
int i,a,b, C,d;
fp=fopen("in.dat","r");
wf=fopen ("out.dat","w");
for (i=0; i<5; 1++ )
{fscanf(fp,"%d %d %d%d",&a,
&b,&c,&d);
fun(&a,&b,&c,&d);
fprintf (wf,"a=%d,d=%d\n",a,d);
}
fclose( fp);
fclose (wf);}
选项
答案
3 void fun(int *a,int *b,int *c,int *d) 4 {int t; 5 if(* a<* b){t=* a; * a=* b; * b=t; } 6 if(* a<* c){t=* a; * a=* c;* c=t;} 7 if(* a<* d){t=* a; * a=* d;* d=t; } 8 if(* b<*c){t=* b; * b=* c; * c=t; } 9 if(* b<* d){t:* b; * b:* d; * d=t; } 10 if(* c<* d){t:* c; * c=* d; * d=t; } }
解析
本题中的函数功能主要是在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。这个题目类似于排序,但是又不是严格的排序,只要重新排序最大值和最小值的位置即可。所以类似于排序,这一题需要相互比较4个数字,然后进行位置的调换。基本思路就是比较相邻的两个数字,如果靠近a的数字比靠近d的数字要大,就不用进行交换,如果靠近a的数字比靠近d的数字小,就进行交换,这样的话最大的数字就会慢慢交换到a的位置,然后最小的数字就会慢慢交换到d的位置。所以根据分析我们就要用到if语句来进行判断和处理,只要经过几轮的if判断大小然后交换,就能实现题目条件所给出的位置的重置,得到要求的结果。
首先在主函数main中我们需要的就是四个数字,这四个数字需要手动输入,件程序代码第13—15行,四个数字输入完城后就可以进入fun函数进行数据处理了。进入到fun函数中,只要从a到d进行比较,按照一开始的规则即可,如果a大于b,不变,比较a与c,若a小b,a与b交换位置,交换过后a就大于b了,这样就进行a与c的比较;a与c的比较同理,这样的循环比较,就能发现,每比较一次,较大的数字就能交换到a的位置,较小的数字就离a越来越远,也就是到了d的位置,这样就完成了题目所给出的要求了,最大的数字放在a中,最小的数字放在d中。当新的排序排好后,就可以返回主函数进行输出了。
转载请注明原文地址:https://kaotiyun.com/show/OKCp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!试题程序:#include#define
请编一个函数voidfun(inttt[M][N],intPP[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,其功能是:把低于平均分的学生数据放入b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动
给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序
下列叙述中正确的是()。
有以下程序:struetst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};struetstc[2]={10,a,20,b};pt=c;以下选项中表达式值为11的是()。
若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。
若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,下列选项中错误的程序是()。
若有定义语句:inta,b,c,*p=&c;,接着执行以下选项中的语句,则能正确执行的语句是()。
以下选项中关于程序模块化的叙述错误的是()。
随机试题
Word文档可保存的文件类型为__。
从逻辑功能上看,可以把计算机网络分为通信子网和()两个子网。
A.0.01mg/LB.0.05mg/LC.0.1mg/LD.0.15mg/LE.0.2mg/L生活饮用水中铬(六价)的允许浓度为
大蛋白质分子的共振频率是
对侦查所实施的司法控制,包括对某些侦查行为进行事后审查。下列哪一选项是正确的?(2013年卷二35题,单选)
[2009年,第113题]某建设项目年设计生产能力为8万台,年固定成本为1200万元,产品单台销售价为1000元,单台产品可变成本为600元,单台产品销售税金及附加为150元,则该项目的盈亏平衡点的产销量为()。
在贷款意向阶段,()可表明贷款可正式予以受理。
企业取得一项交易性金融资产,在持有期间,被投资单位宣告分派股票股利,下列做法中正确的是()。
甲吃饭时与乙发生冲突,将乙打成重伤。在羁押期间,甲精神失常。经鉴定是由于羁押而引发的精神障碍。下列说法正确的是()。
中国无产阶级除了具有与先进的生产方式相联系、没有私人占有的生产资料、富于纪律性等一般无产阶级的基本优点外,还有自身的特点和优点,包括
最新回复
(
0
)