其实还是花了挺长时间做这个题的,感觉还是自己做的题太少了。做完后参考其他人的题解,发现自己的方法果然还是太老实,用于学习还好,要是真的笔试的时候就太不够聪明了。
继续刷题继续学习!!
参考代码如下:
#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 人评分
数组输出 (C语言代码)--此题的题目描述有问题浏览:1814 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:594 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:685 |
Hello, world! (C++代码)浏览:1744 |
字符逆序 (C语言代码)浏览:609 |
1113题解浏览:784 |
1013题解浏览:552 |
1025题解浏览:732 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:653 |