c语言,从键盘输入三个数,通过指针操作的方式,输出最小数
时间: 2024-03-02 19:48:17 浏览: 106
好的,可以通过以下代码实现:
```c
#include <stdio.h>
void find_min(int *p1, int *p2, int *p3, int *min) {
*min = *p1;
if (*p2 < *min) {
*min = *p2;
}
if (*p3 < *min) {
*min = *p3;
}
}
int main() {
int a, b, c, min;
printf("请输入三个数:\n");
scanf("%d%d%d", &a, &b, &c);
find_min(&a, &b, &c, &min);
printf("最小数为:%d\n", min);
return 0;
}
```
在这个代码中,我们定义了一个 `find_min` 函数,它接收三个指向整数的指针和一个指向整数的指针 `min`,并将最小值存储在 `min` 指向的变量中。在 `main` 函数中,我们使用 `scanf` 从键盘输入三个数,并将它们的地址传递给 `find_min` 函数。最后,我们输出最小数的值。
相关问题
用C语言做,输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1.输入10个整数;2.进行处理;3.输出10个数。3个指针,1个指向最小数,1个指向最大数,1个循环指向0~9号元素。 要求编写3个子函数
好的,我会尽力回答您的问题。以下是我对您的问题的回答:
您可以使用以下代码来实现您的要求:
```c
#include <stdio.h>
void input(int *arr) {
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
}
void process(int *min, int *max, int *arr) {
for (int i = 1; i < 10; i++) {
if (arr[i] < *min) {
*min = arr[i];
}
if (arr[i] > *max) {
*max = arr[i];
}
}
int temp = arr[0];
arr[0] = *min;
*min = temp;
temp = arr[9];
arr[9] = *max;
*max = temp;
}
void output(int *arr) {
printf("处理后10个整数为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[10];
int min = 0, max = 0;
input(arr);
min = max = arr[0];
process(&min, &max, arr);
output(arr);
return 0;
}
```
第一个函数 `input` 用于输入10个整数,参数为一个数组指针,函数内部使用 `scanf` 函数从键盘读取10个整数,并将它们存储到数组中。
第二个函数 `process` 用于进行处理,参数为三个指针,分别指向最小数、最大数和数组中的第一个元素。函数内部使用循环遍历数组,找到其中的最小数和最大数,并将它们与数组中的第一个数和最后一个数进行对换。
第三个函数 `output` 用于输出10个整数,参数为一个数组指针,函数内部使用循环遍历数组,并逐个输出数组元素。
在 `main` 函数中,我们首先声明一个数组 `arr` 和两个整型变量 `min` 和 `max`,然后调用 `input` 函数读取10个整数,并将数组作为参数传递给函数。接着,我们初始化 `min` 和 `max` 为数组的第一个元素,并将它们的地址作为参数传递给 `process` 函数进行处理。最后,我们调用 `output` 函数输出处理后的10个整数。
希望我的回答能够对您有所帮助!
阅读全文