| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1260 人关注过本帖
标题:[求助]结业考试上机题目寻求另一种写法。。。。。。
只看楼主 加入收藏
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
结帖率:66.67%
收藏
 问题点数:0 回复次数:16 
[求助]结业考试上机题目寻求另一种写法。。。。。。

哪位高手能帮忙把这个题目做出,也算了却我一桩心事。
注:题目已经做出,程序在楼下,请教排序函数的另一种算法插入排序法的写法。。。

编写一个C语言程序,将若干字符串按字母顺序(由小到大)输出。

程序运行结果如下:
Please input String number(<5):5
Please input 1 String :Welcome
Please input 2 String :IMTI
Please input 3 String :Apple
Please input 4 String :Teacher
Please input 5 String :ARM

Output String…
ARM
Apple
IMTI
Teacher
Welcome
Press any key to continue

要求:
1 编写main函数
A 定义一个用于存放字符串的数组:char *str[5];
B 调用Accept()接受字符串的个数,而后根据指定的字符串个数,利用循环控制将键盘输入的字符串存放到数组中(每次1个字符串,循环接受)。
C 调用排序子函数Sort(),采用冒泡法或插入排序法对这5个字符串进行从小到大的排序。
D 以Print()函数来实现排序后的字符串的输出

2 编写Accept()子函数
E 要求有1个参数:保存键盘输入的字符串数组
F 返回值:整型数,返回接受的字符串的个数。
G 功能:
a) 接受欲输入的字符串的个数
b)循环开始接受工作。
i 利用malloc()申请内存空间给对应的字符串数组
ii 显示提示信息
iii 接受键盘的输入

3 编写Sort()函数
H 要求有2个参数:
a)第一个参数是:参加排序的字符串数组,char *name[]。
B)第二个参数是:字符串数组中字符串的个数,int n。
I 功能:
a)利用循环对多个字符串进行大小的比较
b)比较字符串大小时要调用字符串比较的系统函数:
strcmp(source,target);
c)使用冒泡法或插入排序法

4 编写Print()子函数
J 要求有2个参数:同Sort()子函数。

[此贴子已经被作者于2007-5-29 21:36:28编辑过]

搜索更多相关主题的帖子: 上机 结业 考试 
2007-05-28 17:26
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 

生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2007-05-28 19:56
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
查找字符串排序的帖子.

倚天照海花无数,流水高山心自知。
2007-05-28 22:16
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 
不会啊。。。。。。

生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2007-05-29 10:21
小子也大叔
Rank: 2
等 级:新手上路
威 望:4
帖 子:143
专家分:0
注 册:2007-4-23
收藏
得分:0 

看前面原本还以为很简单呢 但看完了才知道里面提到的好多函数我都没用过 哎 ! 继续努力吧


希望一心想学c的加我的群吧~~ 40834003
2007-05-29 10:58
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 
不按要求做也行的,只要能把程序的输出结果正常实现了就行
我现在就是做不出正确的结果

生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2007-05-29 11:11
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 

我只能做到这个程度了
谁帮忙改改啊
就是出不来结果

#include<stdio.h>
#include<string.h>


int Accept(char *string[5]);
void Sort(char *name[],int n);
void Print(char *name[],int n);

main()
{
int n=5;
char *str[5];
char *p;
p=str[0];
Accept(str);
Sort(str,n);
Print(str,n);
}

int Accept(char *string[])
{
int i,n;
printf("Please input String number(<5):");
scanf("%d",&n);
for(i=0;i<n;i++)
{
string[i] = (char*)malloc(20);
printf("Please input %d String :",i+1);
scanf("%s",&string[i]);
}
return n;
}

void Sort(char *name[],int n)
{
int i,j;
char *s;
for(i=0;i<n-1;i++)
for(j=1;j<n;j++)
{
if(strcmp(name[i],name[j]))
{
s=name[i];
name[i]=name[j];
name[j]=s;
}
}
}

void Print(char *name[],int n)
{
int i;
printf("Output String...");
for(i=0;i<n;i++)
printf("%s\n",name[i]);
}


生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2007-05-29 15:10
yang522425
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-5-29
收藏
得分:0 

这是我的方法写的你自己看看吧
#include <stdio.h>
#include<string.h>
void main()
{
int i,n,j,k,t=1,l,p;
int leng[9];
char str[9][50];
char temp[50];
scanf("%d",&n);
printf("Please input String number(<5):%d\n",n);
p=n;
while(p--)
{
printf("Please input %d String :",t);
scanf("%s",str[t]);
leng[t]=strlen(str[t]);
t++;
}
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
for(k=0;k<50;k++)
{
if(str[i][k]>str[j][k]&&k<=leng[i]&&k<=leng[j])
{ for(l=0;l<leng[i];l++)
temp[l]=str[i][l];
for(l=0;l<leng[j];l++)
str[i][l]=str[j][l];
for(l=0;l<leng[i];l++)
str[j][l]=temp[l];
t=leng[i];leng[i]=leng[j];leng[j]=t;
}
if(str[i][k]<str[j][k]||k>leng[i]||k>leng[j])break;
}

printf("\nOutput String…\n");

for(i=1;i<=n;i++)
{
for(j=0;j<leng[i];j++)
printf("%c",str[i][j]);
printf("\n");
}
}

2007-05-29 16:18
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 
在看ing。。。。。。。。。。。。

生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2007-05-29 16:31
YOGIOH
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2007-5-8
收藏
得分:0 
回复:(红影)[求助]结业考试上机题目没有运行出正确...

#include<stdio.h>
#include<string.h>
#include<malloc.h>


int Accept(char *string[5]);
void Sort(char *name[],int n);
void Print(char *name[],int n);

int main()
{
int n=5;
char *str[5];
char *p;
p=str[0];
Accept(str);

Sort(str,n);
Print(str,n);
return 0;


}

int Accept(char *string[5])
{
int i,n;
printf("Please input String number(<5):");
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
string[i] = (char*)malloc(20);
printf("Please input %d String :",i+1);
gets(string[i]);
}
return n;
}

void Sort(char *name[],int n)
{
int i,j;
char *s;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if((strcmp(name[i],name[j]))>0)
{
s=name[i];
name[i]=name[j];
name[j]=s;
}
}
}

void Print(char *name[],int n)
{
int i;
printf("Output String...\n");
for(i=0;i<n;i++)puts(name[i]);
printf("press any key to continue");

}

我就改了一下
楼主对照一下

尤其是那个字符串比较应该仅仅使用>0的
int strcmp(char *str1,char *str2)
小于0:str1<str2,等于0:str1=str2,大于0:str1>str2

[此贴子已经被作者于2007-5-29 18:33:07编辑过]


2007-05-29 18:30
快速回复:[求助]结业考试上机题目寻求另一种写法。。。。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016995 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved