wei xin_44706101 2020-02-07 16:23 采纳率: 100%
浏览 288
已采纳

字符串转整数 为什么到三位数以上 就输出乱码

3位数以内正常
应该如何修改 可以输出到7位数

#include <stdio.h>
#include<string.h>  
char a[7];
int b[7];int c[7];
int main()
{int n;
 int i,j,t,s;t=0;memset(c,10,sizeof(c));
 gets(a);
 s=strlen(a);j=0;
 for(i=s-1;i>=0;i--)
 {  b[i]=a[j]-'0';j++;//倒过来存 
 } 
  for(j=s-1;j>1;j--)
  { for(t=0;t<j-1;t++)
 { c[j] =c[j]*10;   }//如c[ 2]=100;c[3]=1000; 
  } c[0]=1;n=0;c[1]=10;
  for(i=s-1;i>=0;i--)
  { n=(b[i]*c[i])+n;
  }


  printf("%d",n) ; return 0;
}

求解
  • 写回答

2条回答 默认 最新

  • threenewbee 2020-02-07 20:37
    关注

    是要数字倒序么?1234->4321
    这样:

    #include <stdio.h>
    #include<string.h>  
    char a[8];
    int b[7];
    //int c[8];
    int main()
    {
        int n=0;
        int i,j,t,s;t=1;
        memset(b,0,sizeof(b));
        gets(a);
        s=strlen(a);j=0;
        for(i=s-1;i>=0;i--)
        {  
            b[j]=a[i]-'0';j++;//倒过来存 
        }
        for(i=s-1;i>=0;i--)
        {
            n=n+b[i]*t;
            t = t * 10;
        }
        printf("%d",n); 
        return 0;
    }
    

    如果仅仅是转换,不要倒序,1234->1234
    这样写

    #include <stdio.h>
    #include<string.h>  
    char a[8];
    int b[7];
    //int c[8];
    int main()
    {
        int n=0;
        int i,j,t,s;t=1;
        memset(b,0,sizeof(b));
        gets(a);
        s=strlen(a);j=0;
        for(i=s-1;i>=0;i--)
        {  
            b[j]=a[i]-'0';j++;//倒过来存 
        }
        for(i=0;i<s;i++)
        {
            n=n+b[i]*t;
            t = t * 10;
        }
        printf("%d",n); 
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?