#include <stdlib.h>
int main( ) {
int aa,bb,cc,mmx,mmi //指针指向它们,供数据存放
int *a=&aa,*b=&bb,*c=&cc,*mx=&mmx,*mi=&mmi //声明指针,并初始化。
printf("input 3 int data:\n")
scanf("%d %d %d",a,b,c) //输入数据,a,b,c是地址
*mx= *a*mi= *a // 带星号的是 值
if (*b >*mx) *mx= *b // 带星号的是 值
if (*b <*mi) *mi=*b
if (*c >*mx) *mx= *c // 带星号的是 值
if (*c <*mi) *mi=*c
printf("max = %d min = %d\n", *mx, *mi) // 输出 最大最小值,带星号的是 值
return 0
}
程序如下:
#include<stdio.h>
#define MAXSIZE 10
main()
{
int a[MAXSIZE]
int k
printf("please inter ten number:")
for(k=0k<MAXSIZEk++)
{
scanf("%d",&a[k])
}
Fun(a)
for(k=0k<MAXSIZEk++)
printf("%d,",a[k])
}
void Fun(int a[])
{
int i
int temp
int MaxNum=a[0]
int maxIndex = 0
int minIndex = 0
int MinNum=a[0]
for(i=0i<10i++)
{
if(a[i]>MaxNum)
{
MaxNum=a[i]
maxIndex = i
}
else if(a[i]<MinNum)
{
MinNum=a[i]
minIndex = i
}
}
temp = a[maxIndex]
a[maxIndex] = a[minIndex]
a[minIndex] = temp
}
扩展资料:指针定义格式
类型名 *函数名(函数参数列表)
其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。
“(函数参数列表)”中的括号为函数调用运算符,在调用语句中,即使函数不带参数,其参数表的一对括号也不能省略。其示例如下:int *pfun(int, int)由于“*”的优先级低于“()”的优先级,因而pfun首先和后面的“()”结合,也就意味着,pfun是一个函数。即:int *(pfun(int, int))
接着再和前面的“*”结合,说明这个函数的返回值是一个指针。由于前面还有一个int,也就是说,pfun是一个返回值为整型指针的函数。
#include<stdio.h>void _max_cycle_sum(int *a,int len)
{
int *p,*q,sum,i=0,j,total=0
p=a
q=a
for(i=0i<=len-1i++)
{//用total作为待比较的数对其初始化,因为连续的三位和比其数组总和小
total+=*q++
}
i=0
while(i<=len-1)
{//不难分析出的到的每三个数为一组答案,共有len-1组答案
sum=0
for(j=0j<3j++)
{//取连续的三个数累加
if(p>a+len-1)
p=a//若超出了数组的范围,则需要回溯到开始位置
printf("%d ",*p)
sum=sum+(*p)
p++
}
printf("\n<%d组>%d \n",i+1,sum)//输出每一组答案
//*-------下面的写的不太好,可以改进,就是回溯的问题-------
if(p==a)
{//若取到最后两个元素和起始位置的一个元素,回溯到倒数第二个位置
p=a+len-2
}
else if(p==a+1)
{//若取到倒数第一个元素和开始位置的两个元素,则回溯到倒数第一个位置
p=a+len-1
}
else
{//否则后退两个位置
p=p-2
}
i++
if(total>sum)//比较交换
total=sum
}
printf("\nthe min number:%d\n",total)
}
int main()
{
int a[]={5,2,6,1,4,1,9,2,3}
_max_cycle_sum(a,sizeof(a)/sizeof(int))
return 0
}