2023-11-12 15:24来源:m.sf1369.com作者:宇宇
#includeint main() { double a,b; char c; scanf(%lf%c%lf,&a,&c,&b); /* switch(c) { case'+': printf(=%.2lf.\n,a+b); break; case'-': printf(=%lf.\n,a-b); break; case'*': printf(=%lf.\n,a*b); break; case'/': { if(b==0) printf(Error.\n); else printf(=%lf.\n,a/b); } break; } */ if(c=='+') printf(=%lf.\n,a+b); else if(c=='-') printf(=%lf.\n,a-b); else if(c=='*') printf(=%lf.\n,a*b); else if(c=='/') { if(b==0) printf(Error.\n); else printf(=%lf.\n,a/b); } } /* 第二题(题目不完整,我按照用户输入石头剪刀布,与电脑自动生成得对比。) */ #include #include//rand(),srand() #include #include int main() { char ch[10]; int a; int roll; srand((unsigned int) time(0));//随机种子。 gets(ch); a=strcmp(ch,剪刀); //剪刀0 石头1 布 -1 roll=rand()%3;//(可取值0,1,2) switch(a) { case 0: { if(roll==0) printf(剪刀\n平手。); else if(roll==1) printf(布\n您获胜。); else printf(石头\n电脑胜。); } break; case 1: { if(roll==0) printf(剪刀\你获胜。); else if(roll==1) printf(布\n电脑胜。); else printf(石头\n平手。); } break; case -1: { if(roll==0) printf(剪刀\电脑胜。); else if(roll==1) printf(布\n平手。); else printf(石头\您获胜。); } break; } }
a+b;
if(b!=0)
scanf(%d%d,&num1,&num2);
case '-': result=sub(num1,num2);break;
case '*': result=mul(num1,num2);break;
case '/': result=div(num1,num2);break;
你这种写法不规范,不同编译器可能有不同结果的,要避免。
出现一样结果是因为你用的编译器自动调整了,printf要按什么方式展示,它就会进行对应的转换来进行展示,原始数据类型无关痛痒,因为printf输出时进行了调整,所以一样。
思路是这样的,m为结果的高位,n为结果的低位,如果n共有x位,则结果为高位乘10的x次方加低位,写成代码为:
#include<stdio.h>
#include<math.h>
int main(){
int m,n,result;
scanf(%d%d,&m,&n);
//计算n的位数 count
int x = n;
int count=0;
while(x !=0){
x /= 10;
count++;
}
//结果=m*10的count次方+n
result = m * pow(10,count) + n;
printf(%d,result);
}
第一个地方改错是把分子上的1改为1.0。第二个地方改错是把输入语句中的%lf,改为%d,并且双引号多打了一顿。 第二个程序改错是fun函数漏掉了类型说明,应该加一个double。还有就是对变量fac的赋初值不是0.0,应该要改为1.0。