• 湖南省第6届程序大赛第二题 弟弟的作业


    题目B

    弟弟的作业

    你的弟弟刚做完了“100以内数的加减法”这部分的作业,请你帮他检查一下。每道题目(包括弟弟的答案)的格式为a+b=c或者a-b=c,其中ab是作业中给出的,均为不超过100的非负整数;c是弟弟算出的答案,可能是不超过200的非负整数,也可能是单个字符"?",表示他不会算。

    输入

    输入文件包含不超过100行,以文件结束符结尾。每行包含一道题目,格式保证符合上述规定,且不包含任何空白字符。输入的所有整数均不含前导0。

    输出

    输出仅一行,包含一个非负整数,即弟弟答对的题目数量。

    样例输入

    样例输出

    1+2=3

    3-1=5

    6+7=?

    99-0=99

    2

     这一道题目唯一可能难到人的就是数据的输入,它可能是数字可能是‘?’。但是只要你学会了使用sscanf函数,这道题目就是几行代码的事情。我在这稍微解释一下:

     sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。

    它的返回值   如果转化成功则返回参数数目,失败则返回-1,错误原因存于errno中。 返回0表示失败     否则,表示正确格式化数据的个数    例如:sscanf(ch, "%d+%d=%d", &a, &b, &c);    如果三个变成都读入成功会返回3。 如果只读入了第一个整数则会返回1。证明无法从ch读入第二个整数。  

     1 #include <iostream>
     2 #include <stdio.h>
     3 using namespace std;
     4 char ch[50];
     5 int main()
     6 {
     7     int a,b,c,n=0;
     8     while(scanf("%s",ch)==1)
     9     {
    10         if(sscanf(ch,"%d+%d=%d",&a,&b,&c)==3&&a+b==c)n++;
    11         if(sscanf(ch,"%d-%d=%d",&a,&b,&c)==3&&a-b==c)n++;
    12     }
    13     printf("%d
    ",n);
    14     return 0;
    15 }
  • 相关阅读:
    从DataGridViewer导出Excel
    C#获取特定进程CPU和内存使用率
    51 nod 1265 四点共面
    51nod 1384 全排列
    51nod 2006 飞行员配对
    codeforces 839A
    codeforce 837C
    codeforces 837B
    codoforces 837A
    GIT
  • 原文地址:https://www.cnblogs.com/52why/p/5840646.html
Copyright © 2020-2023  润新知