今天看了一下庞果网发布的编程挑战赛,我就做了一题目,结果却让我失望,没提交的上去,也不知道是网速原因还是什么,一直处于提交状态,然后我就没理它,一直耗到时间结束,但最后我发现,竟然记我一个挑战失败,好失望!关键是还没有重新挑战的机会。算了,关键是自己得到了锻炼就好!下面就共享我的算法,可能不是最优的算法,如果读者有什么好的建议或者是好的算法欢迎提出,一起交流!
题目:
以下是我做的几个版本的代码:
C语言版本代码:
#include<stdio.h> int reverse(int x) { int yushu; int res[20]; int jieguo=0; int i=0; if (x>0) { do { yushu=x%10; res[i]=yushu; x=x/10; i++; } while (x); int ii=i-1; for (int j=0;j<i;j++,--ii) { int r=1; //printf("%d",res[j]); for (int n=0;n<ii;n++) { r*=10; } jieguo+=res[j]*r; } return jieguo; } //如果是负数 else { int jj = 0-x; int jieguo1=reverse(jj); jieguo1=0-jieguo1; return jieguo1; } } int main() { int num; printf("请输入数字:"); scanf("%d",&num); printf("你输入的数字是:%d\n",num); int n =reverse(num); printf("转置后的数字是:%d",n); return 0; }
C语言另外一版本:
#include<stdio.h> int main() { printf("题目1:整数取反\n"); char a[20],*p,*q; int i,j; p=a; q=a; for(i=0;i<20;i++) { scanf("%c",&a[i]); if(a[i]!='\n') { p++; } else break; } printf("取反后的数是:"); //如果是正数 if (*q!='-') { for(i;i>=0;i--) { printf("%c",*(--p)); } } //如果是负数 else { printf("%c",*q); for (i;i>1;i--) { printf("%c",*(--p)); } } return 0; }
运行结果:
C#版本代码:
#include<stdio.h> int main() { printf("题目1:整数取反\n"); char a[20],*p,*q; int i,j; p=a; q=a; for(i=0;i<20;i++) { scanf("%c",&a[i]); if(a[i]!='\n') { p++; } else break; } printf("取反后的数是:"); //如果是正数 if (*q!='-') { for(i;i>=0;i--) { printf("%c",*(--p)); } } //如果是负数 else { printf("%c",*q); for (i;i>1;i--) { printf("%c",*(--p)); } } return 0; }
运行结果:
最后提供一个简易版的算法,上面的代码都太差劲了
int fun(int a) { int temp = 0; while(a) { temp = temp*10 + a%10; a = a / 10; } return temp; }
很简单有木有,呵呵,看来算法还是很能考验一个程序员编程和思想的能力的!
==================== 迂者 丁小未 CSDN博客专栏=================
MyBlog:http://blog.csdn.net/dingxiaowei2013 MyQQ:1213250243
Unity QQ群:858550 cocos2dx QQ群:280818155
====================== 相互学习,共同进步 ===================
转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/17471827
欢迎关注我的微博:http://weibo.com/u/2590571922
时间: 2024-11-08 18:30:01