A. c语言设计一个简单的计算器程序
#include<stdio.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;
}
运行结果:
(1)c语言的算术程序扩展阅读:
return表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。
return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
B. c语言怎么进行算术运算
#include "stdio.h" void main() { int a,b,c; scanf("%d%d",&a,&b); c=a+b; printf("%d\n",c); getch(); }
具体如下:
1、简介C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
2、基本介绍
C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。
3、运算
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,对此合理进行分类,找出它们与数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
C. 求C语言小学生算术运算程序
main()
{
char ch;
int a;
printf("1 加法运算\n
2 减法运算\n
3 乘法运算\n
4 除法运算\n
0 退出\n");
scanf("%d",a);
do
{
switch(a)
{
case 1:
........//加法运算算法
break;
case 2:
........// 减法运算算法
break;
case 3:
........//乘法运算算法
break;
case 4:
........//除法运算算法
break;
case 0:
exit(0);//退出程序
}
printf("是否继续做题,请输入Y/N:");
scanf("%c",ch);
}while(ch=='Y' || ch=='y');
return 0;
}
D. C语言中一个算术练习程序的实现
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include<math.h>
#defineN99
voidsign(charn)
{
inta,b,c;
srand((unsigned)time(NULL));
a=1+(int)(10*rand()/(RAND_MAX+1.0));//随机数产生
b=1+(int)(10*rand()/(RAND_MAX+1.0));
printf("%d%c%d=",a,n,b);
scanf("%d",&c);
if(n=='+')
{
if(c==a+b)printf("答对了! ");
elseprintf("答案是%d ",a+b);
}
if(n=='-')
{
if(c==a-b)printf("答对了! ");
elseprintf("答案是%d ",a-b);
}
if(n=='*')
{
if(c==a*b)printf("答对了! ");
elseprintf("答案是%d ",a*b);
}
if(n=='/')
{
if(c==a/b)printf("答对了! ");
else{printf("答案是%d ",a/b);}
}
}
voidmenu()
{
printf("1.加法运算 ");
printf("2.减法运算 ");
printf("3.乘法运算 ");
printf("4.除法运算 ");
printf("0.退出程序 ");
}
voidmain()
{
intnum,i;
for(i=0;;i++)
{
while(1){
menu();
printf(" 请选择功能:");
scanf("%d",&num);
switch(num)
{
case4:sign('/');break;
case3:sign('*');break;
case2:sign('-');break;
case1:sign('+');break;
case0:return;
}
printf("按任意键返回菜单 ");
getch();
system("cls");//清屏
}
}
}
E. 如何用C语言数据结构的格式实现简单的算术表达式求值程序
用栈把中缀表达式(输入的式子)按优先级转为后缀表达式(逆波兰式,即运算符在前,操作数在后),再利用栈变计算边保存结果用于下一步计算,最后算出式子的答案
以下代码输入一个式子(以
=
作为输入结束标志),输出结果,负数如-3用0-3表示,支持高位运算
#include
<stdio.h>
#include
<stdlib.h>
#include
<math.h>
#include
<malloc.h>
#define
OK
1
#define
ERROR
-1
typedef
char
SElemType;
typedef
char
Status;
#define
STACK_INIT_SIZE
100000
#define
STACKINCREMENT
2
struct
SqStack
{
SElemType
*base;
SElemType
*top;
int
stacksize;
};
struct
SqStack1
{
int
*base;
int
*top;
int
stacksize;
};
SqStack
OPTR;
SqStack1
OPND;
char
Precede(char
c1,char
c2)
{
if(c1=='+'
||
c1=='-')
{
if(c2=='+'
||
c2=='-'
||
c2==')'
||
c2=='=')
return
'>';
else
return
'<';
}
else
if(c1=='*'
||
c1=='/')
{
if(c2=='(')
return
'<';
else
return
'>';
}
else
if(c1=='(')
{
if(c2==')')
return
'=';
else
return
'<';
}
else
if(c1==')')
return
'>';
else
if(c1=='=')
{
if(c2=='=')
return
'=';
else
return
'<';
}
else
return
'\0';
}
int
In(char
c)
{
if(c=='+'
||
c=='-'
||
c=='*'
||
c=='/'
||
c=='('
||
c==')'
||
c=='=')
return
1;
else
return
0;
}
int
Operrate(int
m,char
b,int
n)
{
switch(b)
{
case
'+':return
m+n;
case
'-':return
m-n;
case
'*':return
m*n;
case
'/':return
m/n;
}
return
0;
}
//操作数
int
InitStack1(SqStack1
&S)
{
S.base=(int
*)malloc(STACK_INIT_SIZE*sizeof(int));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return
OK;
}
int
Push1(SqStack1
&S,int
e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(int
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
S.top=S.base+S.stacksize;
S.stacksize=S.stacksize+STACKINCREMENT;
}
*S.top++=e;
return
OK;
}
int
Pop1(SqStack1
&S,int
&e)
{
if(S.top==S.base)
return
ERROR;
e=*
--S.top;
return
OK;
}
int
GetTop1(SqStack1
S)
{
if(S.top==S.base)
return
ERROR;
return
*(S.top-1);
}
//算符
int
InitStack(SqStack
&S)
{
S.base=(SElemType
*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return
OK;
}
int
Push(SqStack
&S,SElemType
e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(SElemType
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
S.top=S.base+S.stacksize;
S.stacksize=S.stacksize+STACKINCREMENT;
}
*S.top++=e;
return
OK;
}
int
Pop(SqStack
&S,SElemType
&e)
{
if(S.top==S.base)
return
ERROR;
e=*
--S.top;
return
OK;
}
Status
GetTop(SqStack
S)
{
if(S.top==S.base)
return
ERROR;
return
*(S.top-1);
}
int
Calculate()
{
char
c,theta,p;
int
a,b,i=0,ans,x;
InitStack(OPTR);
Push(OPTR,'=');
InitStack1(OPND);
c=getchar();
while(c!='='
||
GetTop(OPTR)!='=')
{
if(!In(c)
&&
c>='0'
&&
c<='9')
{
Push1(OPND,c-'0');
c=getchar();
while(c>='0'
&&
c<='9')
{
Pop1(OPND,x);
Push1(OPND,x*10+c-'0');
c=getchar();
}
}
else
if(In(c))
{
switch(Precede(GetTop(OPTR),c))
{
case
'<':
Push(OPTR,c);
c=getchar();
break;
case
'=':
Pop(OPTR,p);
c=getchar();
break;
case
'>':
Pop(OPTR,theta);
Pop1(OPND,b);
Pop1(OPND,a);
ans=Operrate(a,theta,b);
Push1(OPND,ans);
break;
}
}
else
{
c=getchar();
}
}
return
GetTop1(OPND);
}
int
main()
{
int
ans;
ans=Calculate();
printf("%d\n",ans);
return
0;
}
F. 求助:用C语言帮我写几个“算数”程序
第一题
#include "stdio.h"
int fn(int x);
int main()
{
int x, y;
scanf("%d", &x);
y=fn(x);
printf("%d\n", y);
return 0;
}
int fn(int x)
{
if(x<0) return -1;
else if(x==0) return 0;
else return 1;
}
第二题
#include "stdio.h"
int main()
{
char ch;
scanf("%c", &ch);
/*判断ch是否大写字母*/
if( ch >= 'A' && ch <= 'Z')
{
ch += 32; /*加上32转化为小写字母*/
printf("%c\n", ch);
}
else
{
printf("%c\n", ch);
}
return 0;
}
第三题
#include "stdio.h"
/* max函数,返回a,b,c当中最大者 */
int max(int a, int b, int c);
int main()
{
int m, a, b, c;
scanf("%d %d %d", &a, &b, &c);
m=max(a,b,c);
printf("%d\n", m);
return 0;
}
int max(int a, int b, int c)
{
int temp;
/*先判断a,b,将a,b中较大的存进temp*/
if(a>=b)
temp = a;
else
temp = b;
/*再判断temp和c的大小*/
if(c>temp)
temp = c;
return temp;
}
第四题
#include "stdio.h"
int main()
{
int a=3, b=4, c=5;
int x, y;
/*每个表达式都返回一个bool值,0或1,直接输出就行了*/
printf("%d\n", a+b>c&&b==c);
printf("%d\n", a||b+c&&b-c);
printf("%d\n", !(a>b)&&!c||1);
printf("%d\n", !(x=a)&&(y=b)&&0);
printf("%d\n", !(a+b)+c-1&&b+c/2 );
return 0;
}
有什么不懂的尽管问我,我会尽力帮助你的^_^
G. 用C语言编写一个计算器程序,实现加,减,乘,除,求平方根(正数),倒数等功能.
#include<iostream>
#include<cmath>
#include<string>
using
namespace
std;
const
double
pi
=
3.14159265;
const
double
e
=
2.718281828459;
const
int
SIZE
=
1000;
typedef
struct
node//为了处理符号而建立的链表(如:
1+(-2))
{
char
data;
node
*next;
}node;
typedef
struct
stack_num//存储
数
的栈
{
double
*top;
double
*base;
}stack_num;
typedef
struct
stack_char//存储
运算符号
的栈
{
char
*top;
char
*base;
}stack_char;
stack_num
S_num;//定义
stack_char
S_char;//定义
char
fu[18]
=
{'\n',
')',
'+',
'-',
'*',
'/',
'%',
'^',
'Q',
'L',
'C',
'S',
'T',
'c',
's',
't',
'('};
int
compare[1000];//表现出各运算符号的优先级
double
shu[1000];//存储
"数"
的数组
double
dai_result;//运算的结果,是为了处理
M
运算(简介函数里有M的定义)
int
biao
=
0;//和dia_result
一样,为了处理
M
运算
char
line[SIZE];//输入的所要计算的表达式
void
init()//初始化
{
compare[fu[0]]
=
-2;//用数字的大小表现出符号的优先级
compare[fu[1]]
=
-1;
compare[fu[2]]
=
2;
compare[fu[3]]
=
2;
compare[fu[4]]
=
4;
compare[fu[5]]
=
4;
compare[fu[6]]
=
4;
compare[fu[7]]
=
5;
for(int
i
=
8;
i
<=
15;
i++)
compare[fu[i]]
=
6;
compare[fu[16]]
=
7;
S_num.base
=
(double*)malloc(sizeof(double)*SIZE);//为栈开辟空间
S_char.base
=
(char*)malloc(sizeof(char)*SIZE);//同上
S_num.top
=
S_num.base;
S_char.top
=
S_char.base;
}
void
push_num(double
n)//数字进栈
{
*
++S_num.top
=
n;
}
void
push_char(char
c)//运算符号进栈
{
*
++S_char.top
=
c;
}
double
pop_num()//数字出栈
{
double
m
=
*S_num.top;
S_num.top--;
return
m;
}
char
pop_char()//运算符号出栈
{
char
cc
=
*S_char.top;
S_char.top--;
return
cc;
}
char
get_top_char()//得到运算符号的栈中最顶端的运算符号
{
return
*S_char.top;
}
double
operate(double
y,
char
c,
double
x)//
对两个数计算
(
含是双目运算符
:
如
*,
/
等等
)
{
double
r;
if(c
==
'-')
r
=
x
-
y;
else
if(c
==
'+')
r
=
x
+
y;
else
if(c
==
'/'
&&
y
!=
0)
r
=
x
/
y;
else
if(c
==
'*')
r
=
x
*
y;
else
if(c
==
'^')
{
r
=
1;
for(int
i
=
1;
i
<=
y;
i++)
r
*=
x;
}
else
if(c
==
'%')
{
int
r0
=
(int)x
%
(int)y;
r
=
double(r0);
}
return
r;
}
double
operate_one(double
one,
char
cc)//
对一个数运算
(
含单目运算符
:
如
log(L),
sin(S)
等等
)
{
double
r;
if(cc
==
'Q')
r
=
sqrt(one);
else
if(cc
==
'C')
r
=
cos(one);
else
if(cc
==
'S')
r
=
sin(one);
else
if(cc
==
'T')
r
=
tan(one);
else
if(cc
==
'c')
i++;
}
i++;
}
if(ge
>=
3)
return
0;
else
return
1;
}
void
output(double
result)//
打出结果
{
printf("
所得结果是
:
");
cout<<result<<endl;
}
void
check()//
检查表达式是否合法
{
void
introce();
char
cc;//
决定计算器按哪种功能进行计算
double
result;//
结果
void
input();//
定义
if(
check_kuohao()
&&
check_char()
)//
看是否合法
,
合法则计算
{
result
=
compute();
output(result);
cout<<"
输入一个字符
'M'
或
'D'
或
'F',
决定是否继续
:
"<<endl;
while(cin>>cc)
{
if(cc
==
'M')
{
system("cls");
introce();
printf("
您上次所得结果为
:
");
cout<<result<<endl;
cout<<"
在上次计算结果的基础上
,
请继续输入想计算的表达式
"<<endl;
dai_result
=
result;
biao
=
1;
input();//
输入表达式
break;
}
else
if(cc
==
'D')
{
system("cls");
introce();
cout<<"
计算器已清零
,
请输入您所要计算的表达式
"<<endl;
input();//
输入表达式
break;
}
else
if(cc
==
'F')
{
system("cls");
cout<<"
计算器关闭
,
谢谢使用
!"<<endl;
break;
}
else
{
cout<<"
所输入字符无效
,
请输入一个字符
'M'
或
'D'
或
'F'!"<<endl;
continue;
}
}
}
else//
不合法,分两种不合法
{
if(check_kuohao()
==
0
&&
check_char()
==
1)
{
cout<<"
您所输入的表达式括号不匹配
,
请重新输入
:"<<endl;
input();//
输入表达式
}
else
{
cout<<"
您所输入的表达式不合法
,
请重新输入
:"<<endl;
input();//
输入表达式
}
}
}
void
tackle_fuhao()//
处理负号
{
node
*root,
*head,
*p,
*q,
*p1;
root
=
head
=
new
node;
head->next
=
NULL;
int
i;
for(i
=
0;
line[i]
!=
'\0';
i++)//
建立链表
{
p
=
new
node;
p->data
=
line[i];
p->next
=
head->next;
head->next
=
p;
head
=
p;
}
//
delete
p;
q
=
(node*)malloc(sizeof(node));
head
=
root;
if(root->next->data
==
'+'
||
root->next->data
==
'-')//
处理第一个字符
{
p
=
new
node;
p->data
=
'0';
p->next
=
head->next;
head->next
=
p;
}
if(root->next
!=
NULL)
{
for(q
=
root->next;
q;
q
=
q->next)
{
if(q->data
==
'('
&&
(q->next->data
==
'-'
||
q->next->data
==
'+'))
{
p
=
new
node;
p->data
=
'0';
p->next
=
q->next;
q->next
=
p;
}
}
}
//
delete
q;
p1
=
new
node;
int
qi
=
-1;
for(p1
=
root->next;
p1;
p1
=
p1->next)
{
line[++qi]
=
p1->data;
}
line[++qi]
=
'\0';
}
void
input()//
输入
{
cin>>line;
if(biao
==
0)
tackle_fuhao();//
处理负号
check();//
检查表达式是否合法
}
void
introce()//
对计算器的符号功能的简要介绍
{
cout<<"
计算器简要介绍
"<<endl;
cout<<"C(cos)
S(sin)
T(tan)
a(arccos)
c(arcsin)
"<<endl;
cout<<"7
8
9
/
on
t(arctan)
"<<endl;
cout<<"4
5
6
*
%
L(log)"<<endl;
cout<<"1
2
3
-
M(M+)
Q(sqrt)
"<<endl;
cout<<"0
.
+
^(
乘方
)
F(off)
Enter(=)
"<<endl;
cout<<"
对于对数输入
L2_5
表示以
2
为底
5
的对数
"<<endl;
cout<<"M(
在前面结果的基础上继续计算,
如:
上次结果为
10
,
现输入
+10.5*2)"<<endl;
cout<<"D(
清零并继续输入
)"<<endl;
cout<<"F(
计算机关闭
)"<<endl;
cout<<"
输入
P
就代表输入圆周率
,
输入
E
代表输入自然对数
"<<endl<<endl;
}
void
print()
{
system("color
2");
cout<<"
欢迎使用本计算器
"<<endl;
cout<<"
输入一个字符串
on,
计算器开始启动
"<<endl;
}
void
if_start()//
是否启动计算器
{
string
start;
print();
while(cin>>start)
{
if(start
!=
"on")
{
cout<<"
您所输入的字符无效
,
请按照介绍的继续输入
:"<<endl;
continue;
}
else
break;
}
if(start
==
"on")
{
system("color
5");//
颜色的处理
system("cls");//
刷屏
}
introce();//
对计算器的简要介绍
cout<<"
现在
,
请输入您所要计算的表达式
"<<endl;
input();//
输入所要计算的表达式
}
int
main()
{
if_start();//
调用是否启动计算器函数
return
0;
}
r
=
acos(one);
else
if(cc
==
's')
r
=
asin(one);
else
if(cc
==
't')
r
=
atan(one);
H. 关于C语言编辑算数的程序
你先分析
你这个程序都需要完成什么
完成的顺序谁先谁后。
然后每个功能都用一个函数来完成
比如
借书
还书
等等
最后完善每个函数之间的关系
比如
谁调用谁
形参的传递
请采纳
I. C语言两个整型数的算术运算
第1空填 scanf("%d",&a);
第2空填 scanf("%d",&b);
第3空填 a+b;
第4空填 a-b;
第5空填 a*b;
第6空填 a/b;
第7空填 a%b;
第8空填 printf("差=%d ",sub);
第9空填 printf("积=%d ",mul);
第10空填 printf("商=%d ",div);
第11空填 printf("余数=%d ",oct);
完整的C语言程序如下
#include<stdio.h>
int main(void)
{
int a,b;//a和b是输入的两个整型值
int add,sub,mul,div,oct;//分别存放和,差,积,商,余数
scanf("%d",&a);//输入a
scanf("%d",&b);//输入b
add=a+b;//和
sub=a-b;//差
mul=a*b;//积
div=a/b;//商
oct=a%b;//余数
printf("和=%d ",add);//输出和
printf("差=%d ",sub);//输出差
printf("积=%d ",mul);//输出积
printf("商=%d ",div);//输出商
printf("余数=%d ",oct);//输出余数
return 0;
}
J. C语言,编写一个算术四则运算的程序
主要是你的scanf输入有问题,你可以打印一下输入的x,y值看是否正确, 将scanf("%f,%f,%c",&x,&y,&z);改成scanf("%lf,%lf,%c",&x,&y,&z);double类型应该为lf%