其实还是花了挺长时间做这个题的,感觉还是自己做的题太少了。做完后参考其他人的题解,发现自己的方法果然还是太老实,用于学习还好,要是真的笔试的时候就太不够聪明了。

继续刷题继续学习!!

参考代码如下:

#include <stdio.h>
#include <math.h>
#include <string.h>

int main()
{
    char str[100];
    int  flag;          //设立一个标志符,记录输入的算术式中运算符是‘+’还是‘-’
    int  rightnum = 0;  //答对的题目总数,初始化为0
    int  line = 0;      //输入的行数
    
    while (scanf("%s", str) != EOF && line <= 100) //以文件结束符结尾,且输入的行数要求不超过100行
    {
        //1) 首先将算术式中的'+'或'-',和'='换成空格符' ',并设立flag
        int len = strlen(str);
        int j;
        for (j = 0; j < len; j++)
        {
            if (str[j] == '+')
            {
                flag = 1; //若该算术式中运算符是'+',flag设为1
                str[j] = ' ';
            }
            if (str[j] == '-')
            {
                flag = -1; //若该算术式中运算符是'-',flag设为-1
                str[j] = ' ';
            }
            if (str[j] == '=')
            {
                str[j] = ' ';
            }
        }
        //此时该算术式已经变成形式“a b c”的字符串,a、b、c均为数

        //2) 接下来利用strtok分隔字符串,分割三次,分割为三个字符串,并分别转化为整型数字
        char *token1, *token2, *token3;
        int a, b, c;
        token1 = strtok(str, " ");
        a = atoi(token1);

        token2 = strtok(NULL, " ");
        b = atoi(token2);

        token3 = strtok(NULL, " ");
        c = atoi(token3);

        if (a > 100 || b > 100) //题目要求,a和b不能超过100,若不满足,则跳出这次循环
        {
            continue;
        }
        
        //3) 根据flag标记,来验证所输入算术式是否正确
        if (flag == 1) //加法运算
        {
            if ((a + b) == c)
            {
                rightnum++;
            }
        }

        if (flag == -1) //减法运算
        {
            if ((a - b) == c)
            {
                rightnum++;
            }
        }

        line++; //输入行数+1,题目要求不能输入超过100行
    }

    printf("%d\n", rightnum);

    return 0;
}

欢迎留言交流 相互学习!

点赞(1)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论