通过指针实现if a<ba,b交换>
时间: 2023-03-26 16:01:14 浏览: 58
可以通过以下代码实现:
```
if (a < b) {
int temp = a;
a = b;
b = temp;
}
```
使用指针实现的话,可以这样写:
```
void swap(int *a, int *b) {
if (*a < *b) {
int temp = *a;
*a = *b;
*b = temp;
}
}
```
然后在主函数中调用:
```
int a = 5, b = 3;
swap(&a, &b);
printf("a=%d, b=%d", a, b);
```
输出结果为:a=5, b=3。
相关问题
#include<iostream> using namespace std; void exchange(int x,int y); int main() { int a; int b; cout << "输入a" << endl; cin >> a; cout << "输入b" << endl; cin >> b; cout << "交换前,a 的值:" << a << endl; cout << "交换前,b 的值:" << b << endl; exchange(a,b); cout << "交换后,a 的值:" << a << endl; cout << "交换后,b 的值:" << b << endl; return 0; } void exchange(int x,int y) { int c; c = x; x = y; y = c; return; }
这段代码是一个简单的交换两个整数值的程序。在主函数中,首先输入两个整数a和b,然后调用函数exchange来交换它们的值。在函数exchange中,通过一个临时变量c来实现交换。
然而,这段代码存在一个问题:在函数exchange中进行的交换操作并不会影响到主函数中的变量a和b的值。这是因为参数传递是按值传递的,即函数内部对参数的修改不会影响到函数外部的变量。
要解决这个问题,可以使用指针参数来实现交换操作,或者将交换后的值作为函数的返回值返回给主函数。以下是使用指针参数的修改后的代码示例:
```cpp
#include<iostream>
using namespace std;
void exchange(int* x, int* y);
int main()
{
int a;
int b;
cout << "输入a" << endl;
cin >> a;
cout << "输入b" << endl;
cin >> b;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
exchange(&a, &b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
void exchange(int* x, int* y)
{
int c;
c = *x;
*x = *y;
*y = c;
return;
}
```
这样修改后,通过传递变量的地址给函数,函数内部可以直接修改变量的值,从而达到交换的目的。
#include <stdio.h> #include <stdlib.h> #include <string.h> int (*compare)(float a, float b)
这段代码是C语言中的头文件引用部分,包括了<stdio.h>、<stdlib.h>和<string.h>三个头文件。这些头文件提供了一些常用的函数和类型定义,可以在程序中使用。
具体来说:
- <stdio.h>提供了输入输出相关的函数,比如printf和scanf。
- <stdlib.h>提供了一些通用的函数,比如内存分配函数malloc和随机数生成函数rand。
- <string.h>提供了一些字符串处理函数,比如字符串复制函数strcpy和字符串比较函数strcmp。
至于代码中的int (*compare)(float a, float b),它是一个函数指针声明。这个函数指针指向一个返回类型为int,参数类型为float的函数。可以根据需要将这个函数指针指向不同的函数,以实现不同的比较功能。