请讲解一个这个C语言程序,输入一个字符串,内含数字和非数字字符 输出整数 并输出有多少个整数

#include<stdio.h>
int getNum(char *s, int a[])
{
int i, f, c;
for(i = f = c = 0; s[i]; i++)
if('0' <= s[i] && s[i] <= '9')
if(f)
a[c - 1] = a[c - 1] * 10 + s[i] - '0';
else
{
f = 1;
a[c++] = s[i] - '0';
}
else
f = 0;
return c;
}
int main()
{ int i, c, a[200];
char s[200];

gets(s);
c = getNum(s, a);
printf(" %d\n",c);
for(i = 0; i < c; i++)
printf("%d\n", a[i]);
return 0;
}

#include<stdio.h> //这行不解释 
int getNum(char *s, int a[]) //同上
{ //继续同上
 int i, f, c; //依然同上
 for(i = f = c = 0; s[i]; i++)  //难点在最开始的初始化,中间的条件为s[i]为假时结束
  if('0' <= s[i] && s[i] <= '9')  //判定s[i]的取值范围
   if(f)
    a[c - 1] = a[c - 1] * 10 + s[i] - '0'; //这里是转换字符到整型
   else 
   {
    f = 1;
    a[c++] = s[i] - '0';//同上
   }  
   else
    f = 0; //同上不解释
   return c;//返回结果
}
int main()//这个不懂就不要写C语言了
{ int i, c, a[200];//-_-b
 char s[200];//+1
 
 gets(s); //……
 c = getNum(s, a);//通过函数返回整型存入变量
 printf(" %d\n",c);//给我输出吧,骚年!
 for(i = 0; i < c; i++)//来,轮一个
  printf("%d\n", a[i]); //结果就在这里了。
 return 0;//Bye
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-03
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
int main(void){
char a[1000];
int i,ln,Dec,n,x;
printf("Type a string...\n");
gets(a);
for(ln=strlen(a),x=n=i=0;i<ln;i++){
if(a[i]>='0' && a[i]<='9'){
sscanf(a+i,"%d%n",&Dec,&n);
x++;
(i+=n)--;
printf("%d ",Dec);
}
}
printf("\nA total of %d integer(s).\n",x);
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网