C语言实验报告四则运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C语言》课内实验报告
学生姓名:
及学号:
学院:
班级:
课程名称:C语言
实验题目:实验二选择结构程序设计
指导教师
姓名及职称:
年月日
一、实验目的
1.掌握逻辑表达式和if语句、嵌套的if语句、switch语句和break语句的格式、语义。
2.掌握选择结构程序设计方法。
二、实验内容
编写程序实现两个数的四则运算,要求从键盘输入进行运算的两个数字以及相应的运算符('+'、'-'、'*'、'/'),程序给出算数表达式及运算结果。(如下图所示,要求使用if语句和switch语句两种方法实现)
三、实验结果
1、流程图
2、源程序
(1)使用if语句
#include
void main()
{
float a,b;
char c;
printf("please input two numbers:");
scanf("%f%f",&a,&b);
getchar();
printf("\nplease input the operator:");
//fflush(stdin);
scanf("%c",&c);
printf("\n");
if(c=='+')
printf("%10.2f+%10.2f=%10.2f\n",a,b,a+b);
else if (c=='-')
printf("%10.2f-%10.2f=%10.2f\n",a,b,a-b);
else if (c=='*')
printf("%10.2f*%10.2f=%10.2f\n",a,b,a*b);
else if (c=='/')
printf("%10.2f/%10.2f=%10.2f\n",a,b,a/b);
else
printf("Input error!\n");
}
(2)使用switch语句
#include
void main()
{
float a,b;
char c;
printf("please input two numbers:");
scanf("%f%f",&a,&b); //输入a,b的值
getchar();
printf("\nplease input the operator:"); //输入操作符
scanf("%c",&c);
printf("\n");
switch(c) //判断输入操作符
{
case '+': //若操作符为'+',输出a+b printf("%10.2f+%10.2f=%10.2f\n",a,b,a+b);
break;
case '-': //若操作符为'-',输出a-b printf("%10.2f-%10.2f=%10.2f\n",a,b,a-b);
break;
case '*': //若操作符为'*',输出a*b printf("%10.2f*%10.2f=%10.2f\n",a,b,a*b);
break;
case '/': //若操作符为'/',输出a/b printf("%10.2f/%10.2f=%10.2f\n",a,b,a/b);
break;
default:
printf("Input error!\n");
}
}
2、运行结果
输入12、13以及+,得到结果如下:
输入12、13以及-,得到结果如下:
输入12、13以及*,得到结果如下:
输入12、13以及/,得到结果如下:
输入12、13以及a,得到结果如下:
3、结果分析
题目要求编程实现两个数的四则运算,因此只需判断输入的操作符为四则运算中的哪一个,编程时可以使用if语句或者switch语句实现判断过程。另外,输入的操作符有可能非法,这时程序会输出“Input error!”。
四、思考及总结
实验过程中,连续写两个scanf函数,想分别用来输入操作数及操作符,但是在运行时并不能将操作数和操作符的输入分开。通过上网搜索发现产生这个问题的原因是输入并不是在回车的时候结束,而是先存放在一个缓冲区中,这是输入的回车作为字符赋给操作符,这样就产生了错误。解决的办法找到两个,一个是使用getchar()命令将回车符接收,另外一个是使用fflush(stdin)将缓冲区清空。