怎么将char型数组经过子函数运算后以double结果输出 - 爱问答

(爱问答)

怎么将char型数组经过子函数运算后以double结果输出

ouble Result(char b[])/*计算结果*/

{

    char *s;

     int j=0,i=0;

     char str[20];

     double d,a,c;

     while(b[j]!='')

     {

         while((b[j]<='9'&&b[j]>='0')||' '==b[j])

         {

             str[i]=b[j];

             i++;

             str[i]='';

             j++;

             if(' '==b[j])

             {

                 d=atof(str);

                 Push1(s,&d);

                 break;

             }

         }

         switch(b[j])

         {

             case '-':a=Pop1(s,&b[j-1]);c=Pop1(s,&b[j-2]);Push1(s,a+c);

             case '+':a=Pop1(s,&b[j-1]);c=Pop1(s,&b[j-2]);Push1(s,a-c);

             case '*':a=Pop1(s,&b[j-1]);c=Pop1(s,&b[j-2]);Push1(s,a*c);

             case '/':a=Pop1(s,&b[j-1]);c=Pop1(s,&b[j-2]);Push1(s,a/c);

         }

         j++;

     }

     Pop1(s,&d);

     return d;

}

这是我的其中一个子函数,编译显示initializing argument 1 of

先将Double型的数字整数部分变为整型数字一一取到数组中去(用循环整除可以做到,比如double i=123.456,就可以先把整数部分用j=(int)i强制类型转换取出放入整型变量j中,再依次取到数组a中
(a[k++]=i%10;i/=10;)
这两句语句就可以做到(不过数字是倒序的,最后输出时要注意)。
再看小数部分,同理,但不用除法,而用乘法,先去除整数部分
(j=j-(int)j;)
再将小数部分不断的乘10取整,取一位去除一位,存入另一数组:
l=(int)(j*10);
b[k++]=l;
j=j*10-l;...直到j*10==0为止
这样就可以把j中的数按位取到了两个数组中,接下去只要将两数组合并到C数组中去,或者依次输出整数部分和小数部分,中间别忘加小数点,输出成字符在c语言里可以这样:
printf("%c",a[i]+'0');
printf(".");
printf("%c",b[i]+'0');

使用','分割字符串,将得到的子串使用atof()函数转换成小数,再存入数组

相关标签:运算

下一篇:java缺少返回语句

上一篇:Anylogic仿真数据分析是什么

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?