从键盘输入三个整数,要求找出其中的最大者,用指针实现。c语言
时间: 2024-09-11 21:13:27 浏览: 24
在C语言中,要从键盘输入三个整数并找出其中的最大者,可以通过使用指针来实现。以下是实现这一功能的一个简单示例代码:
```c
#include <stdio.h>
int main() {
int a, b, c;
int *pa = &a, *pb = &b, *pc = &c;
int *max;
// 输入三个整数
printf("请输入三个整数,用空格隔开: ");
scanf("%d %d %d", pa, pb, pc);
// 判断最大值,并记录指针
if (*pa > *pb && *pa > *pc) {
max = pa;
} else if (*pb > *pa && *pb > *pc) {
max = pb;
} else {
max = pc;
}
// 输出最大值
printf("最大的整数是: %d\n", *max);
return 0;
}
```
这段代码首先通过指针变量`pa`、`pb`和`pc`分别指向变量`a`、`b`和`c`的地址,然后通过`scanf`函数从键盘读取用户输入的三个整数。接下来,通过比较这些指针所指向的值,确定最大值,并将指向最大值的指针赋给`max`变量。最后,通过解引用`max`指针来输出最大值。
相关问题
从键盘输入三个整数,要求设三个指针变量p1,p2, p3,使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数用c语言
好的,下面是一个示例代码:
```c
#include <stdio.h>
int main() {
int a, b, c;
int *p1, *p2, *p3; // 定义三个指针变量
int temp;
printf("请输入三个整数:");
scanf("%d %d %d", &a, &b, &c);
// 初始化指针变量
p1 = &a;
p2 = &b;
p3 = &c;
// 排序
if (*p1 < *p2) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
if (*p1 < *p3) {
temp = *p1;
*p1 = *p3;
*p3 = temp;
}
if (*p2 < *p3) {
temp = *p2;
*p2 = *p3;
*p3 = temp;
}
// 输出
printf("%d %d %d\n", *p3, *p2, *p1);
return 0;
}
```
这个程序要求用户从键盘上输入三个整数,并将它们存储在变量 `a`、`b` 和 `c` 中。
然后,程序定义了三个指针变量 `p1`、`p2` 和 `p3`,并将它们分别初始化为 `a`、`b` 和 `c` 的地址。
接下来,程序使用三个 `if` 语句将 `p1`、`p2` 和 `p3` 指向三个数的最大者、次大者和最小者。具体地,程序先比较 `p1` 和 `p2` 所指向的值,如果 `p1` 所指向的值小于 `p2` 所指向的值,则交换它们所指向的值。然后,程序再比较 `p1` 和 `p3` 所指向的值,如果 `p1` 所指向的值小于 `p3` 所指向的值,则交换它们所指向的值。最后,程序再比较 `p2` 和 `p3` 所指向的值,如果 `p2` 所指向的值小于 `p3` 所指向的值,则交换它们所指向的值。
最后,程序使用 `printf()` 函数按照由小到大的顺序输出这三个数。
需要注意的是,这个程序可以处理相同的整数。如果要处理相同的浮点数,则需要使用浮点数的比较函数(如 `fabs()` 或 `EPS`)来判断它们是否相等。
用c语言从键盘输入三个整数,要求设三个指针变量p1,p2,p3,使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数。
可以使用冒泡排序的思想来解决这个问题。具体步骤如下:
1. 从键盘输入三个整数a、b、c;
2. 定义三个指针变量p1、p2、p3,并让它们分别指向a、b、c;
3. 利用两层循环,比较三个数的大小,将最大值赋给p1,次大值赋给p2,最小值赋给p3;
4. 按照由小到大的顺序输出p3、p2、p1所指向的值。
代码如下:
```c
#include <stdio.h>
int main() {
int a, b, c;
printf("请输入三个整数:");
scanf("%d%d%d", &a, &b, &c);
int *p1 = &a, *p2 = &b, *p3 = &c;
if (*p1 < *p2) {
int *tmp = p1;
p1 = p2;
p2 = tmp;
}
if (*p1 < *p3) {
int *tmp = p1;
p1 = p3;
p3 = tmp;
}
if (*p2 < *p3) {
int *tmp = p2;
p2 = p3;
p3 = tmp;
}
printf("按照由小到大的顺序输出这三个数:\n");
printf("%d %d %d\n", *p3, *p2, *p1);
return 0;
}
```