1 条题解

  • 0
    @ 2025-8-24 21:32:18

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar su226
    我不知道为什么AC,但是AC了;也不知道为什么WA,但是WA了。

    搬运于2025-08-24 21:32:18,当前版本为作者最后更新于2018-12-14 22:53:01,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    大佬们的代码我都看不懂,下面让我来介绍一下 sscanf & sprintf 大法!

    #include <iostream> //cin & cout 用iostream
    #include <cstring> //memset & strlen 用cstring
    #include <cstdio> //sscanf & sprintf 用cstdio
    using namespace std;
    int main(){
    	char a;//a用于存储运算符
    	int n,c,d;//n存储个数不解释,cd存储两个数字
    	char s[100],b[10];//s存储最终的字符串,b临时变量
    	cin>>n;
    	for(int i=0;i<n;i++){
    		cin>>b;//输入一串字符,有可能是运算符,也有可能是数字
    		if(b[0]>='a' && b[0]<='z'){
    			a=b[0];//如果是运算符就存入a,然后输入数字
    			cin>>c>>d;
    		}else{
    			sscanf(b,"%d",&c);//如果是数字就转换b为int存储到第一个数字
    			cin>>d;//然后输入剩下的第二个数字
    		}
    		memset(s,0,sizeof(s));//清空原有的字符串,防止长度判断错误
    		if(a=='a')//用sprintf格式化
    			sprintf(s,"%d+%d=%d",c,d,c+d);
    		else if(a=='b')
    			sprintf(s,"%d-%d=%d",c,d,c-d);
    		else if(a=='c')
    			sprintf(s,"%d*%d=%d",c,d,c*d);
    		cout<<s<<endl<<strlen(s)<<endl;//输出字符串和字符串长度
    	}
    	return 0;
    }
    
    
    
    • 1

    信息

    ID
    923
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者