一、简答题(按照参考书《谭第五版》解答)
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’进行隐式变换,很多二进制文件(如电影、图片等)可以跨平台使用。