首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #inolude<stdi
请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #inolude<stdi
admin
2019-09-03
34
问题
请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#inolude<stdio.h>
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;i++)
{facanf(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);
fclsee(wf);}
选项
答案
void fun(int*a,int*b,int*c,int *d) {int t; if(*a<*b){t=*a;*a=*b;*b=t;} if(*a<*c){t=*a;*a=*c;*c=t;} if(*a<*d){t=*a;*a=*d;*d=t;} if(*b<*c){t=*b;*b=*c;*c=t;} if(*b<*d){t=*b;*b=*d;*d=t;} 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/AKRp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下面图符名标识的图符不属于数据流图合法图符的是
若X和Y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
C语言中char类型数据占字节数为
下列定义数组的语句中,正确的是
下列关于栈叙述正确的是
下列关于栈的叙述正确的是
设有定义:char*c;以下选项中能够使c正确指向一个字符串的是
若有定义语句:intyear=2009,*p=&year;以下不能使变量year中的值增至2010的语句是
在最坏情况下,堆排序的时间复杂度是()。
函数fun的功能是:统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。例如:当n=123114350时,结果应该为:c1=3c2=1c3=2。请在程序的下划线处填入正确的内容并把下划线删除,使程
随机试题
刷涂垂直表面,最后整理时,应按()的原则进行。
下列关于划定城市紫线、绿线、蓝线、黄线的叙述中,不正确的是()
施工进度计划的任务在于确定施工的()和进度,使施工工期能够符合建设单位的要求,并得出各项最优指标。
考察对象在整个考察期间各时点t实际发生的资金流出或资金流入称为()。
材料: 近年来,多起“熊孩子”事件被曝光。这些事件均因儿童社会行为不当导致的不良后果而引发了公众热议与批评。与此同时,另一些孩子及家长与之相反的行为也在网络上流传,也同样引起了人们的关注与思考。但这些行为却赢得了公众的赞叹。比如,带低龄孩子乘飞机的妈妈给
最早建立在心理学和伦理学基础上的教育专著是教育家赫尔巴特撰写的______。
已知单字节定点整数[X]补=00101100,[Y]补=00110101,求[X-Y]的十进制真值是______。
假设新建了一个程序文件myProc.prg(不存在同名的.exe、.app和.fxp文件),然后在命令窗口输入命令DOmyProc,执行该程序并获得正常的结果。现在用命令ERASEmyProc.prg删除该程序文件,然后再次执行命令DOmyProc,
若有以下程序intf(intx,inty){return(y-x)*x;}main(){inta=3,b=4,c=5,d;d=f(f(3,4),f(3,5));printf("%d\n"
A、Setupyourownwebsite.B、Consultthebank’srepresentatives.C、Trybymakingtransfers.D、Checkyourstatements.B
最新回复
(
0
)