① c语言:用指针做函数参数从10个数中找出其中最大值和最小值。
#include<stdio.h>
main(){
printf("输入10个整数,找出其中最大值和最小值···\n");
int
a[10]={0};
int
max,min,i;
for(i=0;i<=9;i++){
printf("请输入第%d个整数:",(i+1));
scanf("%d",&a<i>);
}
max=min=a[0];
for(i=0;i<=9;i++){
if(a<i>>max)max=a<i>;
if(a<i><min)min=a<i>;
}
printf("最大值为:%d;最小值为:%d\n",max,min);
}
(1)c语言指针数值最大值扩展阅读:
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的内容。
② C语言用指针求最大值!
nt Max(int *p,int n)
{
int i,max;
max=*p;
for(i=1;p+i<n;i++) //这里直接改为:for(i=0;i<n;i++)
{
if(*(i+p)>max)
{
max=*p; //这里的*p还是第一个数 没有变 赋值必须也为:*(p+i)
}
}
return max;
}
③ 用指针法编写求 a 数组 n 个元素中的数值最大和最小的函数。 并求一维数组 10 个数中最大值和最小值。
1、#define N 10
#include <stdio.h>
void main()
{
int *num;
int min, max;
int i;
printf("请输入N个数: ");
for (i = 0; i < N; i++)
scanf("%d", num + i);
min=*num;max=*num;
for (i = 0; i < N; i++)
{if(min>*num+i)
2、#include <stdio.h>
#define N 10 //定义符号常量
//求最大值函数
int max_func(int a[],int n)
{
int i,max;
for(max=a[0],i=1;i<N;i++) //初始默认最大值为a[0],遍历数组元素
if(max<a[i]) //如果当前最大值<当前数组元素,则将该元素赋值给max
max=a[i];
return max;
}
//求最小值函数
int min_func(int a[],int n)
{
int i,min;
for(min=a[0],i=1;i<N;i++) //初始默认最小值为a[0],遍历数组元素
if(min>a[i]) //如果当前最小值>当前数组元素,则将该元素赋值给min
min=a[i];
return min;
}
//求平均值函数
float ave_func(int a[],int n)
{
for(i=sum=0;i<N;i++) //初始设置sum=0,遍历数组元素
sum+=a[i]; //累加数组元素
ave=1.0*sum/n; //求平均值
return ave;
}
int main()
{
int arr[N],i;
int max,min;
float ave;
for(i=0;i<N;i++) //输入10个数组元素
scanf("%d",&arr[i]);
max=max_func(arr,N); //调用max_func()函数
min=min_func(arr,N); //调用min_func()函数
ave=ave_func(arr,N); //调用ave_func()函数
printf("最大值=%d 最小值=%d 平均值=%.2f ",max,min,ave); //输出结果
(3)c语言指针数值最大值扩展阅读:
指针相对于一个内存单元来说,指的是单元的地址,该单元的内容里面存放的是数据。在C语言中,允许用指针变量来存放指针,因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。
指针变量是存放一个变量地址的变量,不同于其他类型变量,它是专门用来存放内存地址的,也称为地址变量。定义指针变量的一般形式为:类型说明符*变量名。
类型说明符表示指针变量所指向变量的数据类型;*表示这是一个指针变量;变量名表示定义的指针变量名,其值是一个地址,例如:char*p1;表示p1是一个指针变量,它的值是某个字符变量的地址。
④ c语言中如何用指针在整型数组中找到最大值
#include<stdio.h>
intmain(void)
{
inti,num[10]={0,5,2,18,3,6,15,10,1,7},*p=num;
for(i=1;i<10;i++)
if(num[i]>*p)
p=&num[i];
printf("最大值是:%d ",*p);
return0;
}
⑤ c语言用指针找出最大值
#include<stdio.h>
#defineN5
intmain()
{
inti,max;
intstr[N],*p;
p=str;
for(i=0;i<N;i++)
scanf("%d",p+i);
for(;p<str+N;p++)
printf("%d",*p);
p=str;//缺少指针重置
max=*p;
for(i=1;i<N;i++)
{
if(max<*(p+i))
max=*(p+i);
}
printf(" %d ",max);
}
您好,很高兴为您解答,流星不死为您答疑解惑
如果本题还有不懂的地方请追问,望采纳我的回答。
祝楼主学习进步。
上面的代码可以直接复制到编译器里,带换行。
⑥ C语言利用指针变量求出数组的最大值最小值
你的代码的min和max都是指向a[0]的,而*max=a[i]或*min=a[i]都把a[0]改变了,所以达不到目的。这样改——
把*min=a[i];改成min=a+i;或min=&a[i];。
把*max=a[i];改成max=a+i;或max=&a[i];。
⑦ C语言指针求最大值问题
你看maxToFront函数能不能这样写:用一个变量来存整数组的最大值,一个存最大值的下标,遍历玩整个数组之后从最大值的下标开始,前面的所有的数都向后移动一个位置,最后再把最大值赋给数组的第一个元素,
void maxToFront(int *a, int n) {
/* BEGIN ANSWER -- do not delete this line */
int i=1;
int max;
int x=0;
max=*a;
while(i<n)
{
if(max<*(a+i))
{
max=*(a+i);
x=i;
}
i++;
}
while(x>0)
{
*(a+x)=*(a+x-1);
x--;
}
*a=max;
/* END ANSWER -- do not delete this line */
}
⑧ 关于c语言中 用指针求最大值的问题
沙发己把主要错误说出来了,我把完整代码给你写下。
输出最大是99,为什么不是100,因为你写入文件时是0到100,那样有101个,但你定义的数组为100个元素,照你最后的循环也就是取最大值,只能取100个,第100个就是99,或许这是你的大意,
所以学C 是要非常仔细,因为经常因一点小错误而使结果和原意完全不同,而且又很难发现
#include <stdio.h>
main()
{
int c,i,j;
int max;
int a[100];
int *p;
FILE *fp;
fp=fopen("D:\\abc.txt" ,"w");
if(fp!=NULL)
{
for (i=0;i<=100;i++)
fprintf(fp,"%d\t",i);
}
fclose(fp);
fp=fopen("D:\\abc.txt" ,"r");
for(j=0;j<100;j++)
{
fscanf(fp,"%d",&a[j]);
if(feof(fp))
break;
}
p=a;
for (j=1;j<100;j++)
{
if( *p<a[j] )
p=&a[j];
}
printf("max=%d",*p);
getchar();
return 0;
}
⑨ C语言 利用指针实现求数组元素中的最大值和最小值
这个乍一看没有错误 但我把你打程序抄近TC运行了一下 发现不是像你说的那样的错误 及时第一位是最大的也会输出错误 无论怎么 输出的第一位都是24940 最小的也有错误 最小有时会输出最大
后来仔细看了一下 发现你后面一个for循环里有大错误 if语句是进行比较 就第一个if来说 你把a[0]与a[1]先进行比较 这里你用的是p=p+i; 就是使p指向p+i所指向的内存 但需要注意 假设我输入的一组数是 9 10 8 5 15 4 2 3 11 1 当进行第一次循环后 p会指向p+1 既然是用p=p+i; 这是p+1就变成了p 当计算机再进行循环至a[4] 也就是15时 就会有p=p+4; 而这时想对于刚开始时的指针p就已经不是指向你想要他指的那个数(也就是大的那个)了 此时的指针p与刚开始的比其实不是指向了p+4 而是指向了p+5 也就是4了
所以程序出现了这般错误
要改正的话只要把后面那个for循环换成如下程序段就可以了:
for(i=1;i<N;i++)
{
if(*p<a[i])
*p=a[i];
if(*t>a[i])
*t=a[i];
}
如果规定要用指针的话那可以再定义两个中间指针变量应该可以解决
只能说这么多了 太晚了 要睡觉了~~ 不然明天第一节课又没得上了
希望我的答案对你有帮助 嘿嘿!!
⑩ c语言 用指针求最大值
以下是使用指针,求10个数中的最大值及其位置
#include<stdio.h>
voidmain()
{
inta[10];
inti,row,max;
for(i=0;i<9;i++)
{
scanf("%d",a+i);//a+i代表&a[i]
}
for(i=0,max=*a,row=i;i<9;i++)
{
if(max<*(a+i))//*(a+i)代表a[i]
{
voidswap(int*a,int*b);
swap(&max,a+i);
row=i;
}
}
printf("%d,%d ",row,max);
}
voidswap(int*pa,int*pb)
{
inttmp;
tmp=*pa;
*pa=*pb;
*pb=tmp;
}