请大侠们帮忙:有一个函数max()的功能是在n个字符串中查找最大的字母,如何实现??
根据如下函数头和变量说明,编写实现该函数的功能:
char max(char *s[],int n){
int i;
char ch, *p;
.
.
.
.
.
.
}
问题点数:0、回复次数:10Top
1 楼melonliu(I believe I can FLY!!)回复于 2005-01-03 20:51:54 得分 0
怎么又是来写作业的……Top
2 楼catmao(大笨猫)回复于 2005-01-03 20:52:48 得分 0
int max;
max=s[0];
然后循环
for(i=1,i<?;i++)
{
if(max<a[i])
max=a[i];
}Top
3 楼jin_xiaolu2000(哦棵 )回复于 2005-01-03 20:55:17 得分 0
char ch=a;
for(i=0;i<n;i++)
{
while(*a[i]!='\0')
{
if(ch<*a[i])
{
ch=*a[i];
a[i]++;
}
}
}Top
4 楼avalonBBS("︶.︶メ)→( ̄ε ̄メ)回复于 2005-01-03 21:17:26 得分 0
#include <stdio.h>
//有一个函数max()的功能是在n个字符串中查找最大的字母,如何实现??
char max(char *s[],int n)
{
int i;
char ch, *p;
/********************/
for(i=0;i<n;++i)
{
p=&s[i][0];
if( i==0 && p==&s[i][0] )
{
for(;i<n;++i)
{
p=&s[i][0];
for(;*p;++p)
if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')
{
ch=*p;
goto next1;
}
}
return 0;
}
else
{
next1:
for(++p;*p;++p)
if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')
{
if(*p > ch)ch=*p;
}
}
}
return ch;
}
int main(void)
{
char b;
char *a[3]={
"12345","23asoidjf","askdfjzei"
};
b=max(a,3);
printf("%c",b);
return 0;
}Top
5 楼friend_mhj()回复于 2005-01-03 21:19:27 得分 0
jin_xiaolu2000(哦棵) 的程序好想不太好,
可能会改变原来数组中的指针(我是猜的^o^)
char max;
max = 0;
for (int i = 0; i < n) {
j=0;
while(!s[i][j]) {
// 不区分大小写的话在这里需要转换一下
max = max < s[i][j]? s[i][j] : max;
j++;
}
}
试试吧!没测试过^o^Top
6 楼avalonBBS("︶.︶メ)→( ̄ε ̄メ)回复于 2005-01-03 21:19:47 得分 0
题目是求最大的字母,字串中合法的取为a~~z,A~~Z,
函数的须先将第一个字母(通过查找)赋给ch
。。。。。
如果题目是求最大的字符,那么就如前面的Top
7 楼avalonBBS("︶.︶メ)→( ̄ε ̄メ)回复于 2005-01-03 21:34:38 得分 0
#include <stdio.h>
//有一个函数max()的功能是在n个字符串中查找最大的字母,如何实现??
char max(char *s[],int n)
{
int i;
char ch, *p;
/********************/
ch=0;
for(i=0;i<n;++i)
{
for(p=s[i];*p;++p)
if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')
ch=((ch<*p)?*p:ch);
}
return ch;
}
int main(void)
{
char b;
char *a[3]={
"12345","23asoidjf","azkdfjzei"
};
b=max(a,3);
printf("max is: %c",b);
return 0;
}Top
8 楼liem(阿明)回复于 2005-01-03 21:42:02 得分 0
1)在一个字符串中找最大字母
char max(char *s)
{
char m=*s++;
while(*s)
if(m<*s)m=*s++;
return m;
}
2)在n个字符串中找最大字母
char max(char *ss[],int n)
{
char m=max(ss[0]);
for(int i=1;i<n;i++)
{ char m1=max(ss[i]);
if(m<m1) m=m1;
}
return m;
}Top
9 楼avalonBBS("︶.︶メ)→( ̄ε ̄メ)回复于 2005-01-03 21:54:40 得分 0
char max(char *s[],int n)
{
int i;
char ch, *p;
for(ch=i=0;i<n;++i)
for(p=s[i];*p;++p)
(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')?((ch<*p)?ch=*p:0):0;
return ch;
}Top
10 楼xuelong_zl(点雨点[我身上咋就没MM的香水味涅??#-_-])回复于 2005-01-04 08:43:24 得分 0
markTop




