首页 > 其他分享 >测试题

测试题

时间:2024-10-18 21:43:42浏览次数:1  
标签:测试题 int 进程 线程 整型 字符串 sizeof

1.嵌入式软件开发构建阶段的第一步、第二步和第三步分别是(A )
A.编译、链接、定址
B.链接、编译、定址
C.打包、定址、编译
D.编译、定址、链接

tips:
编译:在这一阶段,编译器分析源代码并生成中间或目标代码文件。编译器会进行语法检查、类型检查和优化。

链接:链接器将多个编译后的对象文件合并,并解决函数和变量的引用。这个步骤是确保程序的各个部分能够正确协同工作的关键。

定址:在链接完成后,定址过程会为程序的各个部分分配实际的内存地址,确保在嵌入式设备上正确加载和运行。


2.关于sizeof下面说法正确的是(C )
A.sizeof计算字符串的长度
B.sizeof计算字符串的长度包括’\0’结束标志
C.sizeof编译时计算分配内存空间大小
D.sizeof运行时计算动态分配内存空间大小

tips:
A. sizeof 计算字符串的长度:这不准确。sizeof 计算的是数据类型或变量在内存中占用的字节数,而不是字符串的字符数。
B. sizeof 计算字符串的长度包括 '\0' 结束标志:这也是不完全准确的。如果对一个字符串字面量使用 sizeof,它会计算整个数组的大小,包括 '\0',但 sizeof 本身并不用于计算字符串长度(通常用 strlen 来计算)。
C. sizeof 编译时计算分配内存空间大小:这是正确的。sizeof 在编译时计算类型或变量的大小,并返回所需的字节数。这是一个静态计算,与实际的运行时动态分配无关。
D. sizeof 运行时计算动态分配内存空间大小:这是错误的。sizeof 的值在编译时确定,不会计算运行时动态分配的内存空间的大小(如使用 malloc 分配的内存)。动态分配的内存大小需要通过其他方法来管理。


3.定义int *swap()指的是( B)
A.一个返回整型值的函数swap()
B.一个返回指向整型值指针的函数swap()
C.一个指向函数swap()的指针,函数返回一个整型值
D.以上说法均错

tips:
int *swap() 表示这是一个函数,函数名是 swap,返回值的类型是 int *,即指向整型的指针。


4.宏定义#define PI 31.14159中,宏名PI代替(D )
A.单精度
B.双精度
C.常量
D.字符串

tips:
宏定义的基本概念:#define 是一个预处理指令,用于定义一个宏。在这个例子中,PI 被定义为 3.14159。替换机制:在代码中出现 PI 的地方,预处理器会将其替换为 3.14159。这意味着在编译时,所有的 PI 会被视为 3.14159,而不是一个变量。数据类型:PI 本身并不代表单精度(float)或双精度(double)类型,它只是一个常量的名字。编译器会根据上下文(例如浮点运算)推断出所需的数据类型。


5.设有一个二维数组A[m][n],假设A[0][0]存放位置在 644,A[2][2]存放位置在676,每个元素占一个空间,问A[3][3]存放的位置在(C )。
A.688
B.678
C.692
D.696

tips:
Address( A[i][j] )=Base_Address+(i×n+j)×size


6.以下关于long、int和short类型数据占用内存大小的叙述正确的是(D )
A.均占4个字节
B.根据数据的大小来决定所占内存的字节数
C.由用户自己定义
D.由C语言编译系统决定

tips:
数据类型大小:
在 C 语言中,int、short 和 long 的大小是由编译器和系统架构决定的,并不是固定的。常见的情况下:
short 通常占 2 字节。
int 通常占 4 字节。
long 在32位系统上通常占 4 字节,在64位系统上通常占 8 字节。
选项分析:

A. 均占 4 个字节:

这是不正确的,因为 short 通常占 2 字节,而 long 的大小依赖于系统架构。
B. 根据数据的大小来决定所占内存的字节数:

这是不准确的。数据类型的大小是由编译器规定的,而不是由数据的实际值决定。
C. 由用户自己定义:

这也是不对的。虽然用户可以使用 typedef 定义新的数据类型,但基本类型的大小是由语言标准和编译器决定的。
D. 由 C 语言编译系统决定:


7.在C语言中,合法的长整型常数是(A )
A.0L
B.4962710
C.0412765
D.0xa34b7fe
tips:长整型常数:
在 C 语言中,长整型常数(long 类型)可以用后缀 L 或 l 来表示。
选项分析:
A. 0L:这是一个合法的长整型常数,0 是一个常数,后缀 L 表示它是长整型。
B. 4962710:这是一个合法的整型常数,但没有后缀 L,因此它默认是 int 类型。如果在需要 long 的上下文中使用,它会自动转换,但不算作长整型常数。
C. 0412765:这是一个合法的整型常数,但前缀 0 表示这是一个八进制数。在不带后缀的情况下,它仍然被视为 int 类型。
D. 0xa34b7fe:这是一个合法的十六进制整型常数,前缀 0x 表示十六进制,但同样没有后缀 L,所以它默认也是 int 类型。


8.下面的程序输出的结果是 随机值 。

#include <stdio.h> 
int main (void) 
{ 
	int a =100; 
	int b[3]={200,300,400};
	int c=500; 
	printf(“%d\n”, b[3]); 
	return 0; 
}


数组访问越界,可能出现错误,也可能是随机值

9.有如下函数:

int Func( unsigned int x ){
	int result = 0;
	while(x)
	{
	result++;
	x = x & (x-1);
	}
}

当 x = 9999 时:

9999 的二进制表示是 10011100001111。
其中有 8 个 1。
因此,Func(9999) 的返回值是 8。
当 x = 1500161871 时:

1500161871 的二进制表示是 01011001011010101010011101001111 。
其中有 14 个 1。
因此,Func(1500161871) 的返回值是 14。

10.TCP/IP建立连接的过程?(三次握手)

TCP/IP建立连接的过程需要经过三次握手。下面是三次握手的详细步骤:
第一次握手(SYN):客户端发送一个带有SYN标志的数据包给服务器端,请求建立连接。这个数据包中会包含客户端选择的初始序列号(Sequence Number)。
第二次握手(SYN+ACK):服务器端收到客户端的SYN请求后,如果同意建立连接,则会发送一个带有SYN和ACK标志的数据包作为响应。该响应中会包含服务器端选择的初始序列号以及确认序号(Acknowledgment Number),确认序号为客户端的初始序列号加1。
第三次握手(ACK):客户端收到服务器端的响应后,会发送一个带有ACK标志的数据包给服务器端,确认收到了服务器端的响应。这个数据包中的确认序号为服务器端的初始序列号加1。
完成了这三次握手后,TCP连接就建立起来了,可以进行数据的传输。通过三次握手的过程,双方能够确认彼此的收发能力正常,并且同步初始化序列号,以便后续数据的可靠传输。如果在握手过程中出现任何一个阶段的超时或错误,连接建立将会失败,需要重新发起握手过程。

11.进程与线程的区别?

进程(Process)和线程(Thread)是操作系统中两个重要的概念,它们之间有着一些关键的区别:
资源分配:进程是操作系统中资源分配的基本单位,每个进程都有独立的内存空间、文件描述符、以及其他系统资源。而线程是在进程内部运行的实体,多个线程共享同一个进程的资源,包括内存空间、文件描述符等。
切换开销:由于进程拥有独立的地址空间,因此在进程切换时需要进行较大的上下文切换开销,涉及到页表切换等操作。而线程之间的切换开销相对较小,因为它们共享同一进程的地址空间,线程切换只需要保存和恢复寄存器的状态即可。
并发性:多个线程可以在同一进程内并发执行,彼此之间可以共享数据。而不同进程之间的数据共享相对困难,需要通过进程间通信(IPC)的方式来实现。
安全性:由于多个线程共享同一进程的地址空间,线程之间的数据共享需要谨慎处理,避免出现竞态条件和数据不一致的情况。而不同进程之间的数据相对更为独立,因此安全性方面会有一些优势。
总的来说,进程和线程都是实现并发执行的手段,但它们的应用场景和特点有所不同。通常情况下,线程用于实现轻量级的并发操作,而进程则用于实现更为独立和稳定的任务单元。

12.用C语言写一个模块化的函数,实现将一个字符串插入到另一个字符串中的指定位置。

/*
 * @Author: [email protected]
 * @Date: 2024-10-18 18:02:21
 * @LastEditors: None
 * @LastEditTime: None
 * @FilePath: test.c
 * @Description: 
 * 
 * Copyright (c) 2024 by [email protected], All Rights Reserved. 
 */
#include <stdio.h>
#include <string.h>

void insertString(char *destination, const char *source, int position) {
    int destLength = strlen(destination);
    int sourceLength = strlen(source);

    // 移动目标字符串中的字符,为插入字符串腾出空间
    for (int i = destLength; i >= position; i--) {
        destination[i + sourceLength] = destination[i];
    }

    // 插入源字符串到目标字符串的指定位置
    for (int i = 0; i < sourceLength; i++) {
        destination[position + i] = source[i];
    }
}

int main() {
    char str1[100] = "Hello, world!";
    char str2[] = " beautiful";
    int position = 7;

    printf("Before insertion: %s\n", str1);

    insertString(str1, str2, position);

    printf("After insertion: %s\n", str1);

    return 0;
}

13.请编写简单的C代码:
将一个16位数word a的高8位赋给byte b,低8位赋给byte c,再将b的高4位清
零,c的低4位置位后,重新以b为高位,c为低位的方式组合成16位数赋给word d。

/*
 * @Author: [email protected]
 * @Date: 2024-10-18 17:02:49
 * @LastEditors: None
 * @LastEditTime: None
 * @FilePath: test.c
 * @Description: 
 * 
 * Copyright (c) 2024 by [email protected], All Rights Reserved. 
 */
#include <stdio.h>
#include <stdint.h>

int main() {
    uint16_t a = 0xABCD;
    uint8_t b, c;
    uint16_t d;

    // 将高8位赋给 b,低8位赋给 c
    b = (a >> 8) & 0xFF;
    c = a & 0xFF;

    // 将 b 的高4位清零,c 的低4位设置为 1
    b &= 0xF0;
    c |= 0x0F;

    // 将 b 和 c 组合成 16 位数赋给 d
    d = ((uint16_t)b << 8) | c;

    printf("a = 0x%04X\n", a);
    printf("b = 0x%02X\n", b);
    printf("c = 0x%02X\n", c);
    printf("d = 0x%04X\n", d);

    return 0;
}


标签:测试题,int,进程,线程,整型,字符串,sizeof
From: https://www.cnblogs.com/hhail08/p/18475116

相关文章

  • 慧通教育C++测试题 103667--103673(5题)
    103667.求最大值难度:1登录//103667.求最大值难度:1#include<bits/stdc++.h>usingnamespacestd;intans=0,n,m,q,a[105][105];intmain(){ cin>>n>>m>>q; for(inti=1;i<=n;i++){ for(intj=1;j<=m;j++){ cin>>a[i][j]; } } int......
  • 慧通教育C++测试题 103662--103666(5题)
    103662.数据交换难度:1登录//103662.数据交换难度:1#include<bits/stdc++.h>usingnamespacestd;intm,n,a[105][105],x,y;intmain(){ cin>>m>>n; for(inti=1;i<=m;i++){ for(intj=1;j<=n;j++){ cin>>a[i][j]; } } cin>>x>......
  • 想自己做大模型备案的企业看过来【评估测试题+备案源文件】
    文章目录(一)适用主体(二)语料安全(三)模型安全(四)安全措施要求(五)词库要求(六)安全评估要求(七)附录大模型备案材料源文件2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全......
  • 全国职业技能大赛(软件测试赛项)--白盒测试题目/答案三
    题目1题目:        根据下列流程图编写程序实现相应分析处理,并设计测试数据进行判定覆盖测试。输入数据打印出“输入a值:”、“输入b值:”。x执行结果输出文字“x的值:”和x的值,y执行结果输出文字“y的值:”和y的值;z执行结果输出文字“z的值:”和z的......
  • 大模型备案重难点最详细说明【评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 大模型备案重难点最详细说明【评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 牛客网测试题 把十六进制数字转换为十进制数字
    1/**2*把十六进制数字转换为十进制数字3*@paramhexSrcStr4*@return5*1706*/7publicstaticStringconvertHex2Decimal(StringhexSrcStr){8if(hexSrcStr==null||hexSrcStr.trim().length()==0){9returnnull;10}11......
  • 大模型备案重难点最详细说明【评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 大模型备案重难点最详细说明【评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 南京理工大学C++程序设计基础期末考试上机测试题组3答案详细解析
    角谷步数(100分)任意的正整数,比如5,我们从它开始,如下规则计算:如果是偶数,则除以2,如果是奇数,则乘以3再加1。如此循环,最终必会得到“1”!比如5的处理过程是:5168421一个正整数经过多少步才能变成1,称为角谷步数。对于5而言,步数也是5;对于1,步数为0。输入一个整数n(1<n<300)......