wordpress网站添加阅读全文,贵州能源网站 中企动力建设,网络规划设计师考试资料,出国游做的好的网站计算机能力挑战初赛2020.18题
题目描述#xff1a; 输入一行由字符a~z和A~Z组成的字符串#xff0c;字符串长度10000#xff0c;
求其中任意两个字符出现次数的差值的绝对值
输入#xff1a; 第一行输入字符串 第二行输入两个字符。
输出#xff1a; 输出这…计算机能力挑战初赛2020.18题
题目描述 输入一行由字符a~z和A~Z组成的字符串字符串长度10000
求其中任意两个字符出现次数的差值的绝对值
输入 第一行输入字符串 第二行输入两个字符。
输出 输出这两个字符出现次数的差值的绝对值
输入样例 AbddeDfacd A d
输出样例 2
(解释:字符串中字符A出现了2次字符d出现了4次则结果为|2-4|2) 题目分析
#include stdio.h
#include string.h
#include math.hint main(void) {char str[10002];scanf(%s, str);char A;char B;A getchar();B getchar();int a 0;int b 0;int i;for (i 0; i strlen(str); i) {if (str[i] A || str[i] A 32 || str[i] A - 32) {a;}if (str[i] B || str[i] B 32 || str[i] B - 32) {b;}}printf(%d, abs(a - b));return 0;
}
一开始代码如上然而调试后发现scanf“%s”)虽然不会接收回车键但会将回车留在缓冲区。
这里可以使用getchar()来将换行吞掉。
然而接下来出现的问题是输入a之后的空格仍会被getchar()读取。
因此再次用getchar()吞掉空格。 最终代码
#include stdio.h
#include string.h
#include math.hint main(void) {char str[10002];scanf(%s, str);char A;char B;getchar();A getchar();getchar();scanf(%c, B);int a 0;int b 0;int i;for (i 0; i strlen(str); i) {if (str[i] A || str[i] A 32 || str[i] A - 32) {a;}if (str[i] B || str[i] B 32 || str[i] B - 32) {b;}}printf(%d, abs(a - b));return 0;
}