思路是先转成字符串再操作 返回值为计算出的逆序数 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; }
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了临桂免费建站欢迎大家使用!
呃……输入m,abc不能这么得来!a=m/100,b=(m/10)%10,c=m%10,而且scanf不能 在m下面,不然m怎么读入?这里直接引用了ascll码了……
输入三位数比如564
scanf("%d",c);
int d = c%10*100+(c/10)%10+c%100;
printf("%",d)
C++继承了C语言的大部分特性,因此保留了“程序总是从main函数开始执行,且总是默认从main函数的return语句或结尾处结束运行”这一传统,但是要注意,C++中的main函数要想作为程序执行的出入口,必须写在全局(Global)范围。
扩展资料:
计算一个排列的逆序数的直接方法是逐个枚举逆序,同时统计个数。例如在序列 { 2, 4, 3, 1 } 中,逆序依次为 (2,1),(4,3),(4,1),(3,1),因此该序列的逆序数为 4。Visual Basic 6.0 编写的示例使用的就是直接计数的方法,函数 NiXushu 返回一个字符串的逆序数。
参考资料来源:百度百科-逆序数
#includestdio.h
#includemath.h
int reserve(int number){
int i=1,sum=0,n;
while(number/(int)pow(10,i)0){// 这里用(int)pow(10,i)取整数,因为pow函数返回的是浮点型值
++i;}
while(i!=0){
n=number%10;
number=number/10;
sum=sum+n*pow(10,i-1);
i=i-1;
}
return sum;
}
int main(void){
int num,re;
printf("请输入一个整数:");
scanf("%d",num);
re=reserve(num);
printf("逆序数:%d\n",re);
return 0;
}
参考修改过的代码哈,欢迎交流,满意请采纳。
楼主你好。
#includestdio.h
#includestring.h
#include stdlib.h
#define MAX 100
int reverse(int number)
{
char s_no[MAX],t; //定义字符数组,用来存放转换后的字符串。并定义一个字符变量
int i,n;
sprintf(s_no, "%d", number); //将数字转换成字符串存放在字符数组中
n=strlen(s_no)-1; //计算字符串长度
for(i=0;i=n/2;i++)
{ t=s_no[i],s_no[i]=s_no[n-i],s_no[n-i]=t;} //将字符串前后的对应字符交换
return (atoi(s_no)); //将交换后的字符串转换成数字返回给主函数
}
int main()
{
int no,new_no;
printf("Please input number:");
scanf("%d",no);
new_no=reverse(no);
printf("The new number is %d:\n",new_no);
return 0;
}
这个程序经试验可以运行成功。如果有问题可以再问我。希望对你有帮助。