C语言练习5(巩固提升)

C语言练习5

    • 选择题

选择题

1,下面代码的结果是:( )

#include <stdio.h>
#include <string.h>
int main()
{char arr[] = { 'b', 'i', 't' };printf("%d\n", strlen(arr));return 0;
}

A.3
B.4
C.随机值
D.5
💯答案解析:

😸正确答案:C
strlen是用来获取字符串的有效长度的,结尾标记’\0’不包含在内。
strlen获取的规则非常简单:从前往后依次检测,直到遇到’\0’是就终止检测。
而上题中arr是一个字符数组,不是一个有效的字符串,因为后面没有放置’\0’,因此strlen在求解时,将有效字符检测完之后,还会继续向后检测,直到遇到’\0’是才终止,因此答案为不确定,就看紧跟在’t’之后的第一个’\0’在什么位置。因此:答案选C
在这里插入图片描述

2,下面代码输出的结果是:( )

#include <stdio.h>
int num = 10;
int main()
{int num = 1;printf("num = %d\n", num);return 0;	
}

A. 程序有问题,不能编译
B.输出1
C.输出10
D.输出0
💯答案解析:

😸正确答案:B
本题主要考察变量的访问规则,C语言中:

  1. 不允许在同一个作用域中定义多个相同名称的变量比如:在一个班级中存在两个名字相同的学生王帅,当老师点王帅回答问题时,那个回答就冲突了
  2. 允许在不同的作用域中定义多个相同名称的变量比如:两个班级中各有一个王帅,老师在A班中点王帅回答问题,不会有任何歧义
  3. 不同作用域中定义的变量,在访问时采用就近原则。比如:你们村有一个小伙伴名字叫刘德华,那你在你们村喊刘德华时,你们村的刘德华就会跑过来响应你,而我们世界级别人见人爱的天王他不会理你,因为距离远听不见,但是两个刘德华可以同时存在这个 世界上,只要不在一个村,就不会冲突。
    根据以上描述可知,对于以上代码: 1. 全局作用域中的num和main中的num可以同时存在,不会冲突,因为不是同一个作用域2. 在main函数中访问num时,采用就近原则,因此访问的是main中的num,相当于将全局作用域中的num屏蔽了
    A:错误:因为两个num不在同一个作用域中,可以通过编译
    B:正确,main中访问的是main中的num,而main函数中的num是1,因此打印1
    C:错误,应该访问main函数中的num,而不是全局作用域中的num
    D:错误,凑选择的
    在这里插入图片描述

3,关于C语言关键字说法正确的是:( )
A.关键字可以自己创建
B.关键字不能自己创建
C.关键字可以做变量名
D.typedef不是关键字
💯答案解析:

😸正确答案:B
C语言关键字:C语言定义的,具有特定含义、专门用于特殊用途的C语言标识符,也称为保留字 A:错误,关键字是语言自身定义的 B:正确 C:错误,关键字具有特殊含义,不能作为变量名 D:错误,typedef是用来给类型取别名的关键字 因此,选择B

4,关于static说法不正确的是:( )
A.static可以修饰局部变量
B.static可以修全局变量
C.static修饰的变量不能改变
D.static可以修饰函数
💯答案解析:

😸正确答案:C
本题主要考察static的特性

  1. static修饰变量
    a. 函数中局部变量:声明周期延长:该变量不随函数结束而结束
    初始化:只在第一次调用该函数时进行初始化
    记忆性:后序调用时,该变量使用前一次函数调用完成之后保存的值
    存储位置:不会存储在栈上,放在数据段
    b. 全局变量:改变该变量的链接属性,让该变量具有文件作用域,即只能在当前文件中使用
    c. 修饰变量时没有被初始化时会被自动初始化为0
  2. static修饰函数
    改变该函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用
    A:正确,原因参考上述注解 B:正确,原因参考上述注解 C:错误,const修饰的变量不能改变 D:正确,原因参考上述注解 因此:选择C

5,下面代码执行的结果是:( )

#include <stdio.h>
int main()
{int i = 0;for (i = 0; i < 10; i++){if (i = 5)printf("%d ", i);}return 0;
}

A.1 2 3 4 5 6 7 8 9 10
B.5 5 5 5 5 5 5 5 5 5
C.死循环的打印5
D.0 1 2 3 4 5 6 7 8 9
💯答案解析:

😸正确答案:
答案解析:C
上述代码本来的想法应该是:循环10次,每次循环时如果i == 5则打印i的结果。但if语句中表达式的==写成了赋值,相当于每次循环尽量都是将i的值设置成了5,5为真,因此每次都会打印5。i每次修改成5打印后,i的值永远不会等于10,因此造成死循环 故:死循环的打印5。因此:选择C
在这里插入图片描述

6,switch( c )语句中,c不可以是什么类型( )
A.int
B.long
C.char
D.float
💯答案解析:

😸正确答案:D
switch语句中表达式的类型只能是:整形和枚举类型 。D选项为浮点类型,不是整形和枚举类型

7,关于while(条件表达式) 循环体,以下叙述正确的是( )? (假设循环体里面没有break,continue,return,goto等等语句)
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数总是比循环体的执行次数多一次
C.条件表达式的执行次数与循环体的执行次数一样
D.条件表达式的执行次数与循环体的执行次数无关
💯答案解析:

😸正确答案:B
while循环中,当条件表达式成立时,才会执行循环体中语句,每次执行期间,都会对循环因子进行修改(否则就成为死循环),修改完成后如果while条件表达式成立,继续循环,如果不成立,循环结束 故:while循环条件将会比循环体多执行一次。因此:选择B

8,能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( )
A.return 这二个数
B.形参用数组
C.形参用二个指针
D.用二个全局变量
💯答案解析:

😸正确答案:A
A:错误,一个函数只能返回一个结果 B:正确,将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去C:正确,形参如果用指针,最终指向的是外部的实参,在函数中对指向指向内容进行修改,改变的就是外部的实参 D:正确,全局变量不受函数的结束而结束,在函数中改变全局变量,主调函数中可以看到改变之后的结果

9,于函数调用说法不正确的是:()
A.函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝
B.函数可以传址调用,传址调用的时候,可以通过形参操作实参
C.函数可以嵌套定义,但是不能嵌套调用
D.函数可以嵌套调用,但是不能嵌套定义
💯答案解析:

😸正确答案:C
A:正确,形参按照值的方式传递,将来形参就是实参的一份临时拷贝,修改形参不会影响外部的实参 B:正确,形参按照指针方式传递,将来形参就是实参地址的一份拷贝,形参指向的是实参,修改形参指针指向的内容, 就是在操作实参 C:错误,C语言中,函数不能嵌套定义 D:正确,函数可以嵌套调用,即:A()中调用B(),B()中调用A(),但是要控制好,否则就成为无限递归 。因此,选择C

10,关于以下说法描述正确的是:( )
A.函数的实参只能是变量
B.形参是在函数调用的时候才实例化,才开辟内存空间
C.函数设计应该追求高内聚低耦合
D.有了库函数就不需要自定函数了
💯答案解析:

😸正确答案:C
A:错误,函数的实参可能是变量,也可能是常量,也可能是宏,也可能是指针等等 B:正确,函数没有调用时,形参没有空间 C:正确,高内聚低耦合即:函数体内部实现修改了,尽量不要对外部产生影响,否则:代码不方便维护 D:错误,库函数是语言设计者为了让用户能够更好的使用,而给出的,但并不能解决用户的所有问题,因此其他问题还需要用户自己写方法解决

11,以下叙述中不正确的是:( )
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是在栈中保存
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
💯答案解析:

😸正确答案:D
A:正确 不同的函数属于不同的作用域,因此不同的函数中定义相同名字的变量不会冲突 B:正确 在C语言中,函数的形参一般都是通过参数压栈的方式传递的 C:正确 在函数内定义的变量,称为局部变量,局部变量只能在其定义的函数中使用 D:错误 复合语句中定义的变量只能在复合语句中使用 因此:选择D

12,C语言规定,在一个源程序中,main函数的位置( )
A.必须在最开始
B.必须在库函数的后面
C.可以任意
D.必须在最后
💯答案解析:

😸正确答案:C
main函数的位置可以在任意位置,但是如果在主函数之中调用了哪些函数,必须在main函数前对其所调用函数进行生命或包含其被调用函数的头文件。 因此:选择C

13,在上下文和头文件均正常情况下,以下程序的输出结果是()

int x = 1;
do
{printf("%2d\n", x++);
} while (x--);

A. 1
B. 无任何输出
C. 2
D. 陷入死循环
💯答案解析:

😸正确答案:D
前置++:先加1后使用
后置++:先使用后加1
(- -同理)
x++先使用后加一,打印出1,x变2。x–先使用2为真,x变1进入循环。所以陷入死循环打印1

14,以下 C 程序的输出结果是()

#include <stdio.h>
#include <stdlib.h>
int a = 1;
void test()
{int a = 2;a += 1;
}
int main()
{test();printf("%d\n", a);return 0;
}

A.1
B. 2
C. 3
D. 4
💯答案解析:

😸正确答案:A
如果函数内部的全局变量和局部变量同名,那么在函数内部局部变量会屏蔽全局变量,使用局部变量,因此本题中全局变量会被tset()中的局部变量屏蔽,对a的修改不会对全局变量a带来任何影响,所以全局变量的值保持为1.
在这里插入图片描述

15,假定 x 和 y 为 double 型,则执行 x=2; y=x+3/2; 后y的值为()
A. 3.500000
B. 3
C. 2.000000
D. 3.000000
💯答案解析:

😸正确答案:D
3/2 == 1 ,x+3/2 == 3,double类型3.000000

16,选择表达式 11|10 的结果(本题数值均为十进制)()
A. 11
B. 10
C. 8
D. 2

💯答案解析:

😸正确答案:A

    1011//111010//101011//11

17,以下能对二维数组a进行正确初始化的语句是:( )
A.int a[2][]={{0,1,2},{3,4,5}};
B.int a[][3]={{0,1,2},{3,4,5}};
C.int a[2][4]={{0,1,2},{3,4},{5}};
D.int a[][3]={{0,2},{},{3,4,5}};
💯答案解析:

😸正确答案:B
对于二维数组int array[M][N], 说明如下:

  1. M和N都必须为常数,
  2. M代表数组有M行,N代表每行中有N个元素
  3. 其中M可以省略,省略后必须给出初始化表达式,编译器从初始化结果中推断数组有多少行
  4. N一定不能省略,因为N省略了就不能确定一行有多少个元素,也不能确定数组有多少行
    A:错误,参数上述说明 B:正确,参考上述说明 C:错误,数组有两行,但是初始化给了三行 D:错误,初始化不允许{0,2}该种情况存在 。因此,选择B

18,给出以下定义:

char acX[] = "abcdefg";
char acY[] = { 'a','b','c','d','e','f','g'};

以下说法正确的是( )
A.数组acX和数组acY等价
B.数组acX和数组acY的长度相同
C.sizeof(acX)>sizeof (acY)
D.strlen (acX)>strlen (acY)
💯答案解析:

😸正确答案:C
acX和acY都是字符数组,但是初始化表达式不同,acX和acY的区别如下:
acX:数组中总共有8个元素,分别是:‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘\0’
acY:数组中总共有7个元素,分别是:‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’
sizeof这里求的是数组大小,数组大小等于有效元素个数*每个元素的大小。sizeof(acX) = 8,sizeof(acY) = 7
strlen求的是字符串长度,从首元素开始计算,遇见‘\0’停止,由于acY数组没有’\0‘,所以strlen(acY)的结果是个随机值。 因此,选择C

19,下面代码的结果是:( )

#include <stdio.h>
int main()
{int i = 1;int ret = (++i)+(++i)+(++i);printf("ret = %d\n", ret);return 0;
}

A.10
B.12
C.9
D.程序错误
💯答案解析:

😸正确答案:D
表达式(++i)+(++i)+(++i),只有操作符的优先级和结合性,没法确定唯一计算路径
所以这个表达式可能因为计算顺序的差异导致结果是不一致的,所以表达式是错误的表达式。
可以在VS和Linux gcc测试,结果可能有差异。

20,下面代码的结果是:

#include <stdio.h>
int i;
int main()
{i--;if (i > sizeof(i)){printf(">\n");}else{printf("<\n");}return 0; 
}

A.>
B.<
C.不输出
D.程序有问题
💯答案解析:

😸正确答案:A
C语言中,0为假,非0即为真。
全局变量,没有给初始值时,编译其会默认将其初始化为0。i的初始值为0,i–结果-1,i为整形,sizeof(i)求i类型大小是4,按照此分析来看,结果应该选择B,但是sizeof的返回值类型实际为无符号整形,因此编译器会自动将左侧i自动转换为无符号整形的数据,-1对应的无符号整形是一个非常大的数字,超过4或者8,故实际应该选择A
这道题其实很隐蔽,真是虾仁猪心!!!

💘后期会推出更多C语言练习题,希望大家与我共同进步,早日成为大佬!

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

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

相关文章

阿里云servless实现身份证智能识别Demo

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 servless实现身份证智能识别。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、如何快速实现阿里云Servless实现身份识别&#xff1f; 1…

观察级水下机器人使用系列之六超短基线(下)

本文主要讲述超短基线的安装校准和应用。 1、安装校准概述 水下声学导航系统标定算法的准确性很大程度上取决于所采集的数据质量、超短基线基阵的几何结构、高效的数值计算算法等方面。Mc Ewen 等在 2005 年发现了对于分立式的超短基线系统&#xff0c;水声传感器与姿态传感器…

附加题——有趣的搜索《我最怕的就是计算机系的学生被别人说成是个带着厚眼镜的,只能够在电脑前编编程序》...

链接&#xff1a;链接 学校/专业&#xff1a; 无 作者&#xff1a;钻石之黎明 时间&#xff1a;2008-10-04 19:22:40 链接&#xff1a;链接 学校/专业&#xff1a; 无 转载者&#xff1a;foresee 时间&#xff1a;2008-12-10 11:43:17 链接&#xff1a;链接 学校/专业&#xff…

外包,我也挺知足

今天给大家介绍一位录友&#xff0c;这位录友很特别&#xff0c;看完他的故事&#xff0c;你会感觉自己的起步已经很高了。 他15年上大学用不起智能机。读计算机专业&#xff0c;却买不起电脑。家里去年才通网。找工作的时候不知道要多少工资&#xff0c;让HR看着给就行。入职…

C#---第十九课:不同类型方法的执行顺序(new / virtual / common / override)

本文介绍不同类型的方法&#xff0c;在代码中的执行顺序问题&#xff1a; 构造方法普通方法&#xff08;暂用common代替&#xff09;、虚方法&#xff08;Virtual修饰&#xff09;、New方法&#xff08;new修饰&#xff09;三个优先级相同overide方法&#xff08;会替换virtual…

[Android]JNI的基础知识

目录 1.什么是JNI 2.配置JNI开发环境NDK 3.创建Native C类型的项目 4. 了解CMakeLists.txt 文件 5.了解native-lib.cpp 文件 6.在 Android 的 MainActivity 中调用 native-lib.cpp 中实现的本地方法 1.什么是JNI JNI&#xff08;Java Native Interface&#xff09;是一…

vue项目打包后出现页面布局异常、图片显示不出来等问题

通常我们写完vue项目后&#xff0c;会执行 npm run serve 对项目进行打包。执行完后&#xff0c;就在项目的目录中生成dist文件夹。一开始&#xff0c;我以为双击dist文件夹里index.html会把打包后的项目运行起来&#xff0c;结果在浏览器看到的页面布局异常以及许多图片没有加…

word无法显示图像计算机可能没有足够的,Word图片显示不出来怎么办 Word图片显空白的解决办法-电脑教程...

最近百事网小编钢琴下的旋律发来了一些Word投稿文档&#xff0c;不过奇怪的是Word里边的很多图片都显示不出来&#xff0c;原先以为可能是图片过多&#xff0c;可能一下子没载入完&#xff0c;不过等待很长一段时间后&#xff0c;很多Word里边的图片依旧显示不出现&#xff0c;…

java 选择图片 显示不出来的_java图片显示不出来怎么办

java图片显示不出来怎么办&#xff1f; 解决javaweb项目使用Tomcat服务在网页中的某些页面中的图片无法显示问题。 最近写了一个web项目&#xff0c;但在浏览器中测试&#xff0c;发现某些页面中的图片无法显示。 推荐教程&#xff1a;《java学习》 原因是在加载页面时一些img标…

html显示网上图片不显示不出来,网页图片显示不出来,教您网页不显示图片怎么办...

在使用电脑浏览网页的时候是不是有碰到过网页不显示图片的时候&#xff1f;可能因为是网速慢&#xff0c;所以造成加载图片失败;当然也有其他的原因&#xff0c;像有些地方设置错误的话也会导致网页图片显示不出来的。下面&#xff0c;小编跟大伙一同探讨一下网页不显示图片的解…

java界面怎么加图片不显示不出来_java图片显示不出来怎么办,

详细内容 java图片显示不出来怎么办&#xff1f; 解决javaweb项目使用Tomcat服务在网页中的某些页面中的图片无法显示问题。 最近写了一个web项目&#xff0c;但在浏览器中测试&#xff0c;发现某些页面中的图片无法显示。 推荐教程&#xff1a;《java学习》 原因是在加载页面时…

html背景图片为什么找不到,css中背景图片显示不出来

css中背景图片显示不出来 css添加背景图片无法显示&#xff0c;有以下几方面原因&#xff1a; 1、css没有被调用&#xff1b;请检查css调用是否成功。 2、css图片地址不对&#xff1b;请检查css图片地址是否正确。 3、div的高度没有固定&#xff0c;是auto或者没有设值&#xf…

python中html图片显示不出来,jupyter notebook中图片显示不出来的解决

报错&#xff1a; d:\program files\anaconda3\lib\site-packages\matplotlib\figure.py:445: userwarning: matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-gui backend, so...... 解决方法&#xff1a; import matplotlib matplotl…

图片路径带有blob的图片显示不出来

做项目写个人信息页面时&#xff0c;后端返回的数据中&#xff0c;图片的路径带有blob&#xff08;如下图&#xff09; 前端展示的时候渲染不出来&#xff0c;重新上传后&#xff0c;图片正常&#xff0c;但是刷新后还是不显示。图片上传用的element ui的图片上传组件&#xff…

解决上传 Gitee 后图片显示不出来

上传后图片总是显示不出来&#xff0c;例如 可以直接把路径替换成 Gitee 项目上传后的网络路径 点开上传 Gitee 后的图片所在的路径&#xff0c;随便点开一张图片&#xff0c;点击原始数据 点开后图片所在路径如下 在然后直接全部替换图片的文件夹路径 替换的时候替换 图片…

如何解决上传到github上的图片显示不出来的问题

你有没有遇到上传github仓库的图片&#xff0c;显示不出来的情况&#xff0c;或者是仓库的README.md文件&#xff0c;插入的图片总是莫名其妙的无法显示&#xff0c;而且重新编辑也没什么卵用。 于是我们可以使用chrome或是edge浏览器,F12打开开发者工具&#xff0c;你会发现获…

【C++】C++ 引用详解 ⑦ ( 指针的引用 )

文章目录 一、二级指针可实现的效果二、指针的引用1、指针的引用 等同于 二级指针 ( 重点概念 )2、引用本质 - 函数间接赋值简化版本3、代码示例 - 指针的引用 一、二级指针可实现的效果 指针的引用 效果 等同于 二级指针 , 因此这里先介绍 二级指针 ; 使用 二级指针 作为参数 …

Arduino驱动TEMT6000传感器(光照传感器篇)

目录 1、传感器特性 2、硬件原理图 3、驱动程序 TEMT6000是一个三极管类型的光敏传感器,其光照强度和基极的电流成正比。用起来也相当简单,可以简单的连接该传感器的基极到模拟电压输入,通过简单的检测电压值就可以判断当前的光照强度。 1、

python增强现实

1&#xff0c;在一平面上放一个立方体 实现代码&#xff1a; from pylab import * from PIL import Image# If you have PCV installed, these imports should work from PCV.geometry import homography, camera # from PCV.localdescriptors import sift"""…