内容:输入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、随机产生数组中的元素, 更合理一些。
我用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;
}
童鞋!有好几处编译错误,能改下吗?谢谢!
追答你是用的什么语言? 什么编译器?
#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;
}