① 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;
}