【day1玩转c语言之-回文数的判断】

作者简介:大家好,我是大杉。
个人主页:爱编程的大杉
支持我:点赞+收藏~不迷路
✔系列专栏:c语言入门每日一题
(❁´◡`❁)每日格言:“我只知:
星光不负赶路人,时光不服有心人。
这个世界真的有人过着你想要的生活。
而那些人都曾隐忍过你尚未经历的挫折

【day1玩转c语言之-回文数的判断】_第1张图片

)回文是指正读和反读都一样的数。例如121,555,67776都是回文数。编写一个算法,读取几个整数,打印它们是否是回文数,判断回文的一个方法是将该数字的逆序数与之进行比较-1)**

文章目录

  • 一、基本思路
  • 二、解题方法
    • 1.方法一(常用方法)
    • 2.扩展思路(挑战以字符数组执行)
  • 总结
    • 写在后面:

一、基本思路

思路一:将回文数按照逆序表示出来,检查是否与之前相等
思路二:运用数组的方法,将输入的数看作字符串,定义一个字符串数组,两端缩进进行比较。

二、解题方法

1.方法一(常用方法)

代码如下(示例):

#include 
 int main()
{
    int  number, reversed, temp;

    printf("input number:");

    scanf_s("%d", &number);

    temp = number;  /*暂存*/

    reversed = 0;

    while (temp != 0)

    {

        reversed = reversed * 10 + temp % 10;    /*求余数,向左移位相加*/

        temp = temp / 10;

    }

    if (number == reversed)
    {
        printf("it's palindrome.\n");
        
    }
    else
    {
        printf("it's not palindrome.\n");
    }

2.扩展思路(挑战以字符数组执行)

代码如下(示例):

#include 
using namespace std;//c++的头文件
int main()
{
	char arr[10] = { 0 };
	cout << "请输入正数" << endl;
ren:cin >> (arr);//cin相当于c中的scanf
	int len = strlen(arr) - 1;
	int flag = 0;
	int a = 0;
	if (arr[0]==45)//排除输入为负数情况
//负号的阿斯课码值为45,若第一个输入的为负号则代表为负数不符合题意
	{
		cout << "输入错误" << endl;
		//cout为c++中的输出流相当于printf
		goto ren;//goto语句再次形成一次循环
	}
	while (flag != strlen(arr) / 2)
	{
		for (int a = 0; a < strlen(arr) / 2; a++)
		{
			if (arr[a] == arr[len])
			{
				flag++;//flag标记作用,显示比较了几次
				len = len--;
			}
		}
		if (flag == strlen(arr) / 2)
		{
			cout << "这个数是回文数" << endl;
			goto ren;
		}
		else
		{
			cout << "这个数不是回文数" << endl;
			goto ren;
		}
	return 0;

}

**若输入的数是回文数,则应该比较(字符串长度/2次)**如下图所示

【day1玩转c语言之-回文数的判断】_第2张图片


总结

两种方法各有优缺点:
第一种方法:好处:代码简洁,容易理解。
缺点:程序执行一次只能判断一个数是否为回文数,如果判断几个数的话需要多执行几次代码
第二种方法:好处:程序执行一次,可以一直判断。
缺点:程序相比第一种有些复杂,不针对此题的描述,因为此题是让你以数的形式输入。具有相对局限性
综上:如果针对此题则优先选择第一种方法,如果不限制以数字(含以上的)输入且考虑实用性则选择第二种。

写在后面:

对于算法题,我们要善于打开自己的思路,不断探索新的方法,哪有问了:为什么你能想到这么多思路,其实秘密就在我最近发现的宝藏网站,牛客网,这个网站不仅有 c ,java,phyon,c++等由浅入深的语法知识,还能在线Oj培养面试笔试能力。更让我爱了是他的讨论区,真是大佬云集,给我增添了很多思路,对我产生了很大启发, 这里分享一个牛客c语言提单:牛客c语言题单大家一起练起来吧!
【day1玩转c语言之-回文数的判断】_第3张图片

你可能感兴趣的:(c/c++入门之每日一题,c语言)