回 帖 发 新 帖 刷新版面

主题: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个回复)

11 楼


神啊 居然把这忘了啊

12 楼

你在帮我看下 这中做法拿错啦??/
//下程序从所读入的若干字符中,找出一个最大的串,并输出该串,用”****”作为结束标记,请完善程序。
#include <stdio.h>
#include <string.h>
 void  main() 
    {
    char ss[10][5],*ps;
    int n;
    reading(ss,&n);
    findmax(ss,n,&ps);
    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;
}
void 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)                                  
    }

13 楼

Lz指针用的不熟啊,char (*p)[n]等价于char a[n];p=a; 是数组的指针,按照LZ的思路,应该是用指针数组来表示输入的字符串,应用char *p[n];相当于一个二维数组  还有函数返回字符串的时候要用返回char型指针的函数;

14 楼

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

#define max 5

struct list{
    char ch[20];
}s[max];

void reading(void);

void findmax(void);

int main() 
{
    int i;
    for(i=0;i<max;i++)
        s[i].ch[0]='\0';
    reading();
    findmax();
    return 0;
}

void reading(void) 
{
    int i=0;
    while(i<max) 
    {              
        gets(s[i].ch);
        i++;
    }
}

void findmax(void)
{  
    char m[30];
    int i;
    strcpy(m,s[0].ch);
    for(i=1;i<max;i++)
        if(strcmp(s[i].ch,m)>0)
            strcpy(m,s[i].ch);    
    printf("最大的字符串是:%s\n",m);    
}

15 楼


我们这几天才学那个结构题啊  呵呵  第一种做法已经对了  应为我哟偶返回值,所以只需要这样,用返回指针的函数 。。下面是改的。。
#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;    
}

  你在帮我看下 这中做法拿错啦??/用的是二级指针
//下程序从所读入的若干字符中,找出一个最大的串,并输出该串,用”****”作为结束标记,请完善程序。
#include <stdio.h>
#include <string.h>
 void  main() 
    {
    char ss[10][5],*ps;
    int n;
    reading(ss,&n);
    findmax(ss,n,&ps);
    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;
}
void 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)                                  
    }








你帮我看下

我来回复

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