奇葩题库
来源:互联网 发布:闪图闪字制作软件 编辑:程序博客网 时间:2024/04/28 00:30
蓝桥杯http://lx.lanqiao.org/problem.page?gpid=T51:
很恶心,今天做进制转换的一道很简单的题,结果自己运行着对,但是提交就一直提示是超时了,找了半天终于找到了,竟然是+运算符号错了。。。这是编译器的BUG吗,还是怎么着啊,反正感觉很奇葩。。。
代码:
#include <stdio.h>#include <cstring>#include <algorithm>#include <iostream>using namespace std;char str[200005]; int main(){ int Case;scanf("%d",&Case);while(Case--){string str_16;string str_2=""; cin>>str_16; //修正位 int str_16len=str_16.length(); if(str_16len%3==1) str_2="00"+str_2; if(str_16len%3==2) str_2="0"+str_2; //16进制转化为2进制 for( int i=0;i<str_16len;i++) { switch(str_16[i]) { case '0':str_2+="0000";break; case '1':str_2+="0001";break; case '2':str_2+="0010";break; case '3':str_2+="0011";break; case '4':str_2+="0100";break; case '5':str_2+="0101";break; case '6':str_2+="0110";break; case '7':str_2+="0111";break; case '8':str_2+="1000";break; case '9':str_2+="1001";break; case 'A':str_2+="1010";break; case 'B':str_2+="1011";break; case 'C':str_2+="1100";break; case 'D':str_2+="1101";break; case 'E':str_2+="1110";break; // case 'F':break; default:str_2+="1111";break; } /* 如果使用下面看似相同的switch语句的时候,就会莫名其妙的出错 switch(str_16[i]) { case '0':str_2=str_2+"0000";break; case '1':str_2=str_2+"0001";break; case '2':str_2=str_2+"0010";break; case '3':str_2=str_2+"0011";break; case '4':str_2=str_2+"0100";break; case '5':str_2=str_2+"0101";break; case '6':str_2=str_2+"0110";break; case '7':str_2=str_2+"0111";break; case '8':str_2=str_2+"1000";break; case '9':str_2=str_2+"1001";break; case 'A':str_2=str_2+"1010";break; case 'B':str_2=str_2+"1011";break; case 'C':str_2=str_2+"1100";break; case 'D':str_2=str_2+"1101";break; case 'E':str_2=str_2+"1110";break; ///case 'F':str_2+="1111";break; default:str_2=str_2+"1111";break; }*/ } // string str=""; int bit=str_2.length(),j=0,i; for( i=0;i<=bit-3;i=i+3){//if( !( i==0&&( (str_2[i]-'0')*4+(str_2[i+1]-'0')*2+str_2[i+2]-'0' )==0 ) ) str[j]=(str_2[i]-'0')*4+(str_2[i+1]-'0')*2+str_2[i+2] ; j++;} i=0;if(!(str[i]=='0')) printf("%c",str[i]);for( i=1;i<j;++i) printf("%c",str[i]); printf("\n");// cout<<str<<endl; */}return 0;}
另外,如果将switch语句改为if else 如果还是使用str_2=str_2+"xxxx";的话依旧是出错,改为str_2+="xxxx";就又好了,所以出错应该是在+ 这个运算符上,但是究竟是编译器的问题还是其他错,现在还不清楚。。。遇上这样的错真恶心。。。
0 0
- 奇葩题库
- 题库
- 题库
- 题库
- 题库
- 题库
- 题库
- 题库
- 题库
- amfPHP 奇葩
- 奇葩青春
- 奇葩葩葩葩葩葩!!!
- 奇葩css
- 奇葩001
- 奇葩错误
- 奇葩问题
- 奇葩bug
- 奇葩问题
- 13.ios之控制器管理
- 数据库设计新手容易掉进的陷阱(不断更新中)
- Java虚拟机(四):堆与非堆的内存分配,以及配置更快的Eclipse
- Java多线程---线程池源码分析及其实现
- Linux awk命令详解
- 奇葩题库
- 开篇
- android 蓝牙4.0 ble 的理解
- Cocos2dx小技巧(十)三种缓存类介绍
- 主模板/原始模板
- linux中的>与>>的区别(输入输出重定向)
- SVM中的Dual
- unity技术之NGUI的功能实现(1)
- 如何设置LINUX的共享内存