今天在看昨天找到的网站上关于算法的讲解,一边做题一边学习的那种。其中有一道题这样的: ct9_1:进制转换☆ - Special Code题目描述:编写一个NumConvert函数,要求声明为int NumConvert(int n, int k);功能是把传入的参数n按照k进制进行转换并输出结果输入:按参数传递,2<=k<=36,n在int的范围内输出:按参数传递输入,通过标准输出,输出相应的结果输出的结果应当不包含换行如果超出10,应当用大写字母依次表示函数执行成功则应当返回0值样例输入:2 29 431 16-31 16 样例输出:10211F-1F 其它:请不要写上main函数 我交了将近20次了,最后终于知道是啥原因了,原来是INT 的最小值-2147483648在转成正数没法转,只能用更大的容器装,结果用UNSIGNED就可以AC了,这题不是一般的变态哈!!!写片日志BS下呵呵~~明天继续学习~~~~睡觉去了!! 对了代码如下:#include<stdio.h>int NumConvert(int n, int k){ int i=1,j; unsigned int m; int a[10000]; char q; j=1; if(n<0) { printf("-"); m=-n; } else if(n==0) {printf("0");return 0;} else if(n>0) m=n; while(m) { a[i]=m%k; m=m/k; i++; } for(j=i-1;j>0;j--) { if(a[j]>9) { q=a[j]+55; printf("%c",q); } else printf("%d",a[j]); } return 0;}
变态的数据折磨我一晚上~~~ 2008-04-05 00:48
最新推荐文章于 2022-11-03 08:33:17 发布