【50分】c语言多个小问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 01:31:35
//操作方法:例:45+5( 按回车)即可得出50。
其实本程序本意是输入45后回车,按加号(自动录入),再输入5回车得结论
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
float num,num2;
char sss,a;
printf("说明\n");
do
{
system("cls");
a='n';
scanf("%f",&num);//num不是只能接受数字么?为什么可以接受符号啊。而且输入的可是45+5的呀,当数组用了么?
sss=getchar();
//sss=getch();
if(sss!='+'&&sss!='-'&&sss!='/'&&sss!='*')//为什么要用&&不用||呢?“&&”不就是要所有都为“真”才能执行IF吗?
{printf("错误!\n");}
scanf("%f",&num2);//a=getchar();
if(sss=='+') printf("%.2f\n",num+num2);
if(sss=='-') printf("%.2f\n",num-num2);
if(sss=='*') printf("%.2f\n",num*num2);
if(sss=='/') printf("%.2f&

第一个问题: scanf("%f",&num);//num不是只能接受数字么?为什么可以接受符号啊。而且输入的可是45+5的呀,当数组用了么?
答:可能楼主在钻牛角尖了~~这样理解吧,%f(格式输入)这里就是要求输入一个单精度的浮点型数据,所以这样没有什么问题!
第二个问题:)//为什么要用&&不用||呢?“&&”不就是要所有都为“真”才能执行IF吗?
答:这里楼主理解错误了,sss是字符对吧,你的意思是要它执行加减乘除对吧,&&用得对啊,没有错,因为只要它不是加减乘除的话就是错误呢?好好想想,你这样问的话是你想的方向错了~~~

scanf("%f",&num)表示从键盘录入一个float型的数据并且赋值给num变量.
如果输入的不是float型的.那么会把该字符转换成对应的ASCII码 然后把这个ASCII值再转换成对应的float的值传给变量num.
总之 scanf最好按他的格式控制符输入,否则未必达到理想效果.

&&表示并且 而||表示或者
这个问题的前提是sss不是+ 并且不是- 并且不是* 并且不是/ 所以不能用||
如果想改成|| 要改成:
sss=='+'&&sss=='-'&&sss=='/'&&sss=='*'
注意你对==和!=的理解.