c语言-C语言函数问题求解答,求大神

问题描述

C语言函数问题求解答,求大神

输入2个整数,分别将其逆向输出,要求定义并调用函数fun(n),它的功能是返回n的逆向值?例如,fun(123)的返回值是321
函数出什么问题了,输出错了
#include
#include
int fun(int x);
int main(void)
{
int m1,m2;
printf("Input m1: ");
scanf("%d",&m1);
printf("Input m2: ");
scanf("%d",&m2);
printf("%d's reverse is:%d ",m1,fun(m1));
printf("%d's reverse is:%d ",m2,fun(m2));
return 0;}

int fun(int x)
{
int count,i,d,p,sum=0;
p=x;
if (x>0){
do{ x=x/10;
count++;} while (x!=0);
for (i=1;i<=count;i++){
d=p%10;

sum=sum+p*pow(10,count-i);
p=p/10;}

return sum;}
if (x<0){
 x=-x;

do{ x=x/10;
count++;} while (x!=0);
for (i=1;i<=count;i++){
d=p%10;

sum=sum+p*pow(10,count-i);
p=p/10;}
return  -sum;

}
}

解决方案

int fun(int x)
{
int flg,i,sum=0;
if (x>0){
x=-x;
flg=1;
}
do{ m=x%10;
x=x/10;
sum = sum * 10 + m;
} while (x!=0);
if (flg ==1) {
sum = -sum;
}
return sum;
}

解决方案二:

一楼的下面的代码里应该用d而不是p

sum=sum+p*pow(10,count-i);

解决方案三:

个人认为将数字先转成字符串,然后进行反转处理会简单很多。例如:字符串可以求长度
处理完后的字符串,再转成数字即可完成要求。

解决方案四:

第一:count应赋初值为0,即count=0;第二:sum=sum+p*pow(10,count-i);应换为sum=sum+d*pow(10,count-i);第三:最后一行代码:
return -sum;应改为return sum;因为此时p已经为负数,不需要再加负号
int fun(int x)
{
int count=0,i,d,p,sum=0;
p=x;
if (x>0)
{
do
{
x=x/10;
count++;
} while (x!=0);
for (i=1;i<=count;i++)
{
d=p%10;
sum=sum+d*pow(10,count-i);
p=p/10;
}
return sum;
}
if (x<0)
{
x=-x;
do
{
x=x/10;
count++;
} while (x!=0);
for (i=1;i<=count;i++)
{
d=p%10;
sum=sum+d*pow(10,count-i);
p=p/10;
}
return sum;
}
}

解决方案五:

另外在scanf后要吸收回车符号,或者fflush

解决方案六:

楼上写的已经答了你的问题,我在想如果是一个大数呢,用字符串处理不是更好?

时间: 2024-11-19 09:56:38

c语言-C语言函数问题求解答,求大神的相关文章

新手求解答一下-新手求解答各位大神帮帮忙

问题描述 新手求解答各位大神帮帮忙 是这样的,我昨天刚刚安装了一个ocrale?11g?,但是我怎么登陆都登不上去,用sys?as?sysdba显示的是权限不足,用scott显示账户被锁,用internal显示不是有效的dba连接,我用的是win10,新手小白我真的不知道怎么办了QAQ 解决方案 记得原来登录是用的scott,密码是tiger,你这种问题没遇到过...抱歉

编程c语言-请问该fun 函数中哪里错了,大神指点迷津

问题描述 请问该fun 函数中哪里错了,大神指点迷津 #include void fun(int m, int k, int xx[]) { int j,n=0,a,b=0; while(n<k) { a=m+1; for(j=1;j<a;j++) { if(a%j==0) b++; } if(b==0) xx[n++]=a; } xx[n]=0; } main() { int m, n, zz[1000] ;void NONO (); printf("nPlease enter t

c语言新手 求帮助 谢谢大神

问题描述 c语言新手 求帮助 谢谢大神 Asterisk printing1 ? Write a program that outputs a triangle with a '*' character ? Input the Height repeatedly using the While statement ? Output a '*' character using the For statement 解决方案 #include <stdio.h> #include <stdli

C语言有这样的函数,,这个函数怎么理解,请大神指教

问题描述 C语言有这样的函数,,这个函数怎么理解,请大神指教 httpVar * httpdGetNextVariableByPrefix(curVar, prefix) httpVar *curVar; const char *prefix; { if (curVar) curVar = curVar->nextVariable; while (curVar) { if (strncmp(curVar->name, prefix, strlen(prefix)) == 0) return (

c语言-C语言的这个代码表达不了,大神帮忙看看。

问题描述 C语言的这个代码表达不了,大神帮忙看看. #include #define N 50 //学生人数 #define M 3 //课程门数 void Input(int score[][M+3], int n); { int i, j, sum; printf("Input Number and %d score:n",M); for (i = 0; i < n; i++) { sum = 0; printf("%d:",i+1); for (j =

c++的问题-vector中使用类编译报错,求各位c++大神解答

问题描述 vector中使用类编译报错,求各位c++大神解答 std::vectora其中A是自己写的一个类,运行后编译出错提示A类没有复制构造函数或者复制构造函数声明为'explicit'.可是在类中我写了复制构造函数了.求各位c++大神解答 解决方案 类A除了复制构造函数,还要实现operator = 解决方案二: A::A(const A& aa){}确定没有写错?

求问ios大神swift学习流程

问题描述 求问ios大神swift学习流程 本人计算机大学生一枚,有过肤浅的php开发经验,现在想认真学一门语言,选择了swift,但是遇到了一些问题,首先是swift2.0资源弄不到,还有就是出了单纯的看书敲代码不知道怎么学习,求师傅传授 解决方案 目前对于ios学习的话,建议先学习使用oc开发ios,等基础扎实再向swift转型,转型速度是非常快的(两周左右可比较完善) 如果坚持直接学swift,想要较全面的了解常用基础的话,可以考虑下培训机构,因为国内的swift交流非常稀少,很难帮助学习

游戏-求网络设置大神一个诡异的问题。。。。

问题描述 求网络设置大神一个诡异的问题.... 本人同一台笔记本,为什么在公司登陆游戏就卡住,回到家就可以正常进入游戏,很流畅的玩,网上说的改mtu值也改了,但是在公司登陆的时候仍然卡住进不了游戏,请问有木有懂电脑的大神指导下到底哪里的问题....我感觉跟mtu值没有关系,倒腾好几天了.跪求解答!!!! 补充:1.家里公司都是无线网.ip设置是自动获取. 2.都是10兆网络,特意下载了几个东西试了下跟网速无关. 3公司跟家里都是联通的网 解决方案 公司的socket端口封了吧 解决方案二: 试试

strcpy-新人求好心好心大神帮帮忙 Visual C遇到char溢出问题

问题描述 新人求好心好心大神帮帮忙 Visual C遇到char溢出问题 我遇到一个好纠结的问题,一直不知道原因在哪,蛋都碎了: 主工程: char Msg[1024]; check(Msg);//dll Addstring(Msg): DLL: int check(*msg) { cstring buff=""; strcpy(msg,""): buff.format("xxxxxx%d,%d",int1,int2); strcat(msg,&

oracle自定义函数的问题,求助大神啊

问题描述 oracle自定义函数的问题,求助大神啊 在oracle中定义一个函数,用来实现从身份证号中提取出生日期并将提取结果保存到指定表中.提示:提前创建一个至少包含(身份证 varchar2,出生日期 date)的二维表 小白初学oracle,这个问题做了一下午还没弄明白,各路大神给指点一下啊 解决方案 oracle自定义函数oracle 自定义函数oracle 自定义函数入门 解决方案二: 例:表1, 身份证:xxxxxx20150810xxxx ,求出生日期update 表1 set 出