日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

奇葩题库

發布時間:2023/12/24 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 奇葩题库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

藍橋杯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("
");
	// cout<<str<<endl; */
}

return 0;
}

另外,如果將switch語句改為ifelse如果還是使用str_2=str_2+"xxxx";的話依舊是出錯,改為str_2+="xxxx";就又好了,所以出錯應該是在+這個運算符上,但是究竟是編譯器的問題還是其他錯,現在還不清楚。。。遇上這樣的錯真惡心。。。

??

總結

以上是生活随笔為你收集整理的奇葩题库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。