计算机二级C语言程序设计题

162 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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;
	}
}

结果如下:

1111111.png