网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月27日漏签0天
编程吧 关注:374,689贴子:1,638,645
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回编程吧
>0< 加载中...

各位帮忙找一下哪出错了。

  • 只看楼主
  • 收藏

  • 回复
  • 837066180
  • 高级粉丝
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 837066180
  • 高级粉丝
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我跟着书上编的,这是一个计算器,可以计算+ - * / 还有^。可以使用前一个计算的结果进行计算。我编译后运行了,但只能计算整数的,有小数的就乱了。


2026-04-27 11:42:07
广告
不感兴趣
开通SVIP免广告
  • 837066180
  • 高级粉丝
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
#define BUFFER_LEN 256
int main(void)
{
char input[BUFFER_LEN];
char number_string[30];
char op = 0;
unsigned int index = 0;
unsigned int to = 0;
size_t input_length = 0;
unsigned int number_length = 0;
double result = 0.0;
double number = 0.0;
printf("\nTo use this calculater, enter any expression with"
"or without spaces");
printf("\nAn expression may include the operators:");
printf("\n +, -, *, /, %%, or ^(raise to a power).");
printf("\nUse = at the beginning of a line to operate on ");
printf("\nthe result of the previous calculation.");
printf("\nUse qyit by itself to stop the clculator,\n\n");
while(strcmp(fgets(input, BUFFER_LEN, stdin), "quit\n") != 0)
{
input_length = strlen(input); i
nput[--input_length] = '\0';
for(to = 0, index = 0 ;index<=input_length ; index++)
if(*(input+index) != ' ')
*(input+to++) = *(input+index);
input_length = strlen(input);
index = 0;
if(input[index]== '=') index++;
else
{
number_length = 0;
if(input[index]=='+' || input[index]=='-')
*(number_string+number_length++) = *(input+index);
for( ; isdigit(*(input+index)) ; index++)
*(number_string+number_length++) = *(input+index);
if(*(input+index)=='.')
{
*(number_string+number_length) = *(input+index++);
for( ; isdigit(*(input+index)) ; index++)
*(number_string+number_length++) = *(input+index);
}
*(number_string+number_length) = '\0';
if(number_length>0) result = atof(number_string);
}
for(;index < input_length;)
{
op = *(input+index++); number_length = 0;
if(input[index]=='+' || input[index]=='-')
*(number_string+number_length++) = *(input+index++);
for( ; isdigit(*(input+index)) ; index++)
*(number_string+number_length++) = *(input+index);
if(*(input+index)=='.')
{
*(number_string+number_length++) = *(input+index++);
for( ; isdigit(*(input+index)) ; index++)
*(number_string+number_length++) = *(input+index);
}
*(number_string+number_length) = '\0';
number = atof(number_string);
switch(op)
{
case '+': result += number; break; case '-':
result -= number;
break;
case '*':
result *= number;
break;
case '/':
if(number == 0)
printf("\n\n\aDivision by zero error!\n");
else result /= number;
break; case '%':
if((long)number == 0)
printf("\n\n\aDivision by zero error!\n");
else result = (double)((long)result % (long)number);
break;
case '^':
result = pow(result, number);
break; default:
printf("\n\n\aIllegal operation!\n");
break;
}
}
printf("= %lf\n", result);
}
return 0;
}
代码有点乱啊,因为书了的注释是英语的,所以我没有写注释,对这个程序我也不是很懂,有空的高手就帮一下忙。


  • 837066180
  • 高级粉丝
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼



  • 此生唯晴
  • 核心吧友
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
代码这么长,谁有那个时间看啊,还是自己对照着书上的解释把代码弄明白才行!


  • 新潮动漫屋Dv
  • 活跃吧友
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
http://training.tsinghua.edu.cn


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回编程吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示