为什么C中的for循环只能通过一次? [英] Why for loop in C only passes once?
本文介绍了为什么C中的for循环只能通过一次?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一段非常简单的代码,用于检查给定的数字是否为排列
I have a really simple piece of code that checks if a number given is a permutation
(数字位数< 8;每个数字仅显示一次)
(number of digits < 8; each digits shows up only once)
出于未知原因,带有标记注释(HERE
)的循环仅通过一次.有人可以帮我吗?
From unknown reasons to me for loop with marked comment ( HERE
) passes only once. Can anybody help me on that ?
#include <stdio.h>
#include <stdbool.h>
int num_digits(int number)
{
int digits = 0;
while (number) {
number /= 10;
digits++;
}
return digits;
}
int get_n_digit(int number, int which)
{
if(which > num_digits(number))
{
printf("This number %d does not have that many digits: %d\n",number, which);
return -1;
}
int to_return = number;
int i = 0;
for(i = 0; i < num_digits(number) - which;i++)
{
int digit = number % 10;
to_return /= 10;
}
printf("get_n_digit(%d,%d)=%d\n",number,which, to_return %10);
return to_return % 10;
}
bool permutation_check(int number)
{
bool to_return = true;
if(num_digits(number) > 8)
{
printf("Your number has more than 8 digits\n");
return false;
}
int temp[10];
int i;
for( i = 0; i < 10; i++)
{
temp[i]=0;
}
printf(" for( i = 0; i < num_digits(%d) = %d; i++)\n",number, num_digits(number));
for( i = 0; i < num_digits(number); i++);
{
//HERE
printf("temp[get_n_digit(%d,%d)]++;\n",number,i);
temp[get_n_digit(number,i)]++;
if( temp[get_n_digit(number,i)] > 1)
{
to_return = false;
}
}
for( i = 0; i < 10; i++)
{
printf("%d\n",temp[i]);
}
return to_return;
}
int main(void)
{
char line[256];
int i, a;
printf("Put a number to be checked for permutation condition.\n");
if (fgets(line, sizeof(line), stdin)) {
if (1 == sscanf(line, "%d", &i)) {
printf("This many digits in this number: %d\n", num_digits(i));
if(num_digits(i)<8)
{
if(permutation_check(i))
printf("This number is a permutation.\n");
else
printf("This number is NOT a permutation.\n");
}
}
}
return 0;
}
推荐答案
您的for语句结尾处有分号
You have a semicolon at the end of your for statement
for( i = 0; i < num_digits(number); i++); // <-- Semicolon
这篇关于为什么C中的for循环只能通过一次?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文