创建一个函数来检查数字是否为回文
Creating a function to check if a number is Palindrome
我正在尝试创建一个函数,如果数字是回文,则 return 为真,如果数字不是,则 return 为假,所以首先我创建了一个函数来反转数字,然后是另一个函数判断反转后的数字是否等于原始数字,但它 return 对我来说不是正确的输出,有什么帮助吗?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
//Reversing a number
int DigitsReversing(int num)
{
int resultofR = 0;
while (num > 0)
{
resultofR = resultofR * 10 + num % 10;
num = num / 10;
}
return resultofR;
}
//telling if the original number equal to the reversed number if yes return if not return false
int isPali(int num)
{
DigitsReversing(num);
int resultofR;
if (num == resultofR)
return true;
else
return false;
return 0;
}
//calling the function
int main()
{
int num;
scanf("%d", &num);
printf("%d", isPali(num));
return 0;
}
已编辑 ****:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
int DigitsReversing(int num)
{
int resultofR = 0;
while (num > 0)
{
resultofR = resultofR * 10 + num % 10;
num = num / 10;
}
return resultofR;
}
bool isPali(int num , int resultofR)
{
resultofR = DigitsReversing(num);
if (num == resultofR)
return true;
else
return false;
}
int main()
{
int num, resultofR;
scanf("%d", &num);
resultofR = DigitsReversing(num);
isPali(num, resultofR);
C 确实有布尔数据类型。通常,0 为假,1 为真。他们 return 值 1 表示真,0 表示假。
正如@exnihilo 和@bob__ 所建议的那样,C 确实具有布尔数据类型。
#include<stdio.h>
#include<math.h>
//Reversing a number
int DigitsReversing(int num)
{
int resultofR = 0;
while (num > 0)
{
resultofR = resultofR * 10 + num % 10;
num = num / 10;
}
return resultofR;
}
//telling if the original number equal to the reversed number if yes return if not return false
void isPali(int num)
{
int resultofR= DigitsReversing(num);
if (num == resultofR)
printf("True");
else
printf("False");
}
//calling the function
int main()
{
int num;
scanf("%d",&num);
isPali(num);
return 0;
}
输出
对于非回文数字。
9998
False
--------------------------------
Process exited after 10.35 seconds with return value 0
Press any key to continue . . .
对于回文数。
9999
True
--------------------------------
Process exited after 10.35 seconds with return value 0
Press any key to continue . . .
发布的片段显示了一些基本主题的混淆,例如将参数传递给函数和收集 returned 值的正确方法,或者只是 "output" 和 [=22] 之间的区别=]值。
考虑一下,例如:
bool isPali(int num , int resultofR)
{ // ^^^^^^^^^ It's passed to the function...
resultofR = DigitsReversing(num); // <- and immediately overwritten by another value
if (num == resultofR)
return true;
else
return false;
}
int main()
{
int resultofR;
// ...
resultofR = DigitsReversing(num); // <-- This is effectually called twice
isPali(num, resultofR); // <-- The returned value is ignored
}
你只需要写一个函数
#include <stdbool.h>
bool is_palindrome(long num)
{
long reversed = 0;
for (long i = num; i > 0; i /= 10)
{
reversed = reversed * 10 + i % 10;
}
return reversed == num;
}
然后,调用它并正确解释它的 return 值,以生成想要的输出
int number;
scanf("%d", &number);
printf("%s\n", is_palindrome(number) ? "True" : "False");
我正在尝试创建一个函数,如果数字是回文,则 return 为真,如果数字不是,则 return 为假,所以首先我创建了一个函数来反转数字,然后是另一个函数判断反转后的数字是否等于原始数字,但它 return 对我来说不是正确的输出,有什么帮助吗?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
//Reversing a number
int DigitsReversing(int num)
{
int resultofR = 0;
while (num > 0)
{
resultofR = resultofR * 10 + num % 10;
num = num / 10;
}
return resultofR;
}
//telling if the original number equal to the reversed number if yes return if not return false
int isPali(int num)
{
DigitsReversing(num);
int resultofR;
if (num == resultofR)
return true;
else
return false;
return 0;
}
//calling the function
int main()
{
int num;
scanf("%d", &num);
printf("%d", isPali(num));
return 0;
}
已编辑 ****:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
int DigitsReversing(int num)
{
int resultofR = 0;
while (num > 0)
{
resultofR = resultofR * 10 + num % 10;
num = num / 10;
}
return resultofR;
}
bool isPali(int num , int resultofR)
{
resultofR = DigitsReversing(num);
if (num == resultofR)
return true;
else
return false;
}
int main()
{
int num, resultofR;
scanf("%d", &num);
resultofR = DigitsReversing(num);
isPali(num, resultofR);
C 确实有布尔数据类型。通常,0 为假,1 为真。他们 return 值 1 表示真,0 表示假。 正如@exnihilo 和@bob__ 所建议的那样,C 确实具有布尔数据类型。
#include<stdio.h>
#include<math.h>
//Reversing a number
int DigitsReversing(int num)
{
int resultofR = 0;
while (num > 0)
{
resultofR = resultofR * 10 + num % 10;
num = num / 10;
}
return resultofR;
}
//telling if the original number equal to the reversed number if yes return if not return false
void isPali(int num)
{
int resultofR= DigitsReversing(num);
if (num == resultofR)
printf("True");
else
printf("False");
}
//calling the function
int main()
{
int num;
scanf("%d",&num);
isPali(num);
return 0;
}
输出 对于非回文数字。
9998
False
--------------------------------
Process exited after 10.35 seconds with return value 0
Press any key to continue . . .
对于回文数。
9999
True
--------------------------------
Process exited after 10.35 seconds with return value 0
Press any key to continue . . .
发布的片段显示了一些基本主题的混淆,例如将参数传递给函数和收集 returned 值的正确方法,或者只是 "output" 和 [=22] 之间的区别=]值。
考虑一下,例如:
bool isPali(int num , int resultofR)
{ // ^^^^^^^^^ It's passed to the function...
resultofR = DigitsReversing(num); // <- and immediately overwritten by another value
if (num == resultofR)
return true;
else
return false;
}
int main()
{
int resultofR;
// ...
resultofR = DigitsReversing(num); // <-- This is effectually called twice
isPali(num, resultofR); // <-- The returned value is ignored
}
你只需要写一个函数
#include <stdbool.h>
bool is_palindrome(long num)
{
long reversed = 0;
for (long i = num; i > 0; i /= 10)
{
reversed = reversed * 10 + i % 10;
}
return reversed == num;
}
然后,调用它并正确解释它的 return 值,以生成想要的输出
int number;
scanf("%d", &number);
printf("%s\n", is_palindrome(number) ? "True" : "False");