C语言编程:键盘输入10个数,用函数实现计算数据中最大值、最小值,并返回它们所在数组中的位置。 30
要求方法是这样的:数组在主函数中,调用函数求最大和最小
本人思维短路了,求破。。 展开
在主函数中声明一个具有10个int型元素的数组存放键盘输入的数据,声明变量ml记录最大值位置、ms记录最小值位置。自定义一个函数void Input_Max_Min(int *p,int *pl,int *ps)来完成题设要求,其中p是数组首指针,pl是最大值位置(下标)变量指针,ps是最小值位置(下标)变量指针。在主函数中输出结果。代码如下:
#include "stdio.h"
void Input_Max_Min(int *p,int *pl,int *ps){
int i;
printf("Please enter the 10 Numbers...\n");
for(*pl=*ps=i=0;i<10;i++){//输入10个整数并判断大小
scanf("%d",p+i);
if(p[i]<p[*ps])//若当前输入的数比最小值记录小则修改记录
*ps=i;
if(p[i]>p[*pl])//若当前输入的数比最大值记录大则修改记录
*pl=i;
}
}
int main(int argc,char *argv[]){
int m[10],ml,ms;
Input_Max_Min(m,&ml,&ms);//用数组首址和最大值及最小值位置记录变量地址调用自定义函数
printf("The MAX is m[%d]==%d\nThe MIN is m[%d]==%d\n",ml,m[ml],ms,m[ms]);//输出结果
return 0;
}
运行样例如下:
#include<stdio.h>
int main()
{
int a[10],n,max,min,maxxiabiao,minxiabiao;
for(n=0;n<=9;n++)
{
scanf("%d",&a[n]);
}
max=min=a[0];
maxxiabiao=minxiabiao=0;
for(n=0;n<=9;n++)
{
if(a[n]>max)
{
max=a[n];
maxxiabiao=n;
}
else if(a[n]<min)
{
min=a[n];
minxiabiao=n;
}
}
printf("max=%d,xiabiao=%d\n",max,maxxiabiao);
printf("min=%d,xiabiao=%d\n",min,minxiabiao);
return 0;
}
扩展资料:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏
你可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。例1展示了这样的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
当上述程序代码进入预处理时,如果_DEBUG_宏已被定义,那么预处理器会插入myProject_dbg.h的内容;如果还没定义,则插入myProject.h的内容。
#include <stdio.h>
#include <conio.h>//getch
void fun(int* n,int array_number,int* max,int* min)
{
int count;
*max = n[0];
for(count = 1;count < array_number;count++)
{
if((*max) < n[count])//如果有数字大于他
{
(*max) = n[count];
}
}
(*min) = n[0];
for(count = 1;count < array_number;count++)
{
if((*min) > n[count])//如果有数字小于他 {
(*min) = n[count];
}
}
}
int main()
{
int a[10],max,min;
int i = 0;
for(i = 0;i < 10;i++)
{
scanf("%d",&a[i]);
}
fun(a,10,&max,&min);
printf("max = %d,min = %d\narray = ",max,min);
for(i = 0;i < 10;i++)
{
printf("%d ",a[i]);
}
getch();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
typedef struct arr
{
int val;//数组
int idx;//对应数值在数组的下标
}arr_t;
arr_t get_max(int a[],int len)
{
int i;
arr_t max;
max.val = a[0];
max.idx = 0;
for(i=1;i<len;i++)
{
if(max.val<a[i])
{
max.val = a[i];
max.idx = i;
}
}
return max;
}
arr_t get_min(int a[],int len)
{
int i;
arr_t min;
min.val = a[0];
min.idx = 0;
for(i=1;i<len;i++)
{
if(min.val>a[i])
{
min.val = a[i];
min.idx = i;
}
}
return min;
}
int main()
{
int a[10];
int i;
arr_t max,min;
printf("input 10 num:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max = get_max(a,10);
min = get_min(a,10);
printf("max.val=%d,max.idx=%d\n",max.val,max.idx);
printf("min.val=%d,min.idx=%d\n",min.val,min.idx);
return 0;
}
#include <stdio.h>
int FunMax(int *p,int n)
{
int i,j,tmp=p[0];
for(i=1;i<n;i++)
{
if(p[i]>tmp)
{
tmp =p[i];
j = i;
}
}
return j;
}
int FunMin(int *p,int n)
{
int i,j,tmp=p[0];
for(i=1;i<n;i++)
{
if(p[i]<tmp)
{
tmp =p[i];
j = i;
}
}
return j;
}
void main()
{
int a[10],i;
for(i=0;i<10;i++)
{
printf("输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
printf("第%d个数是最大值:%d\r\n",FunMax(a,10)+1,a[FunMax(a,10)]);
printf("第%d个数是最小值:%d\r\n",FunMin(a,10)+1,a[FunMin(a,10)]);
}
//FunMin返回的是数组位置,比如说a[0],返回0,属于第1个输入,所以第几个输入比数组位置多1