本文前段可能让你索然无味,但是后劲大.

如有解释错误的地方,欢迎在评论区指正

1.判断下列常量不合法的是:
选项 Value
A 0128
B -45
C 123.5e4
D ’ \n ’

答案:A
(c语言常量中以0开头为8进制数,其中不可能出现8;)

浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。

  1. 小数形式中必须有整数部分和小数部分,或者两者同时存在
  2. 指数形式中必须有小数点和指数 e/E,或者两者同时存在

字符串常量要用双引号 “ ” 括起来

2. 以下标识符合法的是:
选项 Value
A if
B void
C _3w
D 2a

答案:C
标识符由数字、字母和下划线组成,且开头只能是字母或下划线。

3.以下变量初始化合法的是:
选项 Value
A int a=b;
B int 0 == sum;
C float x,y,z;
D char c; c=’ c ';

答案:D
其中A、C均未初始化,而B初始化错误;

4.有以下程序:
#include <stdio.h>
void fun(int *a,int *b)
{*a++;*b=*b-1;
}
void main()
{int c = 2,d = 3,*p = &c;fun(p,&d);printf("%d %d",c,d);
}
选项 Value
A 2,3
B 2,2
C 3,2
D 3,3

答案:B
这个程序首先定义了两个整型常量 c、d 并分别赋值,还定义了一个指针p,指向c的内存地址;然后进入fun函数,在fun函数中对 p 指针的指向的内存地址做了自增运算,因为开始定义的int型,所以p指针的指向地址往后移4,且此时p指针不在指向c常量 则c的值不变;然后对b指针指向的d做减一操作后结束函数;因此最后输出的是(2,2)

5.当变量c的值不为2、4、6时,值也为“真”的表达式是( )。

答案为:B

c语言逻辑运算符中:&& 与运算符“一假为假,全真为真”;|| 或运算符“全假为假,一真为真”;
整题的意思是:可以找出一组c不是2、4、6的值让选项为真,
则当c的值为3、5、7时,A选项全为假,且为或运算,全式为假;
当c的值为7、8、9时,B选项(c>=2&&c<=6)为假,而(c=3)和(c!=5)为真,或运算全式为真;
当c的值为3、5、7时,C选项 (c>=2&&c<=6)为假,且(c%2)为1再取反为0,与运算全式为假;
当c的值为3、5、7时,D选项(c>=2&&c<=6)为假,且(c%2!=1)也为假,与运算全式为假;

6.以下叙述中错误的是( )。
选项 Value
A 在程序中凡是以“ # ”开始的语句行都是预处理命令行
B 预处理命令行的最后不能以分号表示结束
C #define MAX 是合法的宏定义命令行
D C程序对预处理命令行的处理是在程序执行的过程中进行的

答案是:D
其中A选项比较模糊,因为如果是在注释中,那#define就失效了,就不能算是个预处理命令行
如下:

/*#define MAX
*/

B选项和C选项正确,D选项对预处理命令行的处理是在程序执行之前之前完成的(编译),不是程序执行的过程中,所以才称之为预处理。

7.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000.若将a的高4位取反,低4位不变,所要执行的运算是( )。
选项 value
A a^b
B a1b(此处1为竖直的一杠(或运算符),因markdown格式的限制在表格中打不出来)
C a&b
D a<<4

答案:A
这道题涉及到c语言的 “位运算” ,因为在计算机内部(笼统的说)数值的储存都是以二进制的方式进行;而计算机对二进制数进行的一些运算就叫做位运算

下面列举位运算的一些类别;
则对照位运算的运算规则,我们可以得到答案为A;

8.下面程序段的运行结果是( )。
char *s = "abcde";
s+=2;
printf("%d",s);
选项 Value
A cde
B 字符 ’ c ’
C 字符 ’ c ’ 的地址
D 无确定的输出结果

答案为:C

开始的时候 s 为一个指向’‘abcde’‘字符串的地址,也就是字符串首字母’a’的地址,然后s = s+2后,指针的位置往后移2位指向’c’,利用%d输出的话,为16位的字符’c’的地址

9.阅读下列程序,则执行后的结果为( )。
#include "stdio.h"
main(){int c[][4] = {1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));
}

这道题在2020c语言模考的时候是显示缺失的,只有一部分,导致我一直看不懂这是什么意思,这里要吐槽一下官方,后来去查了一下找到了原题。(我的浏览器没问题,没任何缩放。)

答案为:A

首先,prinf("%x,%x\n")中用的小写的x,表示用16进制输出数,并且格式为小写的abcdef,排除D,然后要注意的一点就是,二维数组数组名代表数组的首地址,既(c+1)代表二维数组的第1行(从0行开始计数),(c+1)+1就是第一行的第一个数,所以是6

10.C语言结构体类型变量在程序运行期间( )。
选项 Value
A TC环境在内存中仅仅开辟一个存放结构体变量地址的单元
B 所有的成员一直驻留在内存中
C 只有最开始的成员驻留在内存中
D 部分成员驻留在内存中

答案为:B

*结构类型变量与其他基础类型变量一样,在某个代码块内,只要这个变量存在,那么其内部所有成员都存在。
而在TC环境中,定义结构体变量后,编译为其分配一批连续的单元存放各成员值。 *

TC环境度娘介绍:

而在TC和VC环境下,内存分配的差异可以看这篇博文;

TC和VC环境下,结构体内存分配差异

简单来说就是在TC环境下,任何类型的指针内存都为2,而在VC环境中内存有对齐机制,总内存大小与结构体内变量的排序有关。

11.设有定义语句 int (*f)(int);则以下叙述正确的是( )。
选项 Value
A f是基类型为 int 的指针变量
B f是指向函数的指针变量,该函数具有一个int类型的形参
C f是指向int类型一维数组的指针变量
D f是函数名,该函数的返回值是基类型为int类型的地址

答案为:B

这里要辨析清楚
int *f() : 表示函数的功能是: 返回一个地址
int (*f)() : 表示 这是一个函数的指针.它要指向一个函数才能有用.指向一个函数之后道可以用它来代替该函数.之后使用这个指针相当于使用该函数.

12.在16位IBM-PC机上使用C语言,若有如下定义,则结构变量b占用内存的字节数为( )。
struct data
{int i;char ch;double f;
}b;
选项 Value
A 1
B 2
C 7
D 11

答案为:C

因为在16位PC机上,int类型占2字节,char占1字节,double类型占4字节,三者相加为7

13.设有如下程序段,则执行p=s;语句后,以下叙述正确的是( )。
char s[20]="Beijing", *p;
p = s;
选项 Value
A 可以用*p表示s[0]
B s数组中元素的个数和p所指字符串长度相等
C s和p都是指针变量
D 数组s中的内容和指针变量p中的内容相同

答案为:A

B:s数组元素的个数为7,而p所指字符串长度为20;
C:s是一维数组,p是指针变量
D:应改为数组s中的内容和指针变量p所指数组的内容相同,因为单单说指针p的内容只为16进制的地址

————————————————————————————————————————————————————

以下为多选题(紧张又刺激)

14.以下可以定义为用户标识符的有:

为什么又要说这个很捞的问题呢,因为对于新手来说,有时候就是容易错啊:)

选项 Value
A scanf
B short
C _3com
D int

答案为:A,C

有人就会问了,scanf怎么可以是标识符呢,我每天老见它,一天好几次了,这么熟还可以是标识符!!???

啊~骚年对的,它可以是标识符,不信你看看c语言的关键字里面有没有它
没有吧~,其实scanf只是你经常使用的函数,并不是关键字,因此可以使用它来当关键字,但是在日常的编程实践中还是不要使用的好哇

15.以下选项中不是c语言合法整数的是( )
选项 Value
A 10110
B 0238
C 0Xffa
D x2a2

答案为:B,D

B:以0开头为8进制数,式子不能有8出现;
D:x2a2为16进制,但开头没有0x的标识

16.以下叙述错误的是( )
选项 Value
A c语言函数可以嵌套使用,如fun(fun(x))
B c语言程序是由过程和函数组成的
C c语言函数不可以单独编译
D c语言中除了main函数,其他函数不可以作为单独文件形式存在

答案为:BCD

B:C语言程序中没有过程的概念,C语言执行的基本单位是函数,一个程序可以有多个函数,但main(),有且只能有一个,各函数之间是平行关系,不允许嵌套定义但可以嵌套调用.
C:可以单独编译,例如库函数就是把函数放到库里,把一些常用到的函数编译完放到一个文件里,供不同的人进行调用。
D:c语言中函数与文件没有直接关系,因此任何函数都可以作为单独文件形式存在。将main函数作为单独文件只是因为程序简单等原因没有特意给主文件命名

17.以下4个选项中,可以看作是一条语句的有( )
选项 Value
A { ; }
B a=0,b=0,c=0;
C if(a>0);
D if(b==0) m =1;n=2;

答案为:ABC

A为复合语句,在程序中将复合语句看为一条语句,其中D有两条语句,不骜述

18.对Do-while语句描述正确的是( )
选项 Value
A do-while 语句构成的循环可以使用 break 语句退出循环
B do-while 语句构成的循环必须使用 break 语句退出循环
C do-while 语句构成的循环 , 当 while 中的表达式值为非零时结束循环
D do-while 语句构成的循环 , 当 while 中的表达式值为零时结束循环

答案为:AD

B:do-while语句构成的循环也可以在当不满足while条件后退出
C:应该是while表达式值为0(假)时结束循环

19.有定义语句:int x,y; 若要通过scanf("%d,%d",&x,&y); 语句使变量x得到数组11,变量y得到12,下列四组输入正确的是( )
选项 Value
A 11 12< 回车 >
B 11,< 空格 >12<回车 >
C 11,12< 回车 >
D 11,< 回车 > 12< 回车 >

答案为:BCD

c语言中scanf函数不读入键盘输入的空格,且"%d,%d"两个%d用逗号隔开,因此我们在键盘上输入时也要与其保持一致,输入逗号

20.以下对switch语句和break语句中有描述错误的有( )
选项 Value
A 在 switch 语句中必须使用 break 语句
B break 语句只能用于 switch 语句
C 在 switch 语句中 , 可以根据需要使用或不使用 break 语句
D break 语句是 switch 语句的一部分

答案为:ABD

A:在switch中break也不是必须使用的,break只是跳出这个循环或switch。如果你不用break的话,那么在执行完目标后,继续执行下面的case。不过一般来说,break都要使用的。B、D错误不多BB了

21.已知:int x=1,y=2,z=3;则值不为0的表达式是( )
选项 Value
A x<=y
B x&&y



为什么要放图片???,因为markdown表格里面 “| |” 打不出来,如果有大神会请教教我:)

答案为:ABD

此例我只讲一下CD两种情况,首先来一波速记C语言运算优先级

这个口诀可以记一下~ 当然其中还有一些细节需要你自己去查一下

!((x<y)&&!z||1) :首先()的优先级最高,则(x<y)为1 ;然后!的优先级第二,对z取反为0,再是&&,1&&0为0,接着为0||1为1,最后!1为0,结束;我简直是用完了我这辈子会的全部连接词

然后还有一点就是D里面的y-z为-1,在c语言中-1也为真,只有0才是假

22.一下描述正确的是( )
选项 Value
A 调用函数时 , 实参可以是表达式
B 调用函数时 , 实参与形参可以共用内存单元
C 调用函数时 , 将为形参分配内存单元
D 调用函数时 , 实参与形参的类型必须一致

答案为:ACD

这波啊,我们直接解释B

函数在调用参数时,如果实参是表达式,则表达式的结果传入形参。形参和实参之间进行数据的拷贝,当然需要为形参临时分配内存单元,函数调用完成之后,形参分配的单元被系统收回。

23.已知int a =2;则正确的赋值表达式是
选项 Value
A a+=a-=(a=3)
B a=int(-2.3)
C a=a*3=2
D a%3

答案为:AB

C中a*2不能做左值,D中只是a对3进行取余,而没有赋值操作

24.下列对c语言逻辑运算符两侧的运算对象的数据类型描述不正确的是( )

此题存在争议性

选项 Value
A 只能是 0 或 1
B 只能是 0 或非 0 正数
C 可以是整型或字符型数据
D 可以是任何类型的数据

答案是:ABD

首先排除AB,然后对于C和D网上有不同的说法,所以要骚年你自己掂量掂量啊~

—————————————————————————————————————————————————
下面是判断题~

25.(double)a乘以2是把a乘以2的结果强制转换为双精度浮点型。( )

答案:错误

应该解释为是将a先强制转换为双精度浮点型,然后再进行a乘以2的运算;如果按照题目来说应该是(double)(a*2)

26.结构体中的成员不可以与结构体变量同名。( )

答案:错误

这道题咱也不知道怎么解释,记着就好

27.变量的存储类型指出了变量的作用域和寿命。( )

答案:正确

按照变量的作用域(即从空间)角度分:可以分为全局变量和局部变量。

按照变量的生存期(即从时间)角度分:可以分为静态存储方式和动态存储方式。静态存储方式:是指在程序运行期间分配固定的存储空间的方式。动态存储方式:是在程序运行期间根据按需分配进行动态的分配存储空间方式。

用户存储空间可以分为程序区、静态存储区、动态存储区。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序运行完毕就释放。程序执行时它们占据固定的内存单元,而不动态分配和释放。

28. 自动类型变量可以定义在函数体外,这时应加说明符auto。( )

答案:错误

首先auto为函数内用于声明变量是自动类型的变量的关键字
用extern声明外部变量,目的是可以在其它的文件中调用

在本文中详细解释了extern的使用

29.使用sizeof运算符可以求得某种类型和某个变量在内存中占的字节数,不能求得某个表达式的类型在内存中所占的字节数。( )

答案:错误

我觉得下面这篇博文比我要讲的好

详解sizeof运算符

30.在引用结构体类型的变量时,如果成员本身又是一个结构体类型,则可以再次使用取成员符“ . ”,这样一级一级找到最低的一级的成员( )

详解结构体

答案:正确

如下示范

struct Birthday{                //声明结构体 Birthdayint year;int month;int day;
};
struct Student{                 //声明结构体 Studentchar name[20];              int num;                    float score;                 struct Birthday birthday;   //生日
}stu1;

则使用stu1.birthday.year 访问出生的年份。

万字长文带你玩转2020全国大学生计算机技能应用大赛—C语言模考整理解析相关推荐

  1. ML之LGBMRegressor(Competition):2018年全国大学生计算机技能应用大赛《住房月租金预测大数据赛》——设计思路以及核心代码—191017再次更新

    ML之LGBMRegressor(Competition):2018年全国大学生计算机技能应用大赛<住房月租金预测大数据赛>--设计思路以及核心代码-191017再次更新 目录 竞赛相关信 ...

  2. 全国大学生计算机技能应用大赛Java模拟题

    全国大学生计算机技能应用大赛Java模拟题 竞赛官网:http://www.cnccac.com/ 单选题 1.以下哪个不是java的垃圾回收算法 A.标记清除算法 B.空间分配算法 C.标记整理算法 ...

  3. 全国大学生计算机技能应用大赛ppt题库,全国计算机应用技术技能大赛预赛试题及答案.doc...

    全国计算机应用技术技能大赛预赛试题及答案 2004全国计算机应用技术技能大赛预赛试题及答案 IT技能大赛预赛之办公类试题库办公自动化(Word XP试题) 一.单选题:1.下列可将段落设置成1.5倍行 ...

  4. 全国大学生计算机技能应用(2020年)——C++科目决赛程序设计题解

    早上10点,准时开始比赛.10:00~11:30一个半小时的时间,需要解答13道不定项选择题.2道程序填空题.1道程序设计题和1道综合应用题.这里准备记录分享一下我的思路和解法.        我毫不 ...

  5. 第七届全国大学生GIS技能应用大赛试题答案及数据下载(下午)分析

    一.题目背景 生态环境敏感性是指生态系统对区域内自然和人类活动干扰的敏感程度,它反映区域生态系统在遇到干扰时,发生生态环境问题的难易程度和可能性的大小,并用来表征外界干扰可能造成的后果,即在同样干扰强 ...

  6. 兄弟姐妹们,我终于上岸了,喜获蚂蚁offer,定级p7,万字长文带你走完面试全过程

    前言 在今天,我收到了蚂蚁金服A级的实习录用offer. 从开始面试到拿到口头offer(四面技术+一面HR)战线大约拉了半个月, 从拿到口头offer到收到正式录用邮件大概又是半个月. 思前想后,决 ...

  7. 喜获蚂蚁offer,定级p7,面经分享,万字长文带你走完面试全过程

    前言 在今天,我收到了蚂蚁金服A级的实习录用offer. 从开始面试到拿到口头offer(四面技术+一面HR)战线大约拉了半个月, 从拿到口头offer到收到正式录用邮件大概又是半个月. 思前想后,决 ...

  8. 万字长文带你 搞定 linux BT 宝塔面板 之外网上快速搭建苹果CMS电影网站

    文章目录 万字长文带你搞定宝塔面板 一.本地搭建宝塔面板及安装ecshop 1.1前言 1.2面板特色功能 1.3安装环境说明 1.4安装BT面板 1.5常用管理命令 1.6 BT面板一键安装LAMP ...

  9. 全国计算机在线做题,2020全国一级计算机基础及MS Office应用考试在线自测试题库(不限设备,登陆即可做题)...

    &nbsp&nbsp[导读]:2020全国一级计算机基础及MS Office应用考试在线自测试题库(不限设备,登陆即可做题),更多全国等级考试报名时间.考试时间以及考试模拟试题,请访问 ...

最新文章

  1. 云炬创业政策学习笔记20210115
  2. udp java 检测连接_简单的JAVA UDP连接测试
  3. Mybatis中SqlMapConfig.xml配置文件的使用
  4. usb升级linux固件,Linux USB驱动(4)---CY68013固件加载驱动
  5. YASKAWA 机器人开发
  6. 基础知识:BT1120
  7. 怎么获取jquery版本_获取jQuery版本
  8. 【新年礼物】分享十个珍藏学习编程的网站,助大家2022如虎添翼
  9. 【学习笔记】标签噪声下利用深度学习进行图像分类任务——概述
  10. GBase 8atmp 目录权限改变导致加载失败
  11. JavaScript的一些简单代码
  12. 怎样配置外汇ea服务器运行,外汇EA安装及使用超详细说明-EA邦
  13. kubesphere master节点执行kubectl get po Unable to connect to the server: Forbidden
  14. uniapp+canvas实现app在线电子签名
  15. 美国的有线电视节目提供商
  16. 解决git Please use -- (and optionally --no-guess) to disambiguate
  17. fbx sdk android,Autodesk FBX SDK Program 中文 (一)
  18. EOS智能合约开发系列(五): 配置VS Code
  19. mac地址储存在计算机的内存,mac地址通常存在计算机的
  20. 有监督、半监督、无监督、弱监督、自监督

热门文章

  1. 如何设置计算机的网络参数,如何为计算机新手简单地设置路由器的基本参数
  2. 烟台理工学校计算机专业,烟台理工学校都有哪些专业
  3. 使用Phaser开发你的第一个H5游戏(一)
  4. 盘点机器视觉三大落地成熟应用
  5. 同步软件、网络同步、备份、分享工具
  6. Cadence PCB仿真 使用Allegro PCB SI为BRD文件创建通用型IBIS模型的方法图文教程
  7. 物联网平台由哪些架构组成
  8. 2021年东莞高新企业补贴政策
  9. 华为5g鸿蒙系统手机多少钱,华为Mate30Pro或成今年机皇:鸿蒙系统+麒麟985+5G基带,价格感人...
  10. java web分层和层间数据传递 vo bo po