#include <stdio.h> void findMaxMin(int *a, int *max, int *min); void swap(int *a, int *b); int main() { int a[3]; int max, min; int *p1, *p2, *p3; printf("请输入3个整数:\n"); scanf("%d %d %d", &a[], &a[1], &a[2]); p1 = &a[]; p2 = &a[1]; p3 = &a[2]; findMaxMin(p1, &max, &min); printf("最大值为:%d,地址为:%p\n", max, &max); printf("最小值为:%d,地址为:%p\n", min, &min); swap(&max, &min); printf("交换后,最大值为:%d,最小值为:%d\n", max, min); return ; } void findMaxMin(int *a, int *max, int *min) { *max = *min = *a; if (*a > *(a + 1)) { *max = *a; *min = *(a + 1); } else { *max = *(a + 1); *min = *a; } if (*max < *(a + 2)) { *max = *(a + 2); } if (*min > *(a + 2)) { *min = *(a + 2); } } void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }
时间: 2024-04-06 18:28:52 浏览: 12
这段代码实现了输入3个整数,找出其中的最大值和最小值,并交换它们的值。其中函数 findMaxMin 用于找出最大值和最小值,函数 swap 用于交换两个数的值。在 main 函数中,通过指针获取数组中元素的地址,将地址作为参数传入函数 findMaxMin 中,得到最大值和最小值后再调用函数 swap 交换它们的值。最后输出交换后的最大值和最小值。
相关问题
#include<stdio.h> main(void){ int a?b ,c/d;}修改错误
这段代码还是有语法错误,应该是这样:
```
#include <stdio.h>
int main(void){
int a, b;
int c, d;
// 这里可以进行一些操作
return 0;
}
```
这样就是一个完整的 C 语言程序了。需要注意的是,代码中的注释是用 `//` 开头的,而不是 `}`。同时,函数名 `main` 与返回值类型之间也需要有空格隔开。整型变量的定义也需要用 `,` 隔开,而不是 `?`。
下列C语言程序存在什么问题?应该如何修改? #include <stdio.h> void f() { int a[1000][1000]; } int main() { f(); }
这个程序的问题是在函数f()中定义了一个非常大的数组,会导致栈空间溢出。根据系统和编译器的不同,可以导致程序崩溃或者出现不可预测的行为。
为了解决这个问题,可以使用动态内存分配,例如使用malloc()函数来分配大数组的内存空间,避免使用栈空间。修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
void f() {
int **a = (int **)malloc(1000 * sizeof(int *));
for (int i = 0; i < 1000; i++) {
a[i] = (int *)malloc(1000 * sizeof(int));
}
}
int main() {
f();
return 0;
}
```
这里使用了指向指针的指针(二维指针)来声明数组,然后通过循环使用malloc()函数分配内存空间。在使用完数组后,还需要释放内存空间,避免内存泄漏。