我想计算int中相同使用数量的数量。
if循环不起作用的原因是什么?
#include <stdio.h>
int main(void){
unsigned int digit;
unsigned int n;
int current_digit;
scanf("%u", &digit);
scanf("%u", &n);
int i = 0;
while(current_digit != n) {
current_digit = n % 10;
n /= 10;
printf("%i", current_digit);
if (current_digit == digit){
i++;
}
}
printf("%d", i);
}
我希望if循环检查digit
中使用的时间n
。但if循环无法正常工作。
示例:digit
= 1 n
= 11111然后结果应为5,因为1在n
中使用了5次,但输出为4
答案 0 :(得分:1)
你&#34;覆盖&#34;当您使用digit
分配原始digit = n % 10
(您正在寻找的那个)时。如果您考虑变量的命名,可以使用searched_digit
和current_digit
,然后检查为if (current_digit == searched_digit)
。
(不可否认,这些详细的变量名称不是惯用的C,但如果您只是在学习,请不要使用含糊不清或含糊不清的命名来增加复杂性。)
此外,while
条件需要一些工作,digit != n
可能永远不会错误...尝试循环,直到没有更多数字。
答案 1 :(得分:0)
您正在编写代码以撤消您要求scanf()
为您执行的操作,将文本数字组合成数字。相反,如果你使用未转换的文本,它会更简单:
#include <stdio.h>
int main () {
char character, string[1024];
(void) scanf("%c", &character);
(void) scanf("%s", string);
int count = 0;
for (char *pointer = string; *pointer != '\0'; ++pointer) {
if (*pointer == character) {
count++;
}
}
printf("%d\n", count);
return 0;
}
<强> USAGE 强>
> ./a.out
1 11111
5
>
这可能无法解决您的问题,但如果是这样,那么问题可能比您所描述的更多(例如,字母出现在数据中,因此您需要scanf()
来帮助隔离数字等。)