C语言笔试题(指针、数组、整数在内存中的存储、结构体......)

news2024/9/20 9:01:44

文章目录

  • 1.选择题
  • 2.代码题
    • 2.1 模拟实现strncat
    • 2.2 模拟实现strncpy
    • 2.3 编写判断大小端程序
    • 2.4 模拟实现atoi
    • 2.5 BC38 变种水仙花数
    • 2.6 BC98 序列中删除指定数字

今天我们一起来看一些题目

1.选择题

在这里插入图片描述

解析如下:
在这里插入图片描述
正确选项:B
A.参数错误;D.返回值类型错误。


在这里插入图片描述
解析如下:
在这里插入图片描述
正确选项:A
B.返回值为int,不是函数指针;
C.返回的函数指针没有设置参数;
D.返回的函数指针没有返回值。


在这里插入图片描述

解析如下:
正确选项:C
A,第一个括号定义一个数组,成员是int*,因此后面括号里的int*就很奇怪,四不像;
BD.如果是数组,p只能在[ ]右边;
C.如下图所示。

在这里插入图片描述


在这里插入图片描述
解析如下:
根据回调函数的定义,可以判别D项错误,正确的描述为回调函数是调用函数指针指向的函数。
回调函数是一种在编程中常见的概念,它是指将一个函数作为参数传递给另一个函数,并在特定的条件或事件发生时被调用执行的函数。
具体来说,回调函数是作为参数传递给其他函数的函数指针或函数对象。当满足特定条件或事件发生时,调用该函数指针或函数对象,以执行预定义的操作或逻辑。


在这里插入图片描述
正确选项:C
C项,字符串中没有\0,strlen会继续往后读取直到遇见\0,可能计算出随机值。


在这里插入图片描述
正确选项:C
二维数组传参可以省略行,但不能省略列,A项错误;
数组名传参,数组名是数组首元素的地址,如下图,二维数组每一个元素可以看作一维数组,arr[0]地址的类型是int(*arr)[5],C项正确。
在这里插入图片描述


在这里插入图片描述
正确选项:B.D
数组传参,第一种可以传数组,D选项正确。
第二种是数组首元素的地址,数组首元素类型是char*,一级指针char *的地址是二级指针char **,因此B项正确。
也可以是void test(char * arr[ ]);


在这里插入图片描述

正确选项:B
如下图所示,ptr被强转为int*,-1后解引用访问一个字节,即1;a+1解引用得到4.

在这里插入图片描述


在这里插入图片描述
正确选项:A
如下图.
在这里插入图片描述


在这里插入图片描述
正确选项:C
如下图所示.
在这里插入图片描述


在这里插入图片描述
正确选项:B
解析如下图所示.
在这里插入图片描述


在这里插入图片描述
正确选项:A
解析如下图所示.
在这里插入图片描述


在这里插入图片描述

正确选项:C
解析如下图所示.
在这里插入图片描述


在这里插入图片描述
正确选项:C
unsigned char取值范围-128~127,a+b=300,以%d打印,结果就是300,因为int是存得下300的;如下图所示,c存不下300,127+1变成-128,127+128+45=300,因此结果是44.
在这里插入图片描述


在这里插入图片描述
正确选项:C
a的成员为-1,-2,…,-127,128,…,1,0(如上题图)
strlen遇’\0’停止计算,-1,-2,…,-127,128,…,1共255个数。


在这里插入图片描述
正确选项:D
是变量名,不是类型名。


在这里插入图片描述
正确选项:C
结构体students的内存分布如下所示.
在这里插入图片描述


在这里插入图片描述
正确选项:D
sizeof是计算大小的.


在这里插入图片描述
正确选项:B
.的优先级高于*,因此,B项对p.a解引用,p.a是结构体成员,不能解引用。


在这里插入图片描述
正确选项:C
如下图所示,所有成员最大对齐数是4,大小是4的倍数,因此是12.
在这里插入图片描述


在这里插入图片描述
正确答案:C
如下图所示,A,B的大小分别是16,12.
在这里插入图片描述


  1. 下面代码的结果是:( )
#pragma pack(4)/*编译选项,表示4字节对齐 平台:VS2013。语言:C语言*/
//假设long 是4个字节
int main(int argc, char* argv[])
{
  struct tagTest1
  {
    short a;
    char d; 
    long b;   
    long c;   
  };
  struct tagTest2
  {
    long b;   
    short c;
    char d;
    long a;   
  };
  struct tagTest3
  {
    short c;
    long b;
    char d;   
    long a;   
  };
  struct tagTest1 stT1;
  struct tagTest2 stT2;
  struct tagTest3 stT3;

  printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3));
  return 0;
}
#pragma pack()

A.12 12 16
B.11 11 11
C.12 11 16
D.11 11 16

正确选项:A

如下图所示.
在这里插入图片描述


  1. 有如下宏定义和结构定义
#define MAX_SIZE A+B
struct _Record_Struct
{
  unsigned char Env_Alarm_ID : 4;
  unsigned char Para1 : 2;
  unsigned char state;
  unsigned char avail : 1;
}*Env_Alarm_Record;
struct _Record_Struct *pointer = (struct _Record_Struct*)malloc(sizeof(struct _Record_Struct) * MAX_SIZE);

当A=2, B=3时,pointer分配( )个字节的空间。
A.20
B.15
C.11
D.9

正确选项:D
首先分析位段_Record_Struct的大小,如下图所示,共三个字节,3*2+3=9.
在这里插入图片描述

2.代码题

2.1 模拟实现strncat

char* my_strncat(char* dest, const char* src, int n)
{
	char* p = dest;
	while (*p)
		p++;
	int i = 0;
	for (; *src != '\0' && i < n; i++)
		p[i] = src[i];
	p[i] = '\0';
	return dest;
}

2.2 模拟实现strncpy

char* my_strncpy(char* dest, const char* src, int n)
{
	int i = 0;
	for (; *src != '\0' && i < n; i++)
		dest[i] = src[i];
	dest[i] = '\0';
	return dest;
}

2.3 编写判断大小端程序

写一个函数判断当前机器是大端还是小端,如果是小端返回1,如果是大端返回0.

int check_sys()
{
	int i = 1;
	return (*(char *)&i);
}

2.4 模拟实现atoi

自行了解库函数atoi的功能,学习使用,并模拟实现atoi函数。
文档链接:atoi - C++ Reference (cplusplus.com)

#include <stdio.h>
#include <ctype.h>
#include <assert.h>
int state = 0;
int my_atoi(const char* str)
{
	assert(str!=NULL);
	if (*str == '\0')
		return 0;
	int flag = 1;
	while (isspace(*str))
		str++;
	if (*str == '-')
	{
		flag = -1;
		str++;
	}
	else if (*str == '+')
		str++;
	else
		;
	long long ret = 0;
	while (*str!='\0')
	{
		if (isdigit(*str))
		{
			ret = flag * (*str - '0') + ret * 10;
			if (ret > INT_MAX)
				return INT_MAX;
			else if (ret < INT_MIN)
				return INT_MIN;
			else
				;
		}
		else
			return (int)ret;
		str++;
	}
	//正常结束
	if (*str == '\0')
		state = 1;
	return (int)ret;
}
int main()
{
	printf("%d\n", my_atoi("123"));
	return 0;
}

2.5 BC38 变种水仙花数

BC38 变种水仙花数

#include <stdio.h>
int main() 
{
    for (int i = 10000; i <=99999; i++)
    {
        int sum = 0;
        for(int j=10;j<=10000;j*=10)
            sum+=(i%j)*(i/j);
        if (sum == i)
            printf("%d ", i);
    }
    return 0;
}

2.6 BC98 序列中删除指定数字

BC98 序列中删除指定数字

#include <stdio.h>
int main() {
    int arr[50]={0};
    int n,del,j=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&arr[i]);
    scanf("%d",&del);
    for(int i=0;i<n;i++)
    {
        if(arr[i]!=del)
        {
            arr[j]=arr[i];
            j++;
        }
    }
    for(int i=0;i<j;i++)
        printf("%d ",arr[i]);
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是Redis集群的脑裂问题?

目录 一、脑裂的发生 二、脑裂的危害 三、如何避免脑裂&#xff1f; 四、能彻底解决脑裂吗&#xff1f; 所谓脑裂&#xff0c;就像他的名字一样&#xff0c;大脑裂开了&#xff0c;一般来说就是指一个分布式系统中有两个子集&#xff0c;然后每个子集都有一个自己的大脑(Le…

【Excal】And函数

奖金评定说明 业绩低于6000&#xff0c;奖金为100 业绩大于等于6000且小于10000&#xff0c;奖金为200 业绩大于等于10000&#xff0c;奖金为500 然后按回车健 下拉填充

BurpSuite2024.7.3专业版

前言 Burp Suite是一个无需安装软件&#xff0c;下载完成后&#xff0c;直接从命令行启用即可。开箱即可使用支持LInux/Windows/Mac 01更新介绍 2024.7.13版本界面大改动此版本引入了重大的性能升级、对拦截功能的重大增强&#xff0c;以及在审计项目表中新增了扫描插入点列。…

【Nature】在科研中应用ChatGPT:如何与数据对话

随着人工智能技术的迅猛发展&#xff0c;大型语言模型&#xff08;LLMs&#xff09;正逐渐成为科研领域的一种创新工具。这些模型通过自然语言处理技术&#xff0c;使得研究人员能够以直观的方式与数据进行交互&#xff0c;从而简化了数据分析和解释的过程。在《自然》杂志2024…

103.二叉树的锯齿形层序遍历

1.题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,nul…

Unity-可分组折叠的Editor

Unity-可分组折叠的Editor &#x1f957;功能介绍&#x1f36d;用法 &#x1f957;功能介绍 在序列化的字段上标记特性:[FoldoutGroup(“xxx”)]&#xff0c;inspector上就会被分组折叠显示。 &#xff08;没有被指定的字段自动放到Default组中&#xff09; 传送门&#x1f30…

如何用Java SpringBoot和Vue搭建高效的OA办公管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

深度学习--复制机制:CopyNet 模型在序列到序列模型中的应用以及代码实现

CopyNet 是一种特别设计的序列到序列&#xff08;Seq2Seq&#xff09;模型&#xff0c;旨在更好地处理那些在输出序列中需要直接复制输入序列中的部分或全部内容的任务。它在机器翻译、摘要生成、文本复述等任务中有广泛的应用&#xff0c;尤其是在输入和输出有显著重叠的场景。…

Spring--三级缓存机制

一、什么是三级缓存 就是在Bean生成流程中保存Bean对象三种形态的三个Map集合&#xff0c;如下&#xff1a; // 一级缓存Map 存放完整的Bean&#xff08;流程跑完的&#xff09; private final Map<String, Object> singletonObjects new ConcurrentHashMap(256);// 二…

51单片机——LED灯控制

1、LED介绍 中文名&#xff1a;发光二极管 外文名&#xff1a;Light Emitting Diode 简称&#xff1a;LED 用途&#xff1a;照明、广告灯、指引灯、屏幕 2、LED原理图 电阻在原理图上标注为1k&#xff0c;表示这是1千欧的电阻&#xff0c;实际在电路板上的表示是102 102解…

HarmonyOs应用权限申请,system_grant和user_grant区别。本文附头像上传申请user-grant权限代码示例

HarmonyOs应用权限申请&#xff0c;system_grant和user_grant区别。本文附头像上传申请user-grant权限代码示例 system_grant&#xff08;系统授权&#xff09; system_grant指的是系统授权类型&#xff0c;在该类型的权限许可下&#xff0c;应用被允许访问的数据不会涉及到用户…

【大数据算法】一文掌握大数据算法之:排序链表搜索的亚线性算法。

排序链表搜索的亚线性算法 1、引言2、平面图直径问题的亚线性算法2.1 定义2.2 核心原理2.2.1 跳表2.2.2 跳跃搜索2.2.3 分块搜索 2.3 应用场景2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;这茶味道怎么样&#xff1f; 小鱼&#xff1a;嗯&am…

计算机毕业设计选题推荐-保险业务管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

[CUDA编程] --- cuda线程模型

1 核函数 先看一个cuda版本的hello world #include <stdio.h>__global__ void helloworld() {printf("hello world\n"); }int main() {helloworld()<<<1, 1>>>();cudaDeviceSynchronize();return 0; }这里helloworld()<<<1, 1>…

旅行达人必备!有道翻译和这三款神器,轻松走遍世界

在如今的全球化和科技迅猛发展的时代&#xff0c;翻译工具在我们的日常生活中发挥着越来越重要的作用。在各种格式数据的翻译当中&#xff0c;我们就可以发现各种类型的翻译工具纷纷崭露头角。今天就分享三款除了有道翻译外的好用翻译工具&#xff0c;希望可以解决大家翻译的需…

虚幻5|暴击攻击和释放技能,造成伤害

玩家数据的Actor组件制作&#xff1a;虚幻5|制作玩家血量&#xff0c;体力-CSDN博客 造成伤害时&#xff0c;显示暴击及暴击字体颜色和未暴击的字体颜色&#xff0c;还有释放技能连击 一.编辑暴击数据 1.打开之前创建的玩家数据Actor组件 创建一个浮点变量&#xff0c;命名…

从法律风险的角度来看,项目经理遇到不清楚或不明确问题时的处理

大家好&#xff0c;我是不会魔法的兔子&#xff0c;在北京从事律师工作&#xff0c;日常分享项目管理风险预防方面的内容。 序言 在项目开展过程中&#xff0c;有时候会遇到一些不清楚或不明确的状况&#xff0c;但碍于项目进度的紧迫性&#xff0c;不得不硬着头皮做决策&…

喜羊羊教你(如何应对突发的技术故障和危机?)

开发团队如何应对突发的技术故障和危机&#xff1f; 在数字化时代&#xff0c;软件服务的稳定性至关重要。、8月19日下午&#xff0c;网易云音乐疑似出现服务器故障&#xff0c;网页端出现502 Bad Gateway 报错&#xff0c;且App也无法正常使用。 怀疑了自己的电脑、自己的手…

OpenStack 常见模块(二)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

MFC工控项目实例之七点击下拉菜单弹出对话框

承接专栏《MFC工控项目实例之六CFile添加菜单栏》 1、在SEAL_PRESSUREDlg.h文件中添加代码 class CSEAL_PRESSUREDlg : public CDialog { ...afx_msg void OnTypeManage(); ... } 2、在SEAL_PRESSUREDlg.cpp文件中添加代码 BEGIN_MESSAGE_MAP(CSEAL_PRESSUREDlg, CDialog)//…