#79. GESP C++ 三级 2024年12月(客观题)

GESP C++ 三级 2024年12月(客观题)

一、单选题(每题2分,共30分)

第1题. 下列二进制表示的十进制数值分别是( )

[10000011]原=( ) 

[10000011]补=( )

{{ select(1) }}

  • -125,-3
  • -3, -125
  • -3,-3
  • -125,-125

第2题. 关于计算机中的编码,下列说法中错误的是( )

{{ select(2) }}

  • 对于无符号数,原码就是真值
  • 正数的反码是其本身
  • 负数的反码和补码是不一样的
  • 负数的反码,在其原码的基础上, 各个位取反

第3题. 16进制数B2025转换成8进制数是( )

{{ select(3) }}

  • 2620045
  • 2004526
  • 729125
  • 2420045

第4题. 625.625变成二进制是( )。

{{ select(4) }}

  • 1001110001.101
  • 101.101
  • 101.1001110001
  • 1001110001.1101

第5题. 下面逻辑运算中,正确的是( )

{{ select(5) }}

  • 5&&3==0
  • (5|3)==8
  • (5||3)==11
  • (5&3)==0001

第6题. 补码1111 1101进行运算1111 1101>>1以后得到的结果是( )

{{ select(6) }}

  • 1111 1100
  • -2
  • 1111 1101
  • 1111 1010

第7题. 下列代码输出的是( )

string s="1234@@chenadai"; 

string str="12345"; 

s.replace(1,5,str); 

cout<<s<<endl;

{{ select(7) }}

  • 12345
  • 2345@
  • 112345chenadai
  • 12345chenadai

第8题. a|10(a与10都是10进制,且二进制表示最高位为1)运算的结果是( )。

{{ select(8) }}

  • 使a的二进制表示从右往左的第二位为1
  • 使a的二进制表示从右往左的第一位为0
  • 使a的二进制表示从右往左第二位为0
  • 使a的二进制表示最高位为0

第9题. 下列程序输出的是( )

string ch="hello";
if(ch[5]==NULL) {
	cout<<"right"<<endl;
} else if (ch[5]=='\\0') {
	cout<<"wrong"<<endl;
} else {
	cout<<"hello"<<endl;
}

{{ select(9) }}

  • right
  • wrong
  • hello
  • 不能正确执行

第10题. 下列程序中,假设一个字符占用的内存空间是1,下列程序中,ch占用的内存空间是( )

char ch[] = "hello world"; 

size_t ret=strlen(ch); 

cout<<ret<<endl;

{{ select(10) }}

  • 11
  • 10
  • 13
  • 12

第11题. 下列程序最后输出的是( )

int a=65; 

cout<<tolower(a)<<endl;

{{ select(11) }}

  • 65
  • A
  • a
  • 97

第12题. 想要计算从数字n到数字m之间(包含n和m)有多少个数字d出现,下列程序哪个能够实现( )。

{{ select(12) }}

  • int n,m,res,d;
    cin >> n >> m>>d;
    for(int i = n+1; i <= m; i++) {
      int temp = i;
      while(temp) {
      	if(temp % 10 == d) res++;
    
      	temp /= 10;
      }
    }
    cout << res << endl;
    return 0;
    
  • int n,m,res,d;
    cin >> n >> m>>d;
    for(int i = n; i <= m; i++) {
        int temp = i;
        while(temp) {
            if(temp % 10 = d) res++;temp /= 10;
        }
    }
    cout << res << endl;
    return 0;
    
  • int n,m,res=0,d;
    cin >> n >> m>>d;
    for(int i = n; i <= m; i++) {
        int temp = i;
        while(temp) {
            if(temp % 10 == d) res++;
            temp /= 10;
        }
    }
    cout << res << endl;
    return 0;
    
  • int n,m,res=0,d;
    cin >> n >> m>>d;
    for(int i = n; i <= m; i++) {
        while(temp) {
            if(temp % 10 == d) res++;
            temp /= 10;
        }
    }
    cout << res << endl;
    return 0;
    

第13题. 兔子五元一只,鸡三元一只,小鸭子一元三只,现在你有一百元要买一百只,兔子、鸡、鸭子,问兔子、 鸡、鸭子各买多少只,每种必须至少一只,下列哪个程序能实现。( )。

{{ select(13) }}

  • for(int i = 0; i <= 100; i++) {
         for(int j = 0; j <= 100; j++) {
              for(int k = 0; k <= 100; k++) {
                  if(i + j + k == 100 && 25 * i + 10 * j + k == 300) 
                 cout << i << " " << j << " " << k << endl;
             }
        }
    }
    
  • for(int i = 0; i <= 100; i++) {
     for(int j = 0; j <= 100; j++) {
        for(int k = 0; k <= 100; k++) {
             if(i + j + k == 100 && 20 * i + 10 * j + k == 300)
                  cout << i << " " << j << " " << k << endl;
         }
       }
    }
    
  • for(int i = 0; i <= 20; i++) {
     for(int j = 0; j <= 34; j++) {
        for(int k = 0; k <= 20; k++) {
             if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
                  cout << i << " " << j << " " << k << endl;
         }
       }
    }
    
  • for(int i = 1; i <= 100; i++) {
      	for(int j = 1; j <= 100; j++) {
      		for(int k = 1; k <= 100; k++) {
      			if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
      				cout << i << " " << j << " " << k << endl;
      		}
      	}
      }
    

第14题. 求小于等于N的素数的方法中,有一种方法是将所有从2到它本身减1的数都除一遍,如果不能整除,就是素 数。下列哪个程序,体现了这种方法()

{{ select(14) }}

  • if(N >= 3){
       cout<<2<<endl;
       for(int i = 2;i <= N;i ++){
          for(int j = 2;j < i;j ++){
               if(i % j != 0){
                   flag = 1;
               }
          }
         if(flag == 0){
             cout<<i<<endl;
         }
         flag = 0;
      }
    }
    
  • if(N >= 2){
       for(int i = 3;i <= N;i ++){
          for(int j = 2;j < i;j ++){
               if(i % j == 0){
                   flag = 1;
               }
          }
         if(flag == 0){
             cout<<i<<endl;
         }
         flag = 0;
      }
    }
    
  • if(N >= 2){
       cout<<2<<endl;
       for(int i = 3; i <= N; i ++){
          for(int j = 2; j < i; j ++){
               if(i % j == 0){
                   flag = 1;
               }
          }
         if(flag == 0){
             cout<<i<<endl;
         }
         flag = 0;
      }
    }
    
  • if(N >= 2){
       cout<<2<<endl;
       for(int i = 3; i <= N; i ++){
          for(int j = 2; j < i; j ++){
               if(i % j == 0){
                   flag = 1;
               }
          }
         if(flag == 0){
             cout<<i<<endl;
         }
      }
    }
    

第15题. 工人工作一天,会得到一个金环作为工资报酬,某个工作需要15天完成,一条15个环的金环项链,为了严 格执行每天工作结束时,完成对工人工资的结算,最少需要将金环项链剪裁成几段,每段几个金环( )

{{ select(15) }}

  • 4段,分别是1、2,4,8
  • 15段,每段1个
  • 6段,分别是3、3、3、3、2、1
  • 9段,分别是2、2、2、2、2、2、1、1、1

二、判断题(每题2分,共20分)

第16题. 为了简化计算机基本运算电路,使加减法都只需要通过加法电路实现,也就是让减去一个正数或加上一个负数这样的运算可以用加上一个正数来代替。于是改变负数存储的形式,存储成一种可以直接当成正数来相加的形式,这种形式就是补码。

{{ select(16) }}

  • ×

第17题. 使用原码进行的计算, 2+(-1) 的结果是 -3 {{ select(17) }}

  • ×

第18题. 反码计算加减法:加法与减法结果都是正确的,只是解决不了 -0 的问题

{{ select(18) }}

  • ×

第19题. 10 进制数 63,在转换成二进制的计算过程中,产生了如下的式子:

63/2=31 余 1 

31/2=15 余 1 

15/2=7 余 1 

7/2=3 余 1 

3/2=1 余 1 

1/2=0 余 1

按照从前往后的顺序,获得 63 的二进制值是 111111

{{ select(19) }}

  • ×

第20题. 下列程序输出的是 A

char x=65; 

x=x&00001111; 

cout<<x<<endl;

{{ select(20) }}

  • ×

第21题. 下列可执行程序段中,最后 pos 的值是 4。

string str="chenADai"; 

int pos = str.find('D'); 

--pos&11;

{{ select(21) }}

  • ×

第22题. 该段程序将不能正确执行.

string ch="chen"; 

cout<<ch[4]<<endl;

{{ select(22) }}

  • ×

第23题. 下面程序将输出 97

char a='A'; 

a=a+32; 

cout<<(int)a<<endl;

{{ select(23) }}

  • ×

第24题. 自然界中,最小的素数是 2

{{ select(24) }}

  • ×

第25题. CCF(十六进制) = 12363(七进制)

{{ select(25) }}

  • ×