刷c语言练习题12(牛客网)

1、在上下文和头文件正常的情况下,以下代码输出的值是:

1

2

3

4

5

6

7

8

9

10

11

12

13

int x = 4;

void incre() {

    static int x = 1;

    x *= x + 1;

    printf("%d", x);

}

int _tmain(int argc, _TCHAR *argv[]) {

    int i;

    for (i = 1; i < x; i++) {

        incre();

    }

    return 0;

}

A、2642

B、2

C、4

D、5

答案:A

解析:题目中定义了一个全局变量int x=4,那么在主函数中的循环会执行3次(调用三次incre函数)。在incre函数中,又定义了一个x,这个x被static修饰延长了局部变量的生命周期,那么下次再调用这个函数时,这个局部变量x不会再被初始化,会保留上次调用结束后的值。第一次x = x *(x+1)= 1 * 2 = 2,第二次x = x *(x+1)= 2 * 3 = 6,第三次x = x *(x+1)= 6 * 7 = 42。所以最后的结果为2642,选择选项A。

在看题友讨论中,发现有如下疑问,在这里解释一下。

主函数中的循环表达式2中的x不会随着incre函数中x的变化而变化吗?incre函数中的x是一个局部变量,它的作用域是incre函数的函数体内。被static修饰延长的是生命周期而不是作用域,这是两个不同的概念。

整个代码中有两个变量x,那么在incre函数内部x的值究竟应该等于哪个?在一个函数中,同名的局部变量的值会将全局变量的值覆盖掉,所以函数内部的变量值应该与局部变量的值一致。

2、 若有定义:char s[3][4];

则下列对数组元素s[i][j]的各种引用形式中,正确的是()

A、* (s+i)[j]

B、* (&s[0][0]+4 * i+j)

C、* ((s+i)+j)

D、* ( * (s+i)[j])

答案:B

解析:要对数组的元素进行引用,那么CD首先被排除。对于选项A,()的优先级最高,计算(s+i)结束后由于[ ]的优先级高于*,(s+i)会先与[ ]结合,选项A错误,正确的写法是(*(s+i))[j]。选项B中主要的思想是利用地址的偏移,偏移到目标地址后取*,B正确。

3、 在c语言中,下面能正确进行字符串赋值操作的是()

A、char s[5]={"ABCDE"};

B、char s[5]={‘A’,‘B’,’C’,’D’,’E’};

C、char *s; s="ABCDE";

D、char *s; scanf("%s",s);

答案:C

解析:选项A中字符串"ABCDE"末尾还有一个'\0',但是字符数组大小为5,选项A错误。选项B中赋值了五个字符,但是字符串以'\0'结尾,故选项B只是一个字符数组,但不是一个字符串,选项B错误。选项C和选项D都涉及到了野指针(没有指向的指针),对于一个野指针可以给它一个指向,但是不可以直接用其指向的地址,因为计算机随机赋的地址是不安全的,故选项D错误,选项C正确。

4、 C语言中,执行如下程序代码

1

2

3

4

char chr = 127;

int sum = 200;

chr += 1;

sum += chr;

后,sum的值是()

A、72

B、99

C、328

D、327

答案:A

解析:C语言中,char占一个字节,有符号char的范围是-128~127。所以本题代码中第三行进行加一操作后,会发生溢出(1000 0000),计算机默认数据是有符号的(1000 0000的补码为1 1000 0000),所以加一后的值为-128,最后的结果为72,选择选项A。

5、 下面选项中关于编译预处理的叙述正确的是()

A、预处理命令行必须使用分号结尾

B、凡是以#号开头的行,都被称为编译预处理命令行

C、预处理命令行不能出现在程序的最后一行

D、预处理命令行的作用域是到最近的函数结束处

答案:B

解析:预处理命令不是语句,不能以分号结尾,选项A错误。预处理命令行可以出现在程序的非代码行,可以是最后一行,选项C错误。预处理命令的作用域是从定义开始到整个文件结尾,选项D错误。

6、 在C语言中(以16位PC为例),5种基本数据类型的存储空间长度的排列顺序为()

A、char<int<long int<=float<double

B、char=int<long int<=float<double

C、char<int<long int=float=double

D、char=int=long int<=float<double

答案:A

解析:由下表,选择选项A。

类型16位平台32位平台

64位平台

char1个字节1个字节1个字节
short2个字节2个字节2个字节
int2个字节4个字节4个字节
unsigned int2个字节4个字节4个字节
float4个字节4个字节4个字节
double8个字节8个字节8个字节
long4个字节4个字节8个字节
unsigned long4个字节4个字节8个字节
long long8个字节8个字节8个字节
指针2个字节4个字节8个字节

7、 以下不能对一维数组 a 进行正确初始化的语句是()

A、int a[10] = {0, 0, 0, 0, 0};

B、int a[10] = { };

C、int a[] = {0};

D、int a[10] = {10*a};

答案:D

解析:A选项正确,这是数组的局部初始化,后面五个元素会自动补0。B选项正确,编译器自动将所有元素置零。C选项正确,这是数组的省略初始化,省略的是元素个数,赋几个值就开辟几个值的空间。D选项错误,a是一个数组名,这种写法是非法的。

8、 关于按值传递参数,下列说法中错误的是:

A、按值传递时,实参的值传递给形参,形参发生变化时不会影响实参。

B、实参的个数、类型应与形参一致。

C、定义函数时,会给形参分配存储单元。

D、实参与形参可以同名,此时两者会被分配不同的存储单元。

答案:C

解析:形参和实参是不同的存储单元,所以当按值传递时,形参的变化不会影响实参。定义函数时,不会给形参分配存储单元,只有调用时才会分配。故本题选择选项C。

9、 下面程序段的输出结果是(    )。

1

2

3

4

5

6

7

8

9

10

#include<stdio.h>

void fun(int px, int pa, int *pb){ 

     *pb = pa + px;

     pa = *pb + px;

}

int main(){ 

     int  x = 4, a = 2, b = 2;

     fun(x, a, &b);

     printf("%d,%d", a, b); 

}

A、2, 2

B、2, 6

C、6, 2

D、6, 6

答案:B

解析:本题中有两种参数传递方式:值传递和地址传递。本题中实参a的传递方式是值传递,在被调函数中的形参会另外开辟空间,所以在被调函数中对应形参的操作不影响实参的值。变量b传递的是地址,那么被调函数中可以对变量b的值进行修改。故选择选项B。

 10、假设数原型和变量说明如下:

void f4(int **p);
int a[4]={1,2,3,4};
int b[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int *q[3]={b[0],b[1],b[2]};

下面调用合法的是()

A、f4(a);

B、f4(b);

C、f4(q);

D、f4(&a);

答案:C

解析:本题主要是要分析每个选项中参数的类型与函数声明的形参类型是否一致。a的类型为int *,b的类型为int (*)[4],q的类型为int **,&a的类型为int (*)[4]。故选择选项C。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Power Query】List.Select 筛选列表

List.Select 筛选列表 ——在列表中返回满足条件的元素 List.Select(列表,判断条件) 不是列表的可以转成列表再筛选&#xff0c;例如 Record.ToList 不同场景的判断条件参考写法 (1)单条件筛选 列表中小于50的数字 List.Select({1,99,8,98,5},each _<50) (2)多条件筛…

39.3K Star,一个现代的数据库ORM工具,专为Node.js和TypeScript设计

大家好&#xff0c;今天给大家分享一个现代的数据库对象关系映射&#xff08;Object-Relational Mapping&#xff0c;ORM&#xff09;工具Prisma ORM&#xff0c;它旨在简化数据库操作&#xff0c;提高开发效率&#xff0c;并确保类型安全。 项目介绍 Prisma ORM适用于各种需要…

在Windows 10操作系统中搭建FTP

在Windows 10操作系统中搭建FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09;服务器&#xff0c;可以为局域网内的用户提供文件共享和传输服务。以下是详细的搭建步骤&#xff0c;包括准备工作、安装与配置FTP服务、以及测试与访问FTP服务器等环节。…

HarmonyOS第一课——HarmonyOS介绍

HarmonyOS第一课 HarmonyOS介绍 HarmonyOS是新一代的智能终端操作系统&#xff08;泛终端服务的载体&#xff09;&#xff1b; 智慧互联协同&#xff0c;全场景交互体验&#xff1b; 核心技术理念&#xff1a; 一次开发 多次部署&#xff1a; 预览 可视化开发UI适配 事件交…

关闭或开启Win11系统的自动更新

Win11系统老是自动更新&#xff0c;每次更新后不仅拖慢计算机的运行速度&#xff0c;甚至打印机都无法使用了&#xff0c;给我们带来了很多困扰。 那么我们该如何彻底关闭Win11系统的自动更新呢&#xff1f;关闭Win11系统自动更新会有什么弊端呢&#xff1f; 下面就分享几个小方…

笛卡尔空间内的阻抗控制

目录 1. 笛卡尔空间内的阻抗控制方程推导2. 笛卡尔空间内的阻抗控制的控制框图3. 一些变体变体 1.1变体 1.2变体 2 4.笛卡尔空间内的阻抗控制方法总结参考资料 1. 笛卡尔空间内的阻抗控制方程推导 目标&#xff1a;让机器末端执行器在笛卡尔空间内的每个方向上都体现出由弹簧阻…

Java-线程池技术

一、线程池简介 线程池是一种池化的思想&#xff0c;是将一些共同资源放到池中进行管理和使用&#xff0c;从而避免大量的创建销毁带来的资源浪费等问题&#xff0c;线程池主要优点体现在&#xff1a; 降低资源消耗&#xff1a;普通线程创建执行完任务之后即被销毁&#xff0…

【C++】类和对象(附题)

目录 一、类的定义 1.1.类定义格式 1.2.访问限定符 1.3.类域 二、实例化 2.1.实例化概念 2.2.对象大小 三、this指针 附加题&#xff1a;&#xff08;增进对this指针的理解&#xff09; 1.下面程序编译运行结果是&#xff08;&#xff09; 2.下面程序编译运行结果是&…

linux下gpio模拟spi时序

目录 前言一、配置内容二、驱动代码实现三、总结 前言 本笔记总结linux下使用gpio模拟spi时序的方法&#xff0c;基于arm64架构的一个SOC&#xff0c;linux内核版本为linux5.10.xxx&#xff0c;以驱动三线spi(时钟线sclk&#xff0c;片选cs&#xff0c;sdata数据读和写使用同一…

antv g6问题处理汇总

关于自定义边时&#xff0c;箭头始终没出现的问题处理 问题&#xff1a; 问题对应的代码 解决方法&#xff1a;将箭头的偏移量调整y坐标 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8" /><title&…

使用vue+kkFileview组件实现各种类型文件预览

关于kkFileView 【参考】&#xff1a;https://kkfileview.keking.cn/zh-cn/docs/home.html 文档在线预览项目解决方案&#xff0c;项目使用流行的spring boot搭建&#xff0c;易上手和部署。万能的文件预览开源项目&#xff0c;基本支持主流文档格式预览 本项目介绍 项目使用…

无忧树闪耀2024中国防水展:智能新材料,引领新赛道!

2024年10月16日&#xff0c;上海无忧树新材料科技有限公司在上海国家会展中心5.2号馆5103展位&#xff0c;成功亮相2024中国国际屋面和建筑防水技术展览会。作为新材料科技领域的佼佼者&#xff0c;无忧树以创新的技术、卓越的产品和专业的服务&#xff0c;赢得了现场观众的广泛…

COVON全意卫生巾,轻薄透气,绵柔速干,马来西亚热销中

随着女性健康意识的提高&#xff0c;卫生巾作为女性日常生活中的必需品&#xff0c;其品质和舒适度越来越受到关注。今天&#xff0c;我们要为大家介绍一款来自马来西亚热销的卫生巾——COVON全意卫生巾&#xff0c;以其轻薄透气、绵柔速干的特点&#xff0c;赢得了广大女性的喜…

【有啥问啥】视频插帧算法技术原理详解

视频插帧算法技术原理详解 引言 视频插帧&#xff08;Video Interpolation&#xff09;技术&#xff0c;作为计算机视觉领域的一项重要应用&#xff0c;旨在通过算法手段在已有的视频帧之间插入额外的帧&#xff0c;从而提升视频的帧率&#xff0c;使其看起来更加流畅。这一技…

oracle19c的k8s部署

前提条件 1、首先要有一个oracle 账号 2、需要一台能连接网络并安装docker的机器用Oracle账号登录Home 点击database 跳转到下一个页面 记得一定sign in ,否则无法拉取镜像 docker pull container-registry.oracle.com/database/enterprise:latest 执行拉取后使用镜像进行部…

基于Ubuntu24.04,下载并编译Android12系统源码 (二)

1. 前言 上篇文章&#xff0c;我们基于Ubuntu24.04&#xff0c;已经成功下载下来了Android12的源码&#xff0c;这篇文章我们会接着上文&#xff0c;基于Ubuntu24.04来编译Android源码。 2. 编译源码 2.1 了解源码编译的名词 Makefile &#xff1a; Android平台的一个编译系…

Diffusion Probabilistic Models for 3D Point Cloud Generation——点云论文阅读(8)

此内容是论文总结&#xff0c;重点看思路&#xff01;&#xff01; 文章概述 该文献介绍了一种用于3D点云生成的概率模型。点云是表示3D物体和场景的常用方式&#xff0c;但由于其不规则的采样模式&#xff0c;与图像相比&#xff0c;点云生成更具挑战性。现有方法如GANs、流…

Flutter通过showDialog实现下拉筛选菜单效果

一、效果图 二、 实现方式 获取固定在顶部筛选头部Widget在屏幕上的位置和它的高度在弹窗中通过获取到的高度进行内容显示区域定位巧用AnimatedContainer组件实现下拉动画效果最后在底部加上黑色蒙层 unawaited(showDialog(context: context,useSafeArea: false,barrierColor…

Golang | Leetcode Golang题解之第503题下一个更大元素II

题目&#xff1a; 题解&#xff1a; func nextGreaterElements(nums []int) []int {n : len(nums)ans : make([]int, n)for i : range ans {ans[i] -1}stack : []int{}for i : 0; i < n*2-1; i {for len(stack) > 0 && nums[stack[len(stack)-1]] < nums[i%…

vue2-render:vue2项目使用render / 基础使用

一、本文内容 本文内容记录render常用的一些属性和方法的配置&#xff0c;以作参考 export default { data() {return { modelValue: ,key: 0,}; }, render(h) { return h(div, [ h(input, {class: input,attrs: { type: text }, key: this.key,props: { value: thi…