回 帖 发 新 帖 刷新版面

主题:C语言

②以下程序从所读入的若干字符中,找出一个最大的串,并输出该串,用”****”作为结束标记,请帮我检查啊程序。



#include <stdio.h>
#include <string.h>
void reading(char (*a)[5], int *num);

char findmax(char (*a)[5],int num);

void main() 
{
    char ss[10][5],ps;
    int n;
    reading(ss,&n);
    ps=findmax(ss,n);
    printf("max=%s\n",ps);
}
void reading(char (*a)[5], int *num) 
{
    int i=0;
    gets(a[i]);
    while(strcmp(a[i],"****")!=0) 
    {
        i++;                
        gets(a[i]);
    }
    *num=i;
}
char findmax(char (*a)[5],int num)
{   
    char *max;
    int i;
    for (max=a[0],i=1;i<num;i++)
        if(strcmp(a[i],max)>0)
            max=a[i];
        
        
        
    return *max;    
}

回复列表 (共15个回复)

沙发

没仔细看,大致有这些错误:
<1>   char findmax(char (*a)[5],int num);

      ps=findmax(ss,n);
      printf("max=%s\n",ps);//findmax返回的是char类型,怎么能用%s输出呢??

板凳

首先说说ls指出的问题,声明时改为 char *findmax(char (*a)[5],int num); 该函数return时改为
return max。。

顺便提下个人的意见:
①ss[10][5],而
while(strcmp(a[i],"****")!=0) 
{
   i++;                
   gets(a[i]);
}
难道不怕溢出?
② 函数void reading(char (*a)[5], int *num),指针num没有初始化额、、
如果lz在练习使用指针,可以试着这么写,如果明确了所需,尽量不要这么写啊、、 


3 楼


这个可以用啊  并比一定只用%C

4 楼


额  我发现这个我问题是现在第一个函数里的返回的N不能传递到第二个中的NUM中,而构成了死循环,你帮忙把这弄下,啊   呵呵  谢拉[em2]

5 楼


我的上一个回帖有个错误:照你的意思,int *num = &n,也算初始化了,至于这么写我就不吹毛求疵了。

lz贴上改后的代码  和问题吧,好知道什么错误。

6 楼


问题是没有 就是不运行 我最后发现他那比较时进入了死循环,不信你试下嘛。。。好像是第一个    *num=i;传回&n ,然后在最后一个
  findmax(char (*a)[5],int num) 再传回来n  
中用i<n控制比较次数 好像是这问题。第二次没有传回来n的值 所以一直无法结束,如果给一个确定的值 他就正确了 。。。。你看下

7 楼


额  不管咋样 你帮我改下 大体一样就好  要能运行啊  谢谢

8 楼


忘给你指出定义时char *ps这个错误了。。改下就ok了……

9 楼

不是吧》???/你看我返回的就是字符串 干嘛要*ps

10 楼

你知道返回的是字符串撒。那你定义时肯定用 char *ps啊;lz见过char ps = "abc";这种用法么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册