西安建筑科技大学2020年833简答题部分

一、简答题(按照参考书《谭第五版》解答)

1、简述c语言标识符的规定;在给变量、函数、数组起名时应该注意什么。【2020】

【p42】

        🌚用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符

        🌚给变量函数、数组起名时规定只能由字符、数字、下划线3种字符组成,且第一个字符必须为字母或下划线。


【拓展】

(1)简述c语言常量的规定以及分类;

        🌚在程序运行过程中,其值不能改变的量称为常量。

        🌝分类整形常量、字符常量、字符串常量、符号常量、实型常量。

(2)简述const和define的含义并举例说明二者区别

#define Pi 3.14
const float Pi=3.14;

        🌚const是常变量,要占存储单元,有变量值,只是该值不改变

        🌚#define是用来定义符号常量,它是预编译指令,只是符号常量代表的一个字符串,预编译后,符号常量就不存在了,对此不分配存储单元


1、C语句空语句是什么,空字符(字符串结束标记)是什么?【2021】

【p58】

🌚下面是一个空语句

;

🌚此语句只有一个分号,它什么也不做。

【p154】C语言规定了一个''字符串结束标志'',以字符'\0'作为结束标志

2、什么是表达式?若在某程序中,已有定义int x; 请问x=5是表达式吗?若是,其值和类型各是什么?

🌚用运算符或括号将运算对象连接起来的、符合C语法规则的式子称作表达式   🌚x=5是表达式,值是5,类型是整(int)型

3、有定义语句char ch; ch是什么类型的变量? 在内存中占几个字节? 可用什么函数求其字节数? 此类型变量通常存放什么数据?试举一例。

🌚ch是字符型变量,在内存中占1个字节,用sizeof函数求字节数,char用来存取字符型数据。举例:'A'

4、写出if-else语句的一般形式,并画出流程图。

5、写出for语句的一般形式,并画出流程图。(简单流程图20/21都考了

if(表达式)
{
    语句体A;
}
else
{
    语句体B;
}

for(表达式1; 表达式2; 表达式3)
{
    语句体;
}

 


【流程图拓展】:各种牛马且可能会考的流程图汇总


6、若有以下二维数组的定义float x[3][4];请按在内存中的存放次序一一列出x的每个元素; 一般而言,若一个数组有m列,请问该数组第i行,第j列的元素之前有多少个元素?

X[0][0] 
x[0][1] 
x[0][2]
X[1][0] 
x[1][1] 
x[1][2]
X[2][0] 
x[2][1] 
x[2][2]
X[3][0] 
x[3][1] 
x[3][2]
//用矩阵表示,是逻辑上的概念,而在内存中,各元素是连续存放的,不是二维的,是线性的

🌚如果二维数组有m列,则a[i][j]元素前的数组元素个数为:(m*i)+j 个元素

本题目计算步骤如下:

1、二维数组a有m列,则每行有m个元素

2、要求的为a[i][j]元素前的数组元素个数,该元素之前有 i 行,即有 i*m 个元素

3、而在该元素本行之前有 j +1-1=j 个元素

4、总元素数量为 (m*i)+j 个元素

7、一个程序最多能有几个main函数? main 由谁调用?(严格来说比较复杂)返回值一般用来做什么?

👄main函数由操作系统调用

👄一个程序有且只有一个main函数

👄从C99开始,规定main函数必须返回一个int变量值,其值是返回给系统用的

main函数的返回值,用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。

返回非零值代表程序异常退出,而main函数给返回个0,则表示“非异常退出”,即正确执行并退出。

8、若一个指针p指向了一个整型变量a,请问变量p中存放的内容是什么?表达式(char *)p指向了什 么?表达式(char *)p+1 又指向了什么?(题目出的垃圾,严格来说类型名打括号是一种类型转换 谭286页有说明)

a的地址;   a存放的内容;a的下一个内容

9、在一程序中有struct pos2d {int x;int y;};这个语句定义了什么? pos2d是什么?系统给它分配 内存吗?在此之后又有struct pos2d point;请问定义了什么?给point分配了内存吗?若分配,如何 得到分配的字节数? 

👀定义了一个结构体;

👁pos2d是结构体名称;系统并不给其分配内存。

🖕🏼point为结构体变量,系统给它分配空间,字节数为各类型字节总和,用sizeof即可得到

10、 某个程序中调用了文件打开函数如下: fp=fopen("file. dat", "rb"); 请叙述其功能。另外请说出文本文件与二进制文件的区别。

功能:以只读的方式打开一个名为file.dat的二进制文件;

区别:

🦻🏿能存储的数据类型不同 
文本文件只能存储char型字符变量。二进制文件可以存储char/int/short/long/float/……各种变量值。
👄每条数据的长度 
文本文件每条数据通常是固定长度的。以ASCII为例,每条数据(每个字符)都是1个字节。进制文件每条数据不固定。如short占两个字节,int占四个字节,float占8个字节……
👧🏿读取的软件不同 
文本文件编辑器就可以读写。比如记事本、NotePad++、Vim等。二进制文件需要特别的解码器。比如bmp文件需要图像查看器,rmvb需要播放器……
🫂操作系统对换行符(‘\n’)的处理不同(不重要) 
文本文件,操作系统会对’\n’进行一些隐式变换,因此文本文件直接跨平台使用会出问题。 
在Windows下,写入’\n’时,操作系统会隐式的将’\n’转换为”\r\n”,再写入到文件中;读的时候,会把“\r\n”隐式转化为’\n’,再读到变量中。 
在Linux下,写入’\n’时,操作系统不做隐式变换。 
二进制文件,操作系统不会对’\n’进行隐式变换,很多二进制文件(如电影、图片等)可以跨平台使用。

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值