用C写了个简单计算器,附上源码,有点乱大神勿喷!
#include<stdlib.h>
#include<string.h>
#include <ctype.h>
int main(void)
{
char num1={0};//存放从键盘接受的所有字符
char *p=num1 ; //定义一个指向num1[]的指针p
char n={0};//存放从NUM1中分离出来的数字字符
int n1={0};//存放转化后的整形数字准备参加运算
char c={0};//存放从NUM1中分离出来的运算字符
unsigned int i,j,k;//设置3个循环变量
//第一部分,从接盘接受输入的字符放入num1[]中
while(1)
{
*p=getchar();
if(*p=='\n')
{
break;
}
p++;
}
//调试输出接受到的数组
printf("%s\n",num1);
//第2部分,开始分离数组num1[]中的数字字符
j=0 ;
k=0 ;
p=num1;
for(i=0;i <= strlen(num1);i++)
{
if( isalnum(num1) != 0)
{
n=*p; //将字符数字放入字符数组n[]中;
j++;
}
else
{
n='\0';
n1=atoi(n); //将字符转换成整形放入n1[]中
k++;
j=0;
}
p++ ;//指向下一位
}
//调试输出下n1[]数组是否取到所有数字;
for(i=0;i<k-1;i++)
{
printf("%d ",n1);
}
printf("\n");
//第3部分,开始分离数组num1[]中运算符号放入c[]中
j=0 ;
k=0 ;
p=num1;
for(i=0;i <= strlen(num1);i++)
{
if( isalnum(num1) != 0)
{
}
else
{
c=*p; //将运算符放入c[]中
k++;
}
p++ ; //指向下一位
}
//调试输出下c[]数组是否取到所有运算符;
printf("%s\n",c) ;
// 第四部分,进行运算
while(1)
{
for(i=0;i<=strlen(c);i++)
{
if(c=='*' || c=='/') //乘除运算
{
if(c='*')
{
n1=n1*n1 ;
}
else
{
n1=n1/n1 ;
}
for(j=i;j<=strlen(c)+1;j++)//数字字符数组从参加运算的后一位开始左移一位
{
n1=n1 ;
c=c ;
}
break;
}
}
//打印出当前的计算结果表达式
for(i=0;i<=strlen(c);i++)
{
printf("%d%c",n1,c);
}
j=1 ;
for(i=0;i<=strlen(c);i++)
{
if(c=='*'||c=='/')
{
j=0 ; //继续循环
}
}
if(j==1)
{
break ; //如果都运算完了,就退出循环
}
}//while的结束括号
while(1)
{
for(i=0;i<strlen(c);i++)
{
if(c=='+' || c=='-') //加减运算
{
if(c='+')
{
n1=n1+n1 ;
}
else
{
n1=n1-n1 ;
}
for(j=i;j<strlen(c);j++)//数字字符数组从参加运算的后一位开始左移一位
{
n1=n1 ;
c=c ;
}
break;
}
}
//打印出当前的计算结果表达式
for(i=0;i<=strlen(c);i++)
{
printf("%d%c",n1,c);
}
j=1 ;
for(i=0;i<=strlen(c);i++)
{
if(c=='+'||c=='-')
{
j=0 ; //继续循环
}
}
if(j==1)
{
break ;//如果都运算完了,就退出循环
}
}//while的尾括号
//上面4则运算完成了,现在结果在n1里面
//第5步,输出结果
printf("运算结果为:%d",n1) ;
getchar();
return 0;
} 还不错吧,有界面么
、
页:
[1]