假设有五个字符串"Followme","BASIC","GreatWall","FORTRAN","Computer design" 现在要求使用指针数组来实现按字母顺序(由小到大)输出。
时间: 2023-12-31 16:23:59 浏览: 31
以下是使用指针数组按字母顺序输出字符串的C代码示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char *name[] = {"Follow me", "BASIC", "Great Wall", "FORTRAN", "Computer design"};
int i, j;
int flag;
for(i = 0; i < 5; i++) {
for(j = i + 1; j < 5; j++) {
flag = strcmp(name[i], name[j]);
if(flag > 0) {
char *tmp = name[i];
name[i] = name[j];
name[j] = tmp;
}
}
}
for(i = 0; i < 5; i++) {
printf("%s\n", name[i]);
}
return 0;
}
```
该代码使用了冒泡排序算法,通过比较字符串的大小来实现按字母顺序排序。在每次比较时,如果前一个字符串大于后一个字符串,则交换它们的位置。最终,按字母顺序排序后的字符串将被输出。
相关问题
char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"}; 在函数f1中比较字符串长度,在主函数中输出最长的字符串
以下是实现上述功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
void f1(char *name[], int len, char **max) {
int max_len = 0;
for (int i = 0; i < len; i++) {
int cur_len = strlen(name[i]);
if (cur_len > max_len) {
max_len = cur_len;
*max = name[i];
}
}
}
int main() {
char *name[] = {" me", "BASIC", "Great Wall", "FORTRAN", "Computer design"};
int len = sizeof(name) / sizeof(name[0]);
char *max = NULL;
f1(name, len, &max);
printf("The longest string is: %s\n", max);
return 0;
}
```
定义指针数组,使其指向字符串常量:char*name[4]={“Follow”,,“Great”,“FORTRAN”,“Computer”},并进行排序。实际是对指针指向的排序,字符串不动!要求:函数调用实现
下面是一个使用函数调用实现指针数组排序的例子:
```c++
#include <iostream>
#include <string>
void sortPointers(std::string* arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (*arr[i] > *arr[j]) {
std::swap(arr[i], arr[j]);
}
}
}
}
int main() {
std::string names[4] = {"Follow", "Great", "FORTRAN", "Computer"};
std::string* namePtrs[4];
// 将指针数组指向字符串常量
for (int i = 0; i < 4; i++) {
namePtrs[i] = &names[i];
}
// 对指针数组进行排序
sortPointers(namePtrs, 4);
// 输出排序后的指针数组
for (int i = 0; i < 4; i++) {
std::cout << *namePtrs[i] << std::endl;
}
return 0;
}
```
在这个例子中,我们首先定义了一个字符串数组 `names`,并将其赋值为所需的字符串常量。然后,我们定义了一个指针数组 `namePtrs`,并使用一个循环将其指向 `names` 中的每个字符串常量。
接下来,我们使用 `sortPointers` 函数对指针数组进行排序。该函数使用嵌套的循环,依次比较指针数组中的每个指针所指向的字符串,如果前一个字符串大于后一个字符串,则交换两个指针的位置。
最后,我们使用另一个循环输出排序后的指针数组。注意,我们使用 `*namePtrs[i]` 来访问每个指针所指向的字符串。