不用求原来的数字到底是几位,直接用取余数乘10的方法就可以了。
创新互联长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为文登企业提供专业的成都网站建设、做网站,文登网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
static int reverse2(int num, int t)
{
if (num != 0)
return reverse2(num / 10, t * 10 + num % 10);
else
return t;
}
int reverse(int num)
{
if (num 0)
return -reverse2(-num, 0);
else
return reverse2(num, 0);
}
#include stdio.h
int main()
{
int n;
for(;;) {
scanf("%d", n);
if(n == 0) break;
printf("%d\n", reverse(n));
}
return 0;
}
1 输入要计算的数。
2 通过循环取余,计算出反序数。
3 将二者相加,并输出结果即可。
代码:
#include stdio.h
int main()
{
int n,t,f;
scanf("%d",n);//输入数值。
t = n;
f = 0;
while(t)
{
f *= 10;
f+=t%10;
t/=10;
}//计算反序数
t = f+n;//和值。
printf("%d\n",t);//输出结果。
return 0;
}
思路是先转成字符串再操作 返回值为计算出的逆序数 int f(int num) { char an[15]; int i, len, t, neg = 0; if(num 0) { num = -num; neg = 1; } sprintf(an, "%d", num); len = strlen(an); for(i=0; ilen/2; i++) { t = an[i]; an[i] = an[len - 1 -i]; an[len - 1 -i] = t; } num = atoi(an); return (neg?-num:num); } 刚才没看到你还没学到字符串,再给你个简单点的 int f(int num) { int a=0,b; while (num != 0) { b=num%10; a=a*10+b; num=num/10; } return a; }
因为这个数字很长,而且开头允许以零开始,所以有必要使用字符串来保存这个数字。然后用两个变量分别指向它的第一个数字和最后一个数字,在使用一个循环判断这两个数字是否相同,如果相同,就把前面的标加一,并且把后面的下标减去一,直到前面的下标大于后面的下标,或者两个下标所指的数字不相同。只要退出的时候两个下标的数字不相同,原来的数字就不是幸运数字,否则他就是一个幸运数字。
其实整个程序非常简单,感觉你可能是想多了,不用求原来的数字到底是几位,直接用取余数乘10的方法就行了。
程序如下:
#include stdio.h
#include math.h
int main(){
int n,b;
scanf("%d", n);
int d = 0;
while (n)
{
b = n % 10;
d = d * 10 + b;
n = n / 10;
}
printf("%d\n", d);
return 0;
}
结果如图: