C语言用数组的形式交换两个变量得值
时间: 2023-09-10 16:15:09 浏览: 50
可以使用数组的形式来交换两个变量的值,具体实现如下:
```c
#include <stdio.h>
void swap(int arr[], int index1, int index2) {
int temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
int main() {
int x = 10, y = 20;
int arr[2] = {x, y};
printf("Before swap: x = %d, y = %d\n", x, y);
swap(arr, 0, 1);
x = arr[0];
y = arr[1];
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
```
这里定义了一个 `swap` 函数,使用数组的形式来交换两个变量的值。在 `main` 函数中,先定义一个数组,将变量的值存放到数组中,然后输出变量的初始值,调用 `swap` 函数来进行交换,最后将交换后的值从数组中取出来,赋值给变量。
相关问题
C语言如何交换同一个字符串数组中的两个值
要交换同一个字符串数组中的两个值,可以使用指针来实现。具体步骤如下:
1. 定义一个指向字符型的指针变量,指向数组中第一个字符串的首地址。
2. 定义两个整型变量,存储要交换的两个字符串的下标。
3. 使用指针变量加上第一个字符串的下标,得到第一个字符串的地址,再使用指针变量加上第二个字符串的下标,得到第二个字符串的地址。
4. 使用一个字符型的临时变量,将第一个字符串的内容存储起来。
5. 将第二个字符串的内容复制到第一个字符串的地址上。
6. 将临时变量中存储的内容复制到第二个字符串的地址上。
下面是代码示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[5][20] = {"apple", "banana", "orange", "pear", "grape"};
char *p = str[0]; // 指向第一个字符串的指针
int index1 = 1; // 要交换的字符串1的下标
int index2 = 3; // 要交换的字符串2的下标
// 使用指针变量加上下标,得到要交换的两个字符串的地址
char *pstr1 = p + index1 * 20;
char *pstr2 = p + index2 * 20;
// 交换两个字符串的内容
char temp[20];
strcpy(temp, pstr1);
strcpy(pstr1, pstr2);
strcpy(pstr2, temp);
// 输出交换后的结果
for (int i = 0; i < 5; i++) {
printf("%s\n", str[i]);
}
return 0;
}
```
输出结果为:
```
apple
pear
orange
banana
grape
```
用c语言输入数组10个元素,使用选择排序完成
好的,下面是使用C语言输入数组10个元素并使用选择排序完成的代码:
```c
#include <stdio.h>
int main() {
int arr[10];
int i, j, min_index, temp;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
// 选择排序
for (i = 0; i < 9; i++) {
min_index = i;
for (j = i+1; j < 10; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
if (min_index != i) {
temp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = temp;
}
}
printf("排序后的数组为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
代码解释:
首先,我们定义一个数组 `arr` 和一些变量,其中 `i` 和 `j` 用于遍历数组,`min_index` 用于记录最小值的下标,`temp` 用于交换两个元素的值。
然后使用 `for` 循环输入数组的值。
接下来使用选择排序算法对数组进行排序。外层循环 `i` 从数组的第一个元素开始,内层循环 `j` 从 `i+1` 开始,找到数组中从 `arr[i]` 到 `arr[9]` 中最小值的下标,并将其记录在 `min_index` 中。如果最小值不在 `arr[i]` 中,则交换 `arr[i]` 和 `arr[min_index]` 的值。
最后,使用 `for` 循环输出排序后的数组。