C语言入门

大家好,这里是一个刚接触C语言的小萌新

最近突发奇想,打算把一些最近做的题目发在CSDN上,一方面是记录一下自己的学习过程,一方面也欢迎大佬来讨论,分享一些更好的解法。


题目要求:编译一个函数,用于判断一个整数是否是回文数(指正着读倒着读一样的数),并用该函数找出10000以内的回文数。


看到回文数,我第一反应是用除法和求余来将数字一位一位分离,用数组储存各数位的数字。再用for循环遍历数组,判断前后的数字是否对应相等。


#include<stdio.h>
#include<stdbool.h>//引用该头文件才能使用bool 
bool Palindrome(int n) {//bool型函数只会返回true或false,占1字节,比int型(4字节)更小 
	int a[5]={};//n至多5位
	int i;
	for(i=0;n;i++){//a[i]先拿走n的个位,再让n除十 
		a[i]=n%10;
		n/=10;
	}
	int k=i;//for结束后,i代表n是i位数,即a中前i个数有意义 
	for(k=0;k<i;k++)//依次比较是否相同 
		if(a[k]!=a[i-k-1])break;
	if(i!=k)return false;//如果中途没有break,结束后i=k 
	else return true;
}
int main (){
	int sum=0;
	for(int j=1;j<=10000;j++)
		if (Palindrome(j)) 
			printf("第%d个是%d\n",++sum,j);//输出,sum用于计数 
	printf("共有%d个回文数\n",sum); 
	return 0;
}

运行结果:5dca87c196304179ab1d90a7c9f4cee8.png

小萌新能力有限,解法不一定完美,欢迎大家讨论。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值