解题思路:

                   通过获取字符串中的数字和算数符进行判断。

                   详情请看代码。

注意事项:
                   因为字符中数字的ASCII码值是从48开始,所以获取的字符串中数字需要减去'0'或48

参考代码:

#include<stdio.h>

#include<string.h>

int main() {


int correctNum=0;//正确答案的数量

char str[15];//输入的字符串,式子


while (scanf("%s", str) != EOF) {


int len = strlen(str);//获取输入的字符串式子长度

int a, i = 0, b, result;

int index[4];//式子中算数符的下标


//获取算数符所在式子中的下标(式子中有2~3个符号,第一个是+或-,第二个是=,第三个是?)

for (int j = 0; j < len; j++) {

if (str[j] == '+' || str[j] == '-' || str[j] == '=' )

index[i++] = j;

}

//如果等号后面不是?,则进行后续的判断

if (str[index[1] + 1] != '?')

{

/************************获取式子中的第一个数字*******************/

if (index[0] == 3)

a = 100;

else if (index[0] == 2)

a = (str[0]-'0') * 10 + (str[1]-'0');

else if (index[0] == 1)

a = str[0] - '0';


/************************获取式子中的第二个数字*******************/

if (index[1] - index[0] == 4)

b = 100;

else if (index[1] - index[0] == 3)

b =(str[index[0] + 1]-'0') * 10 + str[index[0] + 2]-'0';

else if (index[1] - index[0] == 2)

b = str[index[0] + 1]-'0';



/*************************获取式子中的计算结果********************/

if (len-index[1]==4)

result =(str[index[1] + 1] -'0')* 100 + (str[index[1] + 2] -'0')* 10 + str[index[1]+3]-'0';

else if (len - index[1] == 3)

result = (str[index[1] + 1] -'0')* 10 + str[index[1] + 2]-'0';

else if (len - index[1] == 2)

result = str[index[1] + 1]-'0';


/*****************获取式子中的算数符,并计算出正确的结果***************/

if (str[index[0]] == '+')

{

if (result == a + b)//结果正确则correctNum+1

correctNum++;

}

else if (str[index[0]] == '-')

{

if (result == a - b)

correctNum++;

}

}

}


//输出正确答案的个数

printf("%d", correctNum);

return 0;

}


点赞(0)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论