其实还是花了挺长时间做这个题的,感觉还是自己做的题太少了。做完后参考其他人的题解,发现自己的方法果然还是太老实,用于学习还好,要是真的笔试的时候就太不够聪明了。
继续刷题继续学习!!
参考代码如下:
#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分
3 人评分
A+B for Input-Output Practice (III) (C语言代码)浏览:622 |
校门外的树 (C++代码)浏览:907 |
C语言考试练习题_保留字母 (C语言代码)浏览:616 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:623 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:559 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:623 |
【回文数(二)】 (C语言代码)浏览:800 |
【排队买票】 (C语言代码)浏览:944 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:716 |
【计算两点间的距离】 (C语言代码)浏览:1522 |