永发信息网

C语言 字符串转换

答案:2  悬赏:80  手机版
解决时间 2021-02-04 05:06
  • 提问者网友:容嬷嬷拿针来
  • 2021-02-03 21:31
Description

输入一个以回车结束的字符串,它由数字和字母组成,请过滤掉所有非数字字符,然后将数字字符串转换成十进制整数后乘以2输出。

Input

输入一个以回车结束的字符串,长度不超过100,由数字和字母组成。

Output

将转换后的整数乘以2输出,测试数据保证结果在int范围内。

Sample Input

sg987aa65t498

Sample Output

197530996

如果能改一下最好 我知道错的不少 实在不行麻烦再写一个。

#include
#include
#include
int main()
{
int i,n,j=0,sum=0;
char b[100],a[100];
scanf("%d",&n);
gets(b);
for(i=0 ; b[i]!='\0' ; i++)
{
if(isdigit(b[i])==1)
{
a[j]=b[i];//如果是数字把b[i]的数赋给a[j]
j++;
}
}
for(i=j ; i>=1 ; i--)
{
a[i]*pow(10,i+1);//从最高位乘10的i+1次方
sum+=a[i];
}
printf("%d",sum*2);
}
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-02-03 22:44
int i,j=0,sum=0;
    char b[100],a[100];
    scanf("%s", b);
    for(i=0 ; b[i]!='\0' ; i++)
    {
        if(isdigit(b[i])==1)
        {
            a[j]=b[i];//如果是数字把b[i]的数赋给a[j]
            j++;
        }
    }
    for(i = 0 ; i < j ; i++)
    {
        sum = sum + (a[i] - 48)*pow(10,j - i - 1); // a[i]内是字符转换成十进制数ASCII-48

    }
    printf("%d",sum*2);
全部回答
  • 1楼网友:独钓一江月
  • 2021-02-03 23:11

#include <stdio.h>

int strlen(char *s) {  int len = 0;  char *p = s;  while(*p++) ++len;  return len; }

double atod(char *s) { // 将字符串转换为浮点数  double fnum = 0.0;  char *p = s;  int i,slen,inum = 0,pointpos = -1;  slen = strlen(s);  while(*p) {   if(*p == '.') { // 确定第一个小数点位置    pointpos = p - s;    break;   }   ++p;  }  if(pointpos == -1) {   for(i = 0; s[i]; ++i)    // 没有小数,仅需转换整数部分    inum = 10*inum + s[i] - '0';   return (double)inum;  }  for(i = 0; i < pointpos; ++i)    // 有小数,先转换整数部分   inum = 10*inum + s[i] - '0';  for(i = slen - 1; i > pointpos; --i) {    // 再转换小数部分   if((s[i] >= '0') && (s[i] <= '9'))    // 串中可能还有'.',必须过滤掉    fnum = (fnum + s[i] - '0')/10.0;  }  return(inum + fnum); }

double convert(char *s) { // 提取数字串  int i = 0;  char *p = s,q[51];  while(*p) {   if((*p >= '0') && (*p <= '9') || (*p == '.')) q[i++] = *p;   ++p;  }  q[i] = '\0';  printf("数字串 : %s\n",q);  return atod(q); }

int main() {  char s[51];  printf("请输入字符串 : ");  gets(s);  printf("%s中的数字串是:%.4lf\n",s,convert(s));  return 0; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯