0
這是一個非常複雜的代碼,但是忍受着我。在循環中使用調用函數
此代碼用於檢查迴文。我遇到的問題是不知道如何從另一個函數和循環中調用函數。
這是有問題的行:
if (new_num != rev)
{
while (higher != calc_reverse(higher) && lower != calc_reverse(lower))
{
higher = calc_reverse(number++);
lower = calc_reverse(number--);
}
下面是我的程序,它參與了錯誤下半年的代碼。 當我使用這個我只是得到「rev(數字)」打印在一個無限循環,直到我強制結束代碼。
//Function Declaration
int calc_reverse(int new_num)
{
//Local Declarations
int count = 0; // number of digits in the number
int rev = 0; //the reverse of the number
int last; //the last digit of the number
//Calulations
while (new_num > 0)
{
last = new_num % 10;
rev = last + (rev * pow(10, count));
new_num = new_num/10;
count++;
}
printf("rev %d \n", rev);
fflush(stdout);
return(rev);
}
//function Decleration
void calc_closest(int count, int new_num, int rev, int number)
{
//Local declerations
int higher = 12; //the higher palindrome
int lower = 12; // the lower palindrome
printf(" %d, %d \n", new_num, rev);
fflush(stdout);
//Calculations
if (new_num == rev)
{
printf("The value input (%d) is a compact palindrome. \n", number);
}
if (new_num != rev)
{
while (higher != calc_reverse(higher) && lower != calc_reverse(lower))
{
higher = calc_reverse(number++);
lower = calc_reverse(number--);
}
if (higher == new_num && lower == new_num)
{
printf("Closest palindromes to %d are: %d, %d \n", number, lower, higher);
}
else if(higher == new_num)
{
printf("Closest palindromes to %d are: %d \n", number, higher);
}
else if (lower == new_num)
{
printf("Closest palindromes to %d are: %d \n", number, lower);
}
}
return;
}
好吧我認爲這是有效的,我只需要調整代碼早期發生的一些事情(主要是相反的功能,因爲它似乎並不總是工作)。一旦我修復了這些部分,我會讓你知道。謝謝您的幫助!!! – 2013-03-24 22:58:23