c语言 用两种指针方法完成:输入a和b两个整数,按从大到小顺序输出
时间: 2023-11-27 14:51:41 浏览: 161
第一种指针方法:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
if (a < b) {
swap(&a, &b);
}
printf("%d %d\n", a, b);
return 0;
}
```
第二种指针方法:
```c
#include <stdio.h>
int main() {
int a, b, *p1, *p2;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
p1 = &a;
p2 = &b;
if (*p1 < *p2) {
int *temp = p1;
p1 = p2;
p2 = temp;
}
printf("%d %d\n", *p1, *p2);
return 0;
}
```
以上两种方法都是通过比较两个指针所指向的变量的值,然后进行交换,最后输出从大到小的顺序。
相关问题
C语言,输入三个整数,按由小到大的顺序输出(用指针和非指针两种方式完成)
使用指针实现:
```c
#include <stdio.h>
void sort(int *a, int *b, int *c){
int temp;
if(*a > *b){
temp = *a;
*a = *b;
*b = temp;
}
if(*b > *c){
temp = *b;
*b = *c;
*c = temp;
if(*a > *b){
temp = *a;
*a = *b;
*b = temp;
}
}
}
int main(){
int a, b, c;
printf("请输入三个整数:");
scanf("%d%d%d", &a, &b, &c);
sort(&a, &b, &c);
printf("%d %d %d\n", a, b, c);
return 0;
}
```
使用非指针实现:
```c
#include <stdio.h>
void sort(int a, int b, int c, int *small, int *medium, int *big){
if(a > b){
if(b > c){
*small = c;
*medium = b;
*big = a;
}else{
if(a > c){
*small = b;
*medium = c;
*big = a;
}else{
*small = b;
*medium = a;
*big = c;
}
}
}else{
if(a > c){
*small = c;
*medium = a;
*big = b;
}else{
if(b > c){
*small = a;
*medium = c;
*big = b;
}else{
*small = a;
*medium = b;
*big = c;
}
}
}
}
int main(){
int a, b, c;
int small, medium, big;
printf("请输入三个整数:");
scanf("%d%d%d", &a, &b, &c);
sort(a, b, c, &small, &medium, &big);
printf("%d %d %d\n", small, medium, big);
return 0;
}
```
输入a、b两个整数,使用指针变量按大小顺序输出这两个整数。 ① 目标变量值不变,改变指针变量的指向求解。② 利用指针变量直接改变目标变量的值求解 c语言
在C语言中,你可以通过以下两种方式实现这个功能:
**方法一:利用指针变量间接交换**
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp;
// 使用临时变量存储其中一个数,然后更新指针指向的值
temp = *a; // 获取a的值
*a = *b; // 将a的值赋给b
*b = temp; // 将temp(原b的值)赋给a
}
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
// 输出原始数值
printf("原始:a=%d, b=%d\n", a, b);
// 指针操作交换
swap(&a, &b); // 调用函数,传入的是它们的地址
printf("交换后:a=%d, b=%d\n", a, b);
return 0;
}
```
在这个例子中,`swap`函数接受两个整数的指针作为输入,并通过改变指针所指向的内存单元的值实现了交换。
**方法二:直接修改目标变量**
```c
#include <stdio.h>
void swap_direct(int *a, int *b) {
if (*a > *b) { // 如果a大于b,则交换
*a = *a + *b; // a的新值=a+b
*b = *a - *b; // b的新值=a-b
*a = *a - *b; // a的新值=a-(b的新值)
}
}
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("原始:a=%d, b=%d\n", a, b);
// 直接修改数组元素
swap_direct(&a, &b);
printf("交换后:a=%d, b=%d\n", a, b);
return 0;
}
```
在这个版本中,我们直接在原地修改了a和b的值,而不需要额外的存储空间。
阅读全文