原题链接:弟弟的作业
其实还是花了挺长时间做这个题的,感觉还是自己做的题太少了。做完后参考其他人的题解,发现自己的方法果然还是太老实,用于学习还好,要是真的笔试的时候就太不够聪明了。
继续刷题继续学习!!
参考代码如下:
#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;
}欢迎留言交流 相互学习!
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复