内容:输入n个字符串,对这n个字符串进行排序(按升序),输出排序后的字符串。然后从键盘再次输入一字符

内容:输入n个字符串,对这n个字符串进行排序(按升序),输出排序后的字符串。然后从键盘再次输入一字符串,在原有的n个字符串中进行查找,并给出查找结果提示。要求:输入、输出... 内容:输入n个字符串,对这n个字符串进行排序(按升序),输出排序后的字符串。然后从键盘再次输入一字符串,在原有的n个字符串中进行查找,并给出查找结果提示。
要求:输入、输出、排序、查找都写成函数,并且字符串的存储用指针数组完成。
用C语言编写!!!
展开
 我来答
蜀中靓仔
2019-07-11 · TA获得超过609个赞
知道小有建树答主
回答量:517
采纳率:100%
帮助的人:96.1万
展开全部
import java.util.Arrays;

public class StringSort {

public static void main(String[] args) {
String string = "anmafdsfsdf";
String sortString = sortChar(string);
System.out.println(sortString);
}

private static String sortChar(String str) {
// 1.将字符串转化成数组
char[] chs = stringToArray(str);
// 2.对数组进行排序
sort(chs);
// 3.将数组转成字符串
return toString(chs);
}

private static String toString(char[] chs) {
return new String(chs);
}

// 对字符数组进行升序排序
private static void sort(char[] chs) {
Arrays.sort(chs);
}

// 将字符串转化成为数组
private static char[] stringToArray(String string) {
return string.toCharArray();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoxiao_aimy
2011-12-29 · 超过15用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:43.3万
展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void SelectSort(char a[][100], int n)
{
int i, j, min;
char temp[100];
for(i=0; i<n; i++) {
min = i;
for(j=i+1; j<n; j++) {
if( strcmp(a[j], a[min])<0 ) min = j;
}
if (min != i) {
strcpy(temp, a[i]);
strcpy(a[i], a[min]);
strcpy(a[min], temp);
}
}
}

int input(char s[][100])
{
int n, i;
printf("输入字符串的个数:");
scanf("%d", &n);
printf("输入%d个字符串:\n", n);
for(i=0; i<n; i++) scanf("%s", s[i]);
}

void output(char s[][100], int n, char *desc)
{
printf("%s\n", desc);
for(int i=0; i<n; i++)
printf("%s\n", s[i]);
}

bool findStr(char s[][100], int n, char *key)
{
bool find = false;
int l=0, r=n-1, mid, cmp;
while(l<=r) {
mid = (l+r)/2;
cmp = strcmp(key, s[mid]);
if(cmp ==0)
{ find = true; break;}
else if (cmp < 0) { r = mid -1;}
else l = mid +1;
}
if(find) {
printf("找到了字符串\"%s\", 它的位置是%d.\n", key, mid);
} else {
printf("没有找到字符串 \"%s\". \n", key);
}
return find;
}
int main(){
char s[20][100], str[100];
int n, i;
n = input(s);
SelectSort(s, n);
output(s, n, "\n排序后的字符串:");
printf("输入要查找的串:\n");
scanf("%s", str);
findStr(s, n, str);

system("pause");
return 0;
}
追问
童鞋!有好几处编译错误,能改下吗?谢谢!
追答
你是用的什么语言? 什么编译器?

#include
#include
#include

void SelectSort(char a[][100], int n)
{
int i, j, min;
char temp[100];

for(i=0; i<n; i++) {
min = i;
for(j=i+1; j<n; j++) {
if( strcmp(a[j], a[min])<0 ) min = j;
}
if (min != i) {
strcpy(temp, a[i]);
strcpy(a[i], a[min]);
strcpy(a[min], temp);
}
}
}

int input(char s[][100])
{
int n, i;
printf("输入字符串的个数:");
scanf("%d", &n);
printf("输入%d个字符串:\n", n);
for(i=0; i<n; i++)
scanf("%s", s[i]);
}

void output(char s[][100], int n, char *desc)
{
int i;
printf("%s\n", desc);
for(i=0; i<n; i++)
printf("%s\n", s[i]);
}

int findStr(char s[][100], int n, char *key)
{
int find;
int l=0, r=n-1, mid, cmp;
find = 0;
while(l<=r) {
mid = (l+r)/2;
cmp = strcmp(key, s[mid]);
if(cmp ==0)
{ find = 1; break;}
else if (cmp < 0) { r = mid -1;}
else l = mid +1;
}
if(find) {
printf("找到了字符串\"%s\", 它的位置是%d.\n", key, mid);
} else {
printf("没有找到字符串 \"%s\". \n", key);
}
return find;
}

int main(){
char s[20][100], str[100];
int n, i;
n = input(s);

SelectSort(s, n);
output(s, n, "\n排序后的字符串:");
printf("输入要查找的串:\n");
scanf("%s", str);
findStr(s, n, str);

system("pause");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式