c语言 输入三个整数,输出最大值最小值,要求使用指针的方式,要具体的分析过程

Python021

c语言 输入三个整数,输出最大值最小值,要求使用指针的方式,要具体的分析过程,第1张

#include <stdio.h>

#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

}