- S笔记
-
#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;
}
运行结果:
扩展资料:
return表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。
return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
- 蓓蓓
-
#include
#include
#include
#include
#define MaxQSize 80
float qlist[MaxQSize],qlist1[MaxQSize],qlist2[MaxQSize]; //定义三个全局队列
int front=0,rear=0,front1=0,front2=0,rear1=0,rear2=0,count=0,count1=0,count2=0;//定义三个队列头结点、尾结点、数据个数
main()
{
char c[80];
void Enter(float),pop(),ClearStack();
printf("input string:(n:sin,o:cos,s:sqrt) ");
while(gets(c),*c!="q" ||*c!="Q")
{
switch(*c)
{
case "+":
case "*":
case "s":
case "n": //求SIN
case "o": //求COS
case "/": //将符号入第一个队列
{
if(count==MaxQSize)
{
printf("Quere overflow!");
exit(1);
}
count++;
qlist[rear]=*c;
rear=(rear+1)%MaxQSize;
break;}
case "-":
{
if(strlen(c)>1) //如果是负号,则将负号和数一起入第二个队列
Enter(atof(c));
else //否则,说明是减号,入第一队列
if(count==MaxQSize)
{
printf("Quere overflow!");
exit(1);
}
count++;
qlist[rear]=*c;
rear=(rear+1)%MaxQSize;
break;}
case "=":
pop(); //显示结果
break;
case "c":
ClearStack();
break;
case "q":
ClearStack();
exit(1);
default:
Enter(atof(c));
break;
}
}
return 0;
}
void Enter(float num) //将数据入第二个队列
{
if(count1==MaxQSize)
{
printf("Queue overflow! ");
exit(1);
}
count1++;
qlist1[rear1]=num;
rear1=(rear1+1)%MaxQSize;
}
void ClearStack() //将三个队列清空
{
count=0;
count1=0;
count2=0;
front=0;
rear=0;
front1=0;
rear1=0;
front2=0;
rear2=0;
}
void pop() //显示结果
{
float QFront(float num1,float num2,char *temp);
float num1,num2;
float sum;
char temp;
temp=qlist[front]; //将第一个队列中的头结点读出来
while(count1!=0) //判断第二个队列是否有数
{
temp=qlist[front]; //将队列中头结点读出来
sum=QFront(num1,num2,&temp);
count--;
front=(front+1)%MaxQSize;//将第一个队列头指针加1
}
if(count!=0 && temp=="s")
sum=sqrt(qlist2[front2]);
if(count!=0 && temp=="n")
sum=sin(qlist2[front2]);
if(count!=0 && temp=="o")
sum=cos(qlist2[front2]);
printf("%f",sum);
}
float QFront(float num1,float num2,char *temp)
{
float number,numb1;
float QFront1();
void QInsert(float);
num1=QFront1(); //先读出一个数
switch(*temp)
{
case "+":
if(count2==0)
{
num2=QFront1();//读出第二个数
number=num1+num2;
QInsert(number);//将结果存入第三个队列
}
else
{
number=num1+qlist2[front2];
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
case "-":
if(count2==0)
{
num2=QFront1();
number=num1-num2;
printf("number=%f ",number);
QInsert(number);
}
else
{
number=qlist2[front2]-num1;
printf("number=%f ",number);
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
case "*":
if(count2==0) //如果第三个队列中没有数据,则从第二个队列中读出一个数据
{
num2=QFront1();
number=num1*num2;
QInsert(number);
}
else //否则,从第三个队列中读出数据
{
number=qlist2[front2]*num1;
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
case "/":
if(count2==0)
{
num2=QFront1();
if(num2==0)
{
printf("divied by 0");
ClearStack();
exit(1);
}
else
{
number=num1/num2;
QInsert(number);
}
}
else
{
if(num1==0)
{
printf("divide by 0");
ClearStack();
exit(1);
}
else
{
number=qlist2[front2]/num1;
front2=(front2+1)%MaxQSize;
QInsert(number);
}
}
break;
case "s":
if(count2==0)
{
number=sqrt(num1);
QInsert(number);
}
else
{
number=sqrt(qlist2[front2]);
printf("number=%d ",number);
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
case "n":
if(count2==0)
{
number=sin(num1);
QInsert(number);
}
else
{
number=sin(qlist2[front2]);
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
case "o":
if(count2==0)
{
number=cos(num1);
printf("number=%d ",number);
QInsert(number);
}
else
{
number=cos(qlist2[front2]);
printf("number=%d ",number);
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
}
return number;
}
float QFront1() //从第一个数据读数据
{
float temp;
if(count1==0)
{
printf("Deleting from an empty queue! ");
exit(1);
}
temp=qlist1[front1];
count1--;
front1=(front1+1)%MaxQSize;
return temp;
}
void QInsert(float number) //将结果存入第三个队列
{
if(count2==MaxQSize)
{
printf("Queue overflow! ");
exit(1);
}
count2++;
qlist2[rear2]=number;
rear2=(rear2+1)%MaxQSize;
}
其实这个程序用链表实现更好,但是由于时间关系,所以用了数组。当然,这个程序还不是很完善,还有很多地方需要改进,比如可以用图形界面来进行操作、可以将三个队列放入一个结构体中等。
- 慧慧
-
/*
2013年12月23日 12:43:46
目的:计算器的实现
*/
# include <stdio.h>
# include <ctype.h>
# include <math.h>
char get_choice(void); //获取用户输入的选项,并建立目
char get_first(void); //获取用户输入的选项,并剔除错误输入
float get_int(void); //获取用户输入的计算值
float add(void); //定义加法函数
float subtraction(void); //定义减法函数
float multiplication(void); //定义乘法函数
float division(void); //定义除法函数
float extract(void); //定义开方函数
float square(void); //定义平方函数
float cube(void); //定义立方函数
int count = 0;
int main(void)
{
char choice;
printf("***欢迎使用由小钱制作的计算器*** ");
choice = get_choice();
while(choice != "q")
{
switch(choice)
{
case "a":
add(); break;
case "b":
subtraction(); break;
case "c":
multiplication(); break;
case "d":
division(); break;
case "e":
extract(); break;
case "f":
square(); break;
case "g":
cube(); break;
default :
printf("您输入有误,请重新输入:"); break;
}
fflush(stdin);
choice = get_choice();
}
printf("bye");
return 0;
}
//获取用户输入的选项,并建立目录
char get_choice(void)
{
char ch;
int a = 0;
//建立目录
printf(" -------------------------------- ");
printf("a. 加法 b. 减法 c. 乘法 d. 除法 ");
printf("e. 开方 f. 平方 g. 立方 q. 退出 ");
printf("-------------------------------- ");
printf("请输入你的选项:");
ch = get_first();
while(ch == " " || ch == " " || ch == " ")
ch = get_first();
//判断用户输入的选项是否有误
while((ch<"a" || ch>"g") && ch !="q")
{
putchar(ch);
printf(" 你输入的选项有误,请重新输入:");
ch = get_first();
}
return ch;
}
//获取用户输入的选项,并剔除错误输入
char get_first(void)
{
char ch;
ch = getchar();
//剔除由用户输入选项时产生的换行符
while(ch == " ")
{
ch = getchar();
}
return ch;
}
//获取用户输入的计算值
float get_int(void)
{
float input;
char ch;
int a;
if(count == 0)
printf("亲!请输入数值:");
if(count == 1)
printf("亲!请输入第一个数值:");
if(count == 2)
printf("亲!请输入第二个数值:");
a = scanf("%f", &input);
//判断用户的输入是否为一个数值
while(a != 1)
{
//剔除用户输入错误的字符
while((ch = getchar()) != " ")
{
putchar(ch);
printf(" 不是一个数值,请输入例如3、111.2、或者-1");
a = scanf("%f", &input);
}
}
return input;
}
//定义加法函数
float add(void)
{
float i, j, sum;
count = 0;
count = count+1;
i = get_int();
count = count+1;
j = get_int();
sum = i + j;
printf("%.2f + %.2f = %.2f ", i, j, sum);
return sum;
}
//定义减法函数
float subtraction(void)
{
float i, j, sum;
count = 0;
count = count+1;
i = get_int();
count = count+1;
j = get_int();
sum = i - j;
printf("%.2f - %.2f = %.2f ", i, j, sum);
return sum;
}
//定义乘法函数
float multiplication(void)
{
float i, j, sum;
count = 0;
count = count+1;
i = get_int();
count = count+1;
j = get_int();
sum = i * j;
printf("%.2f * %.2f = %.2f ", i, j, sum);
return sum;
}
//定义除法函数
float division(void)
{
float i, j, sum;
count = 0;
count = count+1;
i = get_int();
count = count+1;
j = get_int();
//判断除数是否为0
while(j == 0)
{
printf("除数不能为0 请重新输入!!! ");
j = get_int();
}
sum = i / j;
printf("%.2f / %.2f = %.2f ", i, j, sum);
return sum;
}
//定义开方函数
float extract(void)
{
float i, sum;
count = 0;
i = get_int();
//判断开方数是否小于0,如果小于0,则让用户重新输入
while(i < 0)
{
printf("请输入大于0的数值 ");
i = get_int();
}
sum = sqrt(i);
printf("%.2f的开方等于%.2f ", i, sum);
return sum;
}
//定义平方函数
float square(void)
{
float i, sum;
count = 0;
i = get_int();
sum = i * i;
printf("%.2f的平方等于%.2f ", i, sum);
return sum;
}
//定义立方函数
float cube(void)
{
float i, sum;
count = 0;
i = get_int();
sum = i * i * i;
printf("%f的立方等于%.3f ", i, sum);
return sum;
}
- 阿啵呲嘚
-
#include<cstdio>
int main()
{
for(;;){
int a,b;
char c;
scanf("%d %d %c",&a,&b,&c);
if(c=="+"){
printf("%d",a+b);
}
if(c=="-"){
printf("%d",a-b);
}
if(c=="*"){
printf("%d",a*b);
}
if(c=="/"){
printf("%d",a/b);
}
}
return 0;
}
- 瑞瑞爱吃桃
-
C,开头的计算器有很多
- 里论外几
-
问题在这里应该不会有很好的答案,因为你不愿意动脑筋,需要别人动脑筋帮你解决