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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内容:输入n个字符串,对这n个字符串进行排序(按升序),输出排序后的字符串。然后从键盘再次输入一字符相关的知识,希望对你有一定的参考价值。

内容:输入n个字符串,对这n个字符串进行排序(按升序),输出排序后的字符串。然后从键盘再次输入一字符串,在原有的n个字符串中进行查找,并给出查找结果提示。
要求:输入、输出、排序、查找都写成函数,并且字符串的存储用指针数组完成。
用C语言编写!!!

1、每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

2、运用定义数组,把10个数进行选择排序,#include<stdio.h>,#define max 10,int main()

int i; int j; int temp; int a[max];。

3、 printf("input 10num:\\n"); for(i=0;i<10;i++)   scanf("%d",&a[i]); for(i=0;i<10;i++)

  printf("%d\\t",a[i]); 。

4、 for(i=0;i<10;i++)   for(j=i+1;j<10;j++)     if(a[i]<a[j])       temp=a[i];   a[i]=a[j];。

5、   a[j]=temp;     for(i=0;i<10;i++)   printf("%d\\t",a[i]); printf("\\n"); return 0;。

6、随机产生数组中的元素, 更合理一些。 

参考技术A 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();

参考技术B #include <stdio.h>
#include <string.h>
#include <malloc.h>

#define MAX_STR_LEN 80 // 字符串长度上限
#define MAX_STR_NUM 100 // 字符串长度

// 采用简单的冒泡排序
void sort(char* s[], int n)

int i, j, ok;
char* temp;

for(i=0; i<n-1; i++)

ok = 1;
for(j=i; j<n-i; j++)
if(strcmp(s[j], s[j+1]) > 0)

temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
ok = 0;

if(ok)
break;



int input(char* s[])

char ts[MAX_STR_LEN];
int i, n;
printf("请输入字符串的数量(最大%d)", MAX_STR_NUM);
scanf("%d", &n);
printf("请输入%d个字符串:\n");
for(i=0; i<n; i++)

scanf("%s", ts);
s[i] = (char*)malloc(strlen(ts)+1);
strcpy(s[i], ts);

return n;


void output(char* s[], int n)

int i;
puts("已输入的字符串组如下:");
for(i=0; i<n; i++)
puts(s[i]);


// 用二分查找法
int search(char* s[], int n, char *key)

int low = 0, high = n-1, mid;
int cmp;

while(low <= high)

mid = low + (high - low)/2;
cmp = strcmp(key, s[mid]);
if(cmp == 0)
break;
else if(cmp < 0)
high = mid - 1;
else
low = mid + 1;

if(low <= high)
return mid;
else
return -1;


int main()

char* s[MAX_STR_NUM], t[MAX_STR_LEN];
int i, n;

n = input(s);
sort(s, n);
output(s, n);

printf("请输入要查找的串:\n");
scanf("%20s", t);
i = search(s, n, t);
if(i >= 0 && i < n)
printf("找到了字符串\"%s\", 它的位置是%d.\n", t, i);
else
printf("没有找到字符串 \"%s\". \n", t);

while(--n >= 0)
free(s[n]);

return 0;
追问

我用VC++6.0 执行的有问题 输入字符串之后就错误了,能在改一下吗?谢谢

追答

在排序的时候出了问题,排序函数换掉应该可以了;input 函数显示有点错误修正了。
void sort(char* s[], int n)

int i, j, min;
char* temp;

for(i=0; i<n-1; i++)

min = i;
for(j=i+1; j<n; j++)
if(strcmp(s[j], s[min]) < 0)
min = j;
temp = s[i];
s[i] = s[min];
s[min] = temp;



int input(char* s[])

char ts[MAX_STR_LEN];
int i, n;
printf("请输入字符串的数量(最大%d)", MAX_STR_NUM);
scanf("%d", &n);
printf("请输入%d个字符串:\n", n);
for(i=0; i<n; i++)

scanf("%s", ts);
s[i] = (char*)malloc(strlen(ts)+1);
strcpy(s[i], ts);

return n;

本回答被提问者采纳
参考技术C #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;

1119: 一维数组排序

题目描述

对一维数组按照从小到大的顺序排序。程序定义函数sort()来实现数组a的排序。函数原型如下:

void sort(int a[], int n);

数组元素的输出调用PrintArr()。

 

输入

第一行输入一个整数n(1<=n<=10),表示数组有n个整数;第二行输入n个整数。

 

输出

输出占一行。对这n个整数数按照从小到大的顺序输出,数据之间用一个空格隔开。

 

样例输入

6
6 5 1 2 3 4

 

样例输出

1 2 3 4 5 6
#include<stdio.h>
#include <algorithm>
using namespace std;
int main()
{
    int a[10];
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        
    }
    sort(a,a+n);
    for(int i=0;i<n;i++)
    {
        if(i==0)
    printf("%d",a[i]);
        else
    printf("% d",a[i]);
        
    }
    
    return 0;
}

 



以上是关于内容:输入n个字符串,对这n个字符串进行排序(按升序),输出排序后的字符串。然后从键盘再次输入一字符的主要内容,如果未能解决你的问题,请参考以下文章

C语言一维数组排序

机试指南例2.2成绩排序

字符串排序

1119: 一维数组排序

排序 n 个大小为 n 的字符串?

c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出