开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情
计算机二级C语言程序设计题
题目:
请编写函数fun(),其功能是:在形参指针所指的4个整数中找到最大值和最小值,最大的放在a中,最小的放在d中。注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何 内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#include <stdlib.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 *rf,*wf;
int i, a, b, c, d;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0; i<8; i++)
{
fscanf(rf,"%d %d %d %d",&a,&b,&c,&d);
fun(&a,&b,&c,&d);
fprintf(wf,"a=%d,d=%d\n",a,d);
}
fclose(rf);
fclose(wf);
system("pause");
}
解题思路:
在fun函数中,只需要从a到d进行比较,如果a大于b,a,b不变,比较a与c;若a小b,a与b交换位置,交换过后a大于b,再进行a与c的比较;a与c的比较同理,循环比较之后就能发现,每比较一次,较大的数字就能交换到a的位置,较小的数字就能交换到d的位置,直到完成比较后,最大的数字放在a中,最小的数字放在d中。
参考答案:
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;
}
}