回文数(小白的学习历程)

判断以个数是否是回文数。例:

input : 121
output : true

input : -121
output : false

input : 1232321
output : true

以上这些例子就是回文数,看一个数字是否对称。
我的方法寻要用到数组,或者是说字符串。C语言中有bool类型,但只是代表‘0’ false,‘1’ true.无法靠这给直接输出‘true’或‘false’。
说不清楚,上香喷喷的代码吧!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main(void)
{
    
    
	int i=0;
	char num[100];
	bool flag=false;
	printf("please input a set of number");
	printf("(Judge whether it is palindrome number):\n");

	scanf("%s", num);
	int length = strlen(num);
	while (i < (length/2)) {
    
    
		if (num[i] == num[length - i - 1])
		{
    
    
			flag = true;
			
		}
		if (flag == false)
		{
    
    
			printf("false\n");
			break;
		}
		i++;

		
	}
	if (flag != false)
	{
    
    
		printf("true\n");
	}
	return 0;
}

因为strlen()是无法计算int类型的字符串(数组)的长度,只能用char类型,但效果是一样的。代码中

i<(length/2)

只要算一半就行了,全算只会占用内存,代码简单看不出,一旦复杂,就会影响运行速度,能省就省,培养好习惯。
还有,我们这种方法不能直接在循环里输出true,因为会打印很多个true。要找一击必杀的false,一旦不成立,直接跳出循环,并打印false,逆向思维,慢慢培养,所有问题的答案都在原理中,溯本求源嘛。这是写算法题的很重要的思维,经验之谈,嫌弃勿喷。
现在还是小白嘛,很多东西还不会,等我学完C,再改改。
支持支持一下。
有问题可以问我,对小白说。
要是有大佬觉得有代码问题,还可以再精进 ,麻烦指点一下我。我热i爱学习。嘿嘿黑u。下次还有。

猜你喜欢

转载自blog.csdn.net/weixin_52199109/article/details/110428450