关于c语言的一道题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于c语言的一道题相关的知识,希望对你有一定的参考价值。

题目是这样的:输入num1 operator num2这个表达式,已知num1和num2都为整数,operator为+、-、*和/中的一种,请编写程序,设计这个计算器。
我是这样做的:

#include<stdio.h>
int main()

int num1,num2;
char operato;
printf("type in an expression:");
scanf("%d%c%d",&num1,&operato,&num2);
switch(operato)
case'+':
printf("=%.0f\n",num1+num2);
break;
case'-':
printf("=%.0f\n",num1-num2);
break;
case'*':
printf("=%.0f\n",num1*num2);
break;
case'/':
printf("=%.0f\n",num1/num2);
break;
default:
printf("Unknown operator\n");

return 0;


但是不对呢,在运行的时候,出来一个对话框如下

什么意思啊,高手请解答。如果我做错了,请把正确答案写下来,麻烦了

我用的Dev cpp编的,运行时输入后输出总是0
看到你输出是%.0f,于是把代码改了下:
#include<stdio.h>
int main()

int num1,num2;
char operato;
printf("type in an expression:");
scanf("%d%c%d",&num1,&operato,&num2);
switch(operato)
case'+':
printf("=%.0f\n",(float)num1+num2);
break;
case'-':
printf("=%.0f\n",(float)num1-num2);
break;
case'*':
printf("=%.0f\n",(float)num1*num2);
break;
case'/':
printf("=%.0f\n",(float)num1/num2);
break;
default:
printf("Unknown operator\n");

return 0;

运行结果就正确了。但是考虑到两个整数相除结果往往是小数,建议把最后一个输出改成 printf("=%.2f\n",(float)num1/num2);
参考技术A 类型不匹配。

如果一定要用%f输出的话:
printf("=%.0f\n",(float)(num1+num2));

以上是关于关于c语言的一道题的主要内容,如果未能解决你的问题,请参考以下文章

用C语言写出一道关于随机数的编程题

关于定义顺序和内存分配的关系--记一道不严谨的C语言题

关于C语言的一道习题!

关于NOI2008普及组C语言复赛的一道题

计算机操作系统关于PV操作的一道题

高分求助一道C语言设计题 不难!!