题目要求输入3个整数,按照从小到大的顺序输出,然后将程序改为:输出3个字符串,按照从小到大顺序输出。都用指针处理
时间: 2024-03-22 18:41:22 浏览: 97
好的,您的问题是将输入3个整数和3个字符串,按照从小到大顺序输出,都使用指针处理。下面是代码示例:
```c
#include <stdio.h>
#include <string.h>
void swap_int(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void swap_str(char *a, char *b) {
char temp[100];
strcpy(temp, a);
strcpy(a, b);
strcpy(b, temp);
}
int main() {
int arr[3];
char str[3][100];
printf("请输入3个整数:\n");
for (int i = 0; i < 3; i++) {
scanf("%d", &arr[i]);
}
printf("请输入3个字符串:\n");
for (int i = 0; i < 3; i++) {
scanf("%s", str[i]);
}
// 整数从小到大排序
for (int i = 0; i < 2; i++) {
for (int j = i + 1; j < 3; j++) {
if (arr[i] > arr[j]) {
swap_int(&arr[i], &arr[j]);
}
}
}
// 字符串从小到大排序
for (int i = 0; i < 2; i++) {
for (int j = i + 1; j < 3; j++) {
if (strcmp(str[i], str[j]) > 0) {
swap_str(str[i], str[j]);
}
}
}
// 输出排序后的整数
printf("排序后的整数:\n");
for (int i = 0; i < 3; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 输出排序后的字符串
printf("排序后的字符串:\n");
for (int i = 0; i < 3; i++) {
printf("%s ", str[i]);
}
printf("\n");
return 0;
}
```
在代码中,我们使用了两个函数swap_int和swap_str来交换整数和字符串的值。这两个函数的原理都是通过指针来交换变量的值。
对于整数的排序,我们使用了冒泡排序的方法,对于字符串的排序,我们使用了strcmp函数来比较字符串的大小。在比较字符串大小时,如果结果大于0,则说明前一个字符串大于后一个字符串,此时需要交换两个字符串的值。
最后,我们分别输出排序后的整数和字符串即可。
阅读全文