基于visual Studio2013解决C语言竞赛题之1022最大数最小数








题目


解决代码及点评

/************************************************************************/
/* 
22.	有一批实数,用零作终止标记。请编程序找出这批数中的最大值及最小值,
并输出该最大值数是这批数中的第几个数(若最大值数多次出现,只打印出第一个的位置)。
又问:若打印出每个最大值数的位置,程序应如何修改?



*/
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int FindMin18(float * arr,int n)
{
	int min=0;
	for (int i=1;i<n;i++)
	{
		if (arr[min]>arr[i])
		{
			min=i;
		}
	}
	return min;
}
int FindMax18(float * arr,int n)
{
	int max=0;
	for (int i=1;i<n;i++)
	{
		if (arr[max]<arr[i])
		{
			max=i;
		}
	}
	return max;
}
void FindMaxMax18(float * arr,int n)
{
	int max=0;
	for (int i=1;i<n;i++)
	{
		if (arr[max]<arr[i])
		{
			max=i;
		}
	}
	for (int j=0;j<n;j++)
	{
		if (arr[j]==arr[max])
		{
			printf("%5d",j+1);
		}
	}
}
//用一个数组保存相应的个数
void main()
{		
	float arr[100]={0};// 设置最长输入为100个
	int i=0;
	while(1)
	{
		scanf_s("%f",&arr[i]);
		float temp=arr[i];
		if (temp==0)
		{
			break;
		}
		i++;
	}
	for (int j=0;j<i;j++)
	{
		printf("%5f",arr[j]);
	}
	printf("\n");
	printf("最大值数为%f第一次出现位置为%d\n",arr[FindMax18(arr,i)],FindMax18(arr,i)+1);
	printf("最小值数为%f\n",arr[FindMin18(arr,i)]);
	printf(" 打印出最大值所有位置\n");
	FindMaxMax18(arr,i);
	system("pause");
}

代码编译以及运行

由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:

1)新建工程

2)选择工程

3)创建完工程如下图:

4)增加文件,右键点击项目

5)在弹出菜单里做以下选择

6)添加文件

7)拷贝代码与运行


程序运行结果





代码下载

http://download.csdn.net/detail/yincheng01/6681845

解压密码:c.itcast.cn



posted on 2013-12-09 02:15  三少爷的剑123  阅读(236)  评论(0编辑  收藏  举报

导航