[英]Max and min value of array (C pointer)
#include<stdio.h>
void find(int a[], int n, int *min, int *max){
int tmp, i, j;
for(i = 0; i < n; i++){
for(j = i + 1; j < n; j++){
if(a[i] < a[j]){
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
*max = *a;
*min = *(a + n);
}
int main(){
int a[100];
int n, *min, *max;
printf("husnegtiinn elementiin toog oruul: ");
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
find(a, n, min, max);
printf("ih ni : %d \nbaga ni : %d", *max, *min);
}
我正在嘗試對用戶的數組進行排序並獲取這些指針中的最小值和最大值。 我很難弄清楚如何通過函數傳遞指針。 我在這里錯過了什么嗎?
*(a + n)
在數組中的初始化元素之外。 *(a + n - 1)
(或更簡單a[n-1])
是您為其賦值的最后一個元素。min
和max
不應該是int*
s,而是int
s。例子:
#include<stdio.h>
void find(int a[], int n, int *min, int *max){
if(n < 1) return;
for(int i = 0; i < n; i++){
for(int j = i + 1; j < n; j++){
if(a[i] < a[j]){
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
*max = a[0];
*min = a[n - 1]; // the last element
}
int main(){
int a[100];
int n, min, max; // corrected types
printf("husnegtiinn elementiin toog oruul: ");
if(scanf("%d", &n) != 1 || n < 1 || n > 100) return 1;
for(int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
find(a, n, &min, &max); // take the addresses of `min` and `max`
printf("ih ni : %d \nbaga ni : %d", max, min);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.