变态的数据折磨我一晚上~~~ 2008-04-05 00:48

今天在看昨天找到的网站上关于算法的讲解,一边做题一边学习的那种。其中有一道题这样的: 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;}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值