c语言问题求解答

主函数中输入一行字符串,内有数字字符和非数字字符,调用函数(自己定义及实现的函数)求该字符串中数字子串中最大的数字,并在主函数中显示最大的数字。限定该字符串中数字子串最多... 主函数中输入一行字符串,内有数字字符和非数字字符,调用函数(自己定义及实现的函数)求该字符串中数字子串中最大的数字, 并在主函数中显示最大的数字。限定该字符串中数字子串最多不超过10个。如字符串“a123b345.6x876.1y76t”,该字符串中含有数字子串最大的数字是876.1。请编写程序 展开
 我来答
shangg555
推荐于2016-05-26 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:76
采纳率:0%
帮助的人:53.2万
展开全部

[问题分析]在一个字符串内,统计含多少整数的问题,核心是如何将数从字符串中分离出来。从左到右扫描字符串,初次碰到数字字符时,作为一个整数的开始。然后进行拼数,即将连续出现的数字字符拼成一个整数,直到碰到非数字字符为止,一个整数拼完,存入数组,再准备下一整数,如此下去,直至整个字符串扫描到结束。  int CountInt() 

// 从键盘输入字符串,连续的数字字符算作一个整数,统计其中整数的个数。 {int i=0,a[];     // 整数存储到数组a,i记整数个数  scanf(“%c”,&ch);// 从左到右读入字符串  while(ch!=‘#’) //‘#’是字符串结束标记   if(isdigit(ch))// 是数字字符   {num=0;       // 数初始化 

   while(isdigit(ch)&& ch!=‘#’)// 拼数    {num=num*10+‘ch’-‘0’;     scanf(“%c”,&ch);     } 

   a[i]=num;i++;    if(ch!=‘#’)scanf(“%c”,&ch); // 若拼数中输入了‘#’,则不再输入    }// 结束while(ch!=‘#’) 

 printf(“共有%d个整数,它们是:”i);  for(j=0;j<i;j++) 

 {printf(“%6d”,a[j]); 

   if((j+1)%10==0)printf(“\n”);} // 每10个数输出在一行上 }// 算法结束 

[算法讨论]假定字符串中的数均不超过32767,否则,需用长整型数组及变量。



然后就自己做吧,应该好做了

参考 http://wenku.baidu.com/link?url=qCC2hvkW4LNxiz_DeDciomiqHA24mV5wPXIkKzCGB5CjsoRCsnju3PPdXGG56dCA6gVo86solCyZYUWr0Ni9niXFQW7NqLxgZOj5igRW3Ra   5-2

牛牛牛不牛0720
2015-01-21 · TA获得超过342个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:346万
展开全部

看看这个满足你不朋友

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

int main(void)
{
int i=0,j=0,num=0;
char buf[256]={0},*p=NULL;
float temp=0,max=0;
scanf("%s",buf);

for(i=0;i<strlen(buf);i++)
{

if(buf[i]>='0' && buf[i]<='9')
{
p = buf+i;
sscanf(buf+i,"%f",&temp);
num++;
for(j=i+1;j<strlen(buf);j++)
{
if( (buf[j]<= '9' && buf[j] >= '0') || (buf[j] == '.')) 
;
else
i = j-1;
}

}

if(num==1)
max = temp;
else
max = temp>max?temp:max;
}
printf("%g\n",max);
return 0;
}
追问
谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式