c语言题目计算器 我的代码哪错了。。
发布网友
发布时间:2022-08-30 16:41
我来回答
共3个回答
热心网友
时间:2024-08-11 04:26
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int c=0,b=0,blen=0,clen=0,i = 0,j=0,n=0;
char a[100 ] = {0};
char ch;
printf("where\n");
//用gets获取容易造成溢出,不建议使用。
while((ch = getchar()) != '\n' && ch != EOF)
{
a[i] = ch;
i++;
}
for (i=0; i<strlen(a); i++)
{
if (a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')
{
j = i;
n++; //记录符号个数
}
}
if(n >= 2) //判断符号是不是只有一个;
{
printf("input an error format!");
return 0;
}
for (i = j; i >= 0; i--)
{
if (a[i]>='0'&&a[i]<='9')
{
b=b+(a[i]-48)*pow(10, blen++);
}
}
for (i=strlen(a);i > j;i--) //这个读取也必须从后往前取数,即先取个位;
{
if (a[i]>='0'&&a[i]<='9')
{
c=c+(a[i]-48)*pow(10,clen++);
}
//printf("%d %d %d",b,c,strlen(a));
}
if (a[j]=='+') printf("%d + %d = %d\n", b, c, b+c);
if (a[j]=='-') printf("%d - %d = %d\n", b, c, b-c);
if (a[j]=='*') printf("%d * %d = %d\n", b, c, c*b);
if(a[j] == '/')printf("%d / %d = %.3f\n", b, c, 1.0*b/c);
return 0;
}
你的问题就是在我有注释的地方,仔细看一下,我也花了不少时间调,关键是gets溢出的问题,一定要尽量少用。
热心网友
时间:2024-08-11 04:22
中间出错,待会我改好了发给你
热心网友
时间:2024-08-11 04:20
实现的太过于复杂,根本不需要要用到gets这个函数,我劝你还是改改吧,这个问题很简单,如果你是学习完了c语言,记住要用最简单的方法去解决问题而不是更加复杂的,你自己去看看谭浩强的《c语言程序设计》第四章中关于printf这个函数的用法,如果你是高手,那么以后要少用这个函数,但是它能解决这个问题!!