主题:C语言
316971451
[专家分:30] 发布于 2011-03-23 17:25:00
②以下程序从所读入的若干字符中,找出一个最大的串,并输出该串,用”****”作为结束标记,请帮我检查啊程序。
#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 楼
316971451 [专家分:30] 发布于 2011-03-26 13:15:00
神啊 居然把这忘了啊
12 楼
316971451 [专家分:30] 发布于 2011-03-26 15:36:00
你在帮我看下 这中做法拿错啦??/
//下程序从所读入的若干字符中,找出一个最大的串,并输出该串,用”****”作为结束标记,请完善程序。
#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 楼
hnuhsg1226 [专家分:150] 发布于 2011-03-26 15:47:00
Lz指针用的不熟啊,char (*p)[n]等价于char a[n];p=a; 是数组的指针,按照LZ的思路,应该是用指针数组来表示输入的字符串,应用char *p[n];相当于一个二维数组 还有函数返回字符串的时候要用返回char型指针的函数;
14 楼
hnuhsg1226 [专家分:150] 发布于 2011-03-26 16:02:00
#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 楼
316971451 [专家分:30] 发布于 2011-03-26 17:14:00
我们这几天才学那个结构题啊 呵呵 第一种做法已经对了 应为我哟偶返回值,所以只需要这样,用返回指针的函数 。。下面是改的。。
#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)
}
你帮我看下
我来回复