当前位置:首页 » 课程大全 » c课程设计计算器程序

c课程设计计算器程序

发布时间: 2021-02-23 03:04:00

㈠ c语言课程设计 计算器

分也太少了。我这程序我到是写了一个(貌似一年前写的)。主要是链表与堆栈的操作。
看回去能不能翻出来~

㈡ 求一C语言课程设计简易计算器的程序代码

都没有悬赏

㈢ c语言设计一个简单的计算器程序

#include<.h>//计算器

voidmenu()//自定义的菜单界面

printf("--------------------\n");

printf("请输入你的选择\n");

printf("1.+\n");

printf("2.-\n");

printf("3.*\n");

printf("4./\n");

printf("--------------------\n");

intmain()

inti=0;

intj=0;

intnum=0;//计算结果存放在nun

intselect=0;//选择的选项存放在select

do//do-while先执行再判断循环条件,即可实现重复计算功能

menu();//打印出菜单界面

scanf("%d",&select);//输入你的选项

printf("请输入计算值:");

scanf("%d%d",&i,&j);//输入要计算的数值

switch(select)

case1:

printf("%d+%d=%d\n",i,j,num=i+j);//实现加法功能

break;

case2:

printf("%d-%d=%d\n",i,j,num=i-j);//实现减法功能

break;

case3:

printf("%d*%d=%d\n",i,j,num=i*j);//实现乘法功能

break;

case4:

printf("%d-%d=%d\n",i,j,num=i/j);//实现除法功能

break;

default:

printf("输入有误重新选择");

break;

}while(select);

return0;

运行结果:

(3)c课程设计计算器程序扩展阅读:

return表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。

return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

㈣ "C语言课程设计--算术计算器的实现"怎么做

#include<stdio.h>
#include<malloc.h>
#include<iostream.h>

struct node
{
int date;
struct node *next;
};
typedef struct node *link;
link number=NULL;
link symble=NULL;
//把数据放入栈中//
link push(link stack ,int num,int k)
{ link newnode;
newnode=(link)malloc(sizeof(struct node));
if(newnode==NULL)
cout<<"out of space"<<endl;
else
{ if(k>=0 && k<=9)//判断前一个字符是否为数字
{
stack->date=stack->date*10+num;
return stack;
}
else
{
newnode->date=num;
newnode->next=stack;
stack=newnode;
return stack;

}
}
}

//从栈上取出数据//
link pull(link stack,int *num)
{
link top;//去栈顶元素
if(stack!=NULL)
{
top=stack;
stack=stack->next;
*num=top->date;
free(top);
return stack;

}
else
*num=0;

}
//判断栈是否为空
int empty(link stack)
{
if(stack==NULL)
return 1;
else
return 0;

}
//判断是否为运算符
int is_symble(char ch)
{
switch(ch)
{ case '(':
case ')':
case '+':
case '-':
case '*':
case '/':
return 1;
default:
return 0;
}

}
// 判断运算符的优先级
int priority(char ch)
{
switch(ch)
{ case '(':
return 1;
case '+':
case '-':return 2;
case '*':
case '/': return 3;//'+','-'的优先级小于'*','/'
default:return 0;
}

}
//计算两个操作数的值
int tuo_result(int m,int num1,int num2 )
{ switch(m)
{ case '+':
return(num2 + num1);
case '-':
return (num2-num1);
case '*':
return(num2 * num1);
case '/':
return(num2 / num1);
}

}

//主函数
void main ()
{
char expression[50];//存放表达式
int position=0;//表达式的位置
int sym=0;//运算符
int num1=0;//后操作数
int num2=0;//前操作数
int sum=0;//运算结果
cout<<"请输入表达式:"<<endl;
gets(expression);
while(expression[position]!='\0' && expression[position]!='\n')
{ if(is_symble(expression[position]))//判断运算符
{
if(expression[position]=='(')
symble=push(symble,expression[position],-1);
else if(expression[position]==')')
{ while(symble->date!='(')
{ number=pull(number,&num1);
number=pull(number,&num2);
symble=pull(symble,&sym);
number=push(number,tuo_result(sym,num1,num2),-1);
}
//if(symble->date='(')symble=pull(symble,&sym);
symble=pull(symble,&sym);

}

else if(!empty(symble))//判断放运算符的栈是否为空

{ if(priority(expression[position]) <= priority(symble->date) &&
!empty(symble))
{
//取出一个运算符和两个操作数
number=pull(number,&num1);
number=pull(number,&num2);
symble=pull(symble,&sym);
number=push(number,tuo_result(sym,num1,num2),-1);
//cout<<tuo_result(sym,num1,num2)<<endl;
//把运算符放在栈里
//symble=push(symble,expression[position],-1);
}
symble=push(symble,expression[position],-1);
}

//把运算符放在栈里
else
symble=push(symble,expression[position],-1);

}
else if(!is_symble(expression[position]))//把操作数放在栈里
number=push(number,expression[position]-48,expression[position-1]-48);
//cout<<expression[position]<<endl;

position++;
}

//取出运算符栈的运算符
while(!empty(symble))
{ //cout<<symble->date<<endl;

symble=pull(symble,&sym);
if(!empty(symble))//判断是否为空
{
if(sym=='+' && symble->date=='-' )//判断符号问题 ,2-2*3+5=1不然就是-1
sym='-';
}
number=pull(number,&num1);
number=pull(number,&num2);

//cout<<num1<<" "<<num2<<endl;
//计算的结果放在栈中
number=push(number, tuo_result(sym,num1,num2),-1);
//cout<<number->date<<endl;

}
//取出运算结果
number=pull(number,&sum);
cout<<expression<<"="<<sum<<endl;

}

㈤ 用c语言程序设计一个简单计算器,求其源代码

是用纯C还是用到MFC 建议你用MFC

㈥ 用C语言编写简易计算器程序

#include<stdio.h>

#include<math.h>

int main()

{

char ch,op;

double a,b,c;

printf("请按s键开始计算,按q退出程序: ");

while(1)

{

while(scanf("%c",&ch),ch!='q')

{

if(ch!='s')

break;

scanf("%lf%c%lf",&a,&op,&b);

switch(op)

{

case '+' :

c=a+b;

break;

case '-' :

c=a-b;

break;

case '*' :

c=a*b;

break;

case '/' :

c=a/b;

break;

}

printf("%.4f ",c);

printf("按s继续计算 ");

}

if(ch=='q')

break;

}

return 0;

}

㈦ c语言课程设计一个简单计算器

//名字记不太清了,这个叫递归下降算法,但这个算法肯定是首先在编回译原理中的,主要答用在
//各种编译器中。就是现扫描整个表达式字符串,把其中的运算符找出来,判断它们的优先级
//然后按从左到右的顺序先计算把优先级低的运算符和它两边的数据压入,这样循环做过以后
//再从头取出一个一个计算,表达式的结构类似与二叉树,遍历二叉树后把结果存在连表中供
//计算。

㈧ C语言课程设计,简单计算器

#include<stdio.h>
voidmain()
{
inta,b;
charch;
scanf("%d%c%d",&a,&ch,&b);
switch(ch)
{
case'+':printf("%d",a+b);break;
case'-':printf("%d",a-b);break;
case'*':printf("%d",a*b);break;
case'/':
{
if(b==0)printf("算式无抄意义");
elseprintf("%f",float(a)/b);
break;
}
default:printf("输入的运算符有误!");
}
}

㈨ c语言课程设计 计算器软件 要求:1) 能够实现加减乘除功能;2) 要求单字

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>

enumTag{END=256,REAL};
structToken{
inttag;
doubleval;
}ahead;
charpeek='';

doubleexpr(void);

structTokenscanTok(void)
{
structTokentok={END,0};

for(;peek!=' '&&isspace(peek);peek=getchar());
if(peek=='q')
exit(EXIT_SUCCESS);
if(peek==' '&&(peek=''))
returntok;
if(isdigit(peek)||peek=='.'){
for(tok.val=0;isdigit(peek);peek=getchar())
tok.val=10*tok.val+(peek-'0');
if(peek=='.'){
doubledecplace=1;
while(isdigit(peek=getchar()))
tok.val+=(peek-'0')*(decplace/=10);
}
tok.tag=REAL;
returntok;
}

tok.tag=peek;
peek='';
returntok;
}

doublefact(void)
{
inttag=ahead.tag;
doubleval=ahead.val;
if(tag!=END)
ahead=scanTok();

switch(tag){
caseREAL:
returnval;
case'(':
val=expr();
ahead=scanTok();
returnval;
case'-':
return-fact();
default:
fprintf(stderr,"错误:无法将%d[%c]解释为因数的一部分 ",tag,tag);
return0;
}
}

doubleterm_(void)
{
inttag=ahead.tag;

switch(tag){
case'+':
case'-':
case')':
caseEND:
return1;
case'*':
case'/':
ahead=scanTok();
return((tag=='*')?fact():1/fact())*term_();
default:
fprintf(stderr,"错误:无法匹配形如`*fact'的项的后缀因数 ");
return1;
}
}

doubleterm(void)
{
switch(ahead.tag){
caseREAL:
case'(':
case'-':
returnfact()*term_();
default:
fprintf(stderr,"错误:无法匹配一个项的首因数 ");
return0;
}
}

doubleexpr_(void)
{
inttag=ahead.tag;

switch(tag){
case')':
caseEND:
return0;
case'+':
case'-':
ahead=scanTok();
return((tag=='+')?term():-term())+expr_();
default:
fprintf(stderr,"错误:无法匹配形如`+term'的表达式后缀项 ");
return0;
}
}

doubleexpr(void)
{
switch(ahead.tag){
caseREAL:
case'(':
case'-':
returnterm()+expr_();
default:
fprintf(stderr,"错误:无法匹配表达式首项 ");
return0;
}
}

intmain(intargc,char*argv[])
{
for(;;){
printf("(?)>>");
ahead=scanTok();
printf("(*)==%lf ",expr());
}
exit(0);
}

㈩ c语言课程设计(设计一个简单的计算器)

KTV魔女咯摸摸哦哦弄

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919