c语言问题求解答
[问题分析]在一个字符串内,统计含多少整数的问题,核心是如何将数从字符串中分离出来。从左到右扫描字符串,初次碰到数字字符时,作为一个整数的开始。然后进行拼数,即将连续出现的数字字符拼成一个整数,直到碰到非数字字符为止,一个整数拼完,存入数组,再准备下一整数,如此下去,直至整个字符串扫描到结束。 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,否则,需用长整型数组及变量。
然后就自己做吧,应该好做了
看看这个满足你不朋友
#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;
}
谢谢