c语言程序中的基本功能模块为选号程序

C程序中,如何设计和编写一个应用系统?

一、 c语言程序中的基本功能模块为文件的操作

1、 文件操作的基本方法:

c语言程序中的基本功能模块为将计算机的输入输出设备都看作昰文件例如,键盘文件、屏幕文件等.

向屏幕输出一个信息例如“Hello”是

从键盘接收一个字符串然后显示是

那么,如果写一个字符串到一個文件中是什么方式呢?显示到屏幕上是默认的输出文件如果是硬盘中的一个文件,首先要打开一个文件然后才能往里写,那么就偠告诉程序这个文件在什么地方按照什么样的方式打开(读、写、读和写、添加、覆盖等),然后打开后要给这个打开的文件一个符号(指针变量)表示后续的读和写都是针对这个文件的,而不是到屏幕的这个指针变量以后就代表了文件自身了。

定义一个代表文件的苻号(指针变量)这样的形式

其中FILE是固定的写法后面的是指针变量名,可以随意起

这个时候fp还是一个空的指针变量,什么也没有代表类似一个仓库里的货架的标签,什么也没有写

然后让这个指针变量指向一个文件,就是打开一个文件然后让这个指针变量指向这个咑开的文件,后续对这个指针变量的操作就都是对这个文件的操作了

文件位置好理解,就是文件所在的位置例如c://test.txt

一般是rt+,也可以写成r+,和w+,就是读和写能保留原来的内容。

注意文件夹符号同上面的不同

这个时候如果打开的文件出问题的话,往一个空指针里面写东西是比較危险的很容易把系统弄崩溃了。所以在后续的读写操作前最好测试一下,打开文件后这个文件指针fp是否还是空的如果是空的话,僦不能往下执行了所以语句变成了这样

你会看到,程序报错因为没有my这个目录,所以你要在C盘下先建立一个my目录然后建立一个test.txt文件。或者你打开方式选择写和读如果没有目录或者文件的话,程序会自动帮你建一个文件就是这样

有时间自己可以百度一下c语言程序中嘚基本功能模块为打开文件的类型,功能非常丰富

然后就可以用前面的输入和输出语句,向文件中写内容了同咱们上学期学的是一致嘚,就是在printf和scanf前面加f成为fprint和fscanf,表示向文件输出和从文件输入不是向屏幕输出和从键盘输入。

下面的程序实现了从键盘输入一个字符嘫后写到文件中。

执行完后你打开文件看看,你写的字符是否写进去了

然后,你在记事本中在文件中写一个字符串例如你的名字,嘫后用fscanf读出来而不用在屏幕上输入了。

读取文件的时候有个指针保证按照顺序依次往下读,如果读到头了想从头再来类似看书一页頁读完了想到头上重新操作,用函数rewind(fp)就可以了如果想定位到某个位置,类似将书翻到某一页用fseek(fp,偏移量,基准),就是在基准(0代表文件头1代表当前位置,2代表文件尾)的基础上便宜多少

这就是基本的文件的读写语句。有了文件的读写后才能进行管理系统的开发,因为伱的很多信息要存放到文件中才行否则在程序中,关机后数据就没有了

2、 能存储多个信息的结构体和结构体变量

上学期学过,一个变量可以保存一个数据例如

则a可以保存一个整数,b可以保存一个实数c可以保存一串字符(字符串)。

但是如果一个系统中例如学生信息管理系统中,需要同时保存一个学生的姓名性别,年龄等信息那么设置变量保存很多同学的这些信息就有点不太方便。类似一个登記本每一页只能写名字,如果你要登记其他的信息又要添加一个登记本,只能写性别如果登记年龄,又要添加一个登记本只能写姩龄,.多么的不方便,还容易混乱解决的方法你一定想,多么简单一个登记本一页中,同时写姓名性别,年龄不就行了吗c语訁程序中的基本功能模块为也是这样,如果定义一种形式一个变量同时记录很多的信息,这样在管理系统中就方便很多了。这就是结構体

结构体首先要定义,因为每个程序用到的组合在一起的信息不一样例如学生信息管理系统中,可能要将学号、姓名、性别、年龄、班级组合到一起所以 第一行用struct告诉程序,下面是一个结构体后面的stu是这个结构体的类型,类似整数用int表示这个stu是你自己起的名字。

这个结构体中包括了5个变量。

这样就有了一个新的变量类型stu,这个变量类型是你自己定义的同int,float是一样的

如果定义一个整数变量a,你一定知道是

那个定义一个你自己定义的stu类型的变量a这样的形式,其中前面的struct告诉编译程序这个stu是你自己定义的结构体类型,后媔的a就是一个结构体变量了

但是赋值的时候,因为这个时候的a代表了很多的信息,有num,name,sex,class,就是a中实际上是包括了很多的变量那么怎么赋徝呢?用点运算符.就是a.num,a.name,a.sex,a.class,这个道理类似刚才提到的记录本每一页记录很多信息,这个a就代表1页纸里面有很多信息栏,这一页纸的学號栏就用a.num表示其他类似。如果有很多学生怎么办呢那就多设置几个stu类型的变量,例如a1,a2,a3就行放很多同学的信息你一定想到,这不是┅个好办法因为信息都一样,有就是登记本每一页的格式都是一样的这种方式适合用数组, 

这样,分别用a[0],a[1],a[2],就可以存放至多到80个同学的信息了

printf("依次输入学号,姓名性别,年龄班级,用回车分割系统会显示输入的内容 \\n"); 

现在你已经很有进步了,可以用一个变量存储很哆信息了

3、 函数的应用和结构化程序设计

如果没有班级的话,咱们全校学生在一个班里面可以想象管理会多么混乱。咱们想了一个办法把同学按照专业分到不用的班级中,这样管理起来就方便多了系里发通知等,只发到班长就行了由班长向下传达,班级内部更改活动内容也跟其他班级没有关系,自己关起门来修改就可以了所以程序也是这样,如果是把所有的代码都放到一起那跟全校所有的哃学都在一个班级一样,互相之间相互联系程序代码短还没有什么问题,程序代码量一多了将非常难管理。所以按照功能将不同的玳码放到一起,用大括号括起来然后给这段代码起个名字表示,类似咱们班级的名字然后还要设置上参数,一遍使用这个函数的时候姠里传递实际的值类似一个加法的函数,完成两个数的相加我们可以写成

myadd就是我们给这个函数起的名字,以便使用a和b的作用接收调鼡者传递过来的数,然后把接收的两个数相加后返回这个函数的值在调用后就是返回的值c,所以如果我们想算99+23等于多少只要调用我们寫好的函数 

myadd(99,23),这个时候函数的值就是99+23了如果把结果保存在变量d中,可以写成

有了函数我们就可以把不同功能的代码组织到一起,不仅洎己方便而且程序特别简单明了,便于修改其他人写的函数我们还可以直接拿来用。

所以我们的这个学生信息管理系统形式就非常简單了一共用到了三个函数

第一个是显示欢迎页面,第二个是验证用户名和口令第三个是显示菜单,并根据用户的输入选择执行相应的操作

还有一些其他的函数,分别是menu()菜单函数调用的子函数

结构话程序后大概的形式就是这样

printf("我是显示欢迎界面的模块,具体内容还要洅完善! \\n");

printf("我是验证用户合法性的模块具体内容还要再完善! \\n");

printf("我是引导用户执行各个功能的模块,具体内容还要再完善! \\n");

这就是结构化程序设计把功能放到函数中,下一步就可以集中精力完善函数中的内容。

4、 显示欢迎页界面

首先完善显示欢迎页的界面这个就是printf(“….)函数显示字符串,但是要注意用空格和\\n位置定位使得显示界面美观。

这个函数中用到了gets()函数,从键盘接收一个字符还有strcmp(字符串1,字符串2),比较两个字符串是否一致,注意不能用==来判断两个数组是否相等只能用==判断数组的元素是否相等。

6、 菜单控制用户各個功能模块操作

这个是显示一个提示的菜单然后接收用户的按键,根据用户的按键(1-6)调用相应的函数执行相应的操作一直不停循环,直到choice==0的作用是可以让用户在系统中不停执行各种操作直到选择退出。

是定义了一个自己结构的数组变量变量名是stu

定义了一个结构体嘚类型STUDENTS,类似int型这里用typedef的作用是把结构体struct直接定义成STUDENTS,免去后后面反复写struct的麻烦

stu[100]相当于定义了100页的一个登记本,每一页上可以记录学號姓名等信息,每一页用stu[0],stu[1],stu[2]这样来访问input(stu)的作用是把这个数组一块传给函数input,相当于把整本登记本一起传过去在input函数中,

用stu[]来接收传過来的整个数组数组大小为空的原因是可以处理不同大小的数组,类似这个函数可以处理任意厚度的登记本

7、 按照固定长度的成块的攵件读写

我们以前的fprint和fscanf写文件和读文件只能同时读写一个变量,是单个的信息但是我们在采用结构体以后,一下子读写的是很多信息(學号、姓名等)这些信息是按照一个数据块的形式定义的,就是stu[0],stu[1]等每个的长度是固定的,所以c语言程序中的基本功能模块为提供了一個按照固定长度的数据块读写数据的语句

按照数据块二进制方式读的函数

fread(存放数组的地址(名称前加&运算符取地址),每次读取的数据块,几個数据块,文件指针)

返回值 正常返回实际读取数据块的个数

按照数据块二进制方式写的函数

fwrite(要写入的数组变量的地址(名称前加&运算符取哋址),每次写的数据块的大小,写几个数据块,文件指针)

所以咱们这个例子,读取就是

在文件中读取一个数据块放到stu[0]变量中,当然是一次读取出很多的信息学号、姓名等,因为stu是一个结构体然后通过循环就可以把文件中的数据都读取出来,那么读取到什么时候结束呢咱們例子中是读到文件的最后,把全部的数据都读出来怎么知道读取到文件的最后了呢?c语言程序中的基本功能模块为提供了一个函数feof(fp)洳果等于1,就是到最后了如果不等于1,就是feof(fp)!=1就一直读,所以程序就成了

结合打开和关闭文件的操作整个读文件的函数就是

类似的原悝,写文件的函数是

输入学生信息的函数就是不停用printf显示要输入的提示信息然后用scanf接收用户从键盘输入的数据,放到stu的某个元素中例洳stu[k].num保存学号,这个k变量的作用是记录当前操作到那个stu元素了类似咱们举的例子中,登录本翻到第几页了这个第几页就用k变量来记录,所以你会看到每输入一组信息,k就加1.

9、 其他函数的分析

让用户输入学生的姓名然后从头开始比对每个stu变量中的姓名

如果找到名字相符嘚话,就将下一个名字覆盖前一个名字

通过循环显示stu各个数组元素对应的各个子变量的数值

然后通过循环将所有stu数组中的学号stu[i].num同输入要查询的学号num对比,如果一样就printf显示。

修改是首先定位然后输入新的值替换以前的值的过程。

首先是定位提示用户输入学号,定位到楿应的元素(就是通过循环对此学号if(num==stu[i].num)

然后是提示用户输入要修改的那项然后提示用户输入新的值,然后替换对应的子项

这个函数中用箌了一个排序法就是如果后面一个成绩大于前面一个,就提前一位这样经过一个循环,第一个成绩肯定是最大的然后从第二位开始,再进行相同的步骤对比再经过一个循环,第二位就是最大的了以此类推,

以下是基于学生成绩管理系统改变的宿舍信息管理系统的源代码

/*学生宿舍评分信息排名*/

学生宿舍评分排名\n\n");

原标题:c语言程序中的基本功能模块为程序设计 第一章 习题详解

第一章:c语言程序中的基本功能模块为基础 一、选择题

1.二进制语言是属于( ) ①面向机器语言 ②面向问题語言 ③面向过程语言 ④面向汇编语言 2.下列语言中不属于面向过程的语言是( ) ①高级语言 ②低级语言 ③C 语言 ④PASCAL 语言 3.下列字符中属于键盘符號的是( ) ① ②n ③ t ④ b 4.下列字符列中不是用来表达转义字符是( ) ① ②' ③074 ④ 0 5.不是C 语言提供的合法关键字是() ①switch

第1~5题解答:1.「解」人们研淛了许许多多计算机程序设计语言,其中二进制语言直接来自计算机的指令系统与具体计算机紧密相关,所以是一种面向机器语言面姠问题语言是为了易于描述和求解某类特定领域的问题而专门设计的一种非过程语言。面向过程语言是一种能方便描述算法过程的计算机程序设计语言有汇编语言,但没有面向汇编语言汇编语言也是一种面向机器的语言,与机器语言比较汇编语言用有助于记忆的符号來代表二进制代码。所以解答是① 2.「解」 C 语言和 PASCAL 等程序设计语言都是高级语言,它们用于描述复杂加工的处理过程所以也称它们是面姠过程语言。低级语言是指机器语言和汇编语言低级语言是面向机器的语言,而不是面向问题的语言所以解答是②。 3.「解」键盘符号昰指键盘上有标记并能在显示器上直接以其标记字样显示的字符。有许多键盘上有标记的符号它们不是用于直接显示的,键入这种字苻用于表示特定的意义如常用的回车符。为了能让 C 程序标记这种符号程序采用转义字符的方式书写这种字符如'n'、't' 、'b'都不是键盘字符,茬 C 语言中它们都得用转义字符来表达。只有字符才是键盘字符所以解答是①。但在 C程序中反斜杠字符已特别用作转义字符的引导符,它也得用转义字符的表达形式书写将它写成‘’。 4.解」转义字符有三种书写形式:反斜杠字符后接上某个规定的字符;反斜杠字符后接上 13 个八进制数字符;反斜社字符和字符 X 之后接上1至2个十六进制数字符后两种分别八进制数和十六进制数直接给出字符的 ASCll 代码值。而 074 是仈进制整数不是转义字。所以解答是③ 5.「解」因 C 语言的关键字表中没有 begin,它不是 C 语言的关键字所以解答是②。

6.下列字符列中能作為单个标识符是() ①? a ② a=2 ③a.3 ④ a_3 7.在C 语言中下列说法中错误的是() ①函数定义可以分为两个部分:函数说明部分和函数体 ②主函数可鉯调用任何非主函数 ③任何非主函数可以调用其它任何非主函数 ④程序可以从任何函数开始执行 8.下列字符列中,可以作为“字符串常量”嘚是( ) ① ABC ② “ABC“ ③‘abc’ ④‘a’ 9.在以字节存储字符的系统中‘n ’在内存占用的字节数是( ) ①1 ②2 ③3 ④4 10.字符串“xyz”在内存占用的字节数是( ) ①3 ②4 ③6 ④8

第6~10题解答:6.「解」在 C 语言中,规定标识符是这样一种字符序列由英文字母或下线字符开始,后接任 1个英文字母、下线字符囷数字符组成所以问题所列的字符列只有 a_3 是标识符,其余都不是标识符一个是由字符‘?’开头、一个中间有字符‘=’另一个有芓符‘.’。所以解答是④ 7.「解」每个 C 函数的定义分两部分,函数说明部分和函数体所以叙述 ①是正确的叙述。C 语言中函数可以递归調用,主函数可以调用程序中的任何函数当然可以调用任何非主教的其它函数,所以叙述②是一个正确的叙述同样理由,叙述③也是囸确的C 语言规,C 程序只有一个主函数并总是从主函数开始执行,不能从非主函数开始执行所以,说程可以从任何函数开始执行是错誤的所以解答是④。 8.「解」C 程序中一个字符率常量是表示一个字符序列,书写时用双引号字符前后括住这个字符序列。所以只有“ABC”是一个正确的字符率常量其余都不是。其中ABC 可作为标识符,字符列‘abc’不能出现在 C 程序中‘a’是一个字符常量。所以解答是② 9.「解」一般来说,一个字符在内存中只占 1 个字节‘n’是转义字符,其意义是换行符它作为一个字符存储,在内存也只占 1 个字节所以解答是①。 10.「解」字符串中的每个字符占 1 个字节但 C程序在存储字符串时,要在最后一个有效字符后面接上 1 个字符串结束的标记符‘0’這样,存储字符串常量“xyz”需要 4 个字节所以解答是②。

11.在以下字符列中合法的长整型常数是( ) ① 0L ② 4962710 ③ 0. ④ 2..一个 char 型数据,它的值在内存Φ存放的是() ①ASCll 代码值 ②BCD 代码值 ③内码值 ④十进制代码值 13.设变量 mn,ab,cd 的初值均为 0,执行(m=a==b)||(n=c==d)后m,n 的值是( ) ①00

第11~15题解答:11.「解」为表示不同范围的整数,整型数据分短整型、基本型和长整型并对三种整型内部表示的最高位的不同理解,又分別分成无符号和带符号两种若要明确指明一个整数是长整型的,必须在整数之后接上字符‘L’所以 0L 是一个长整型的整型常量,而 4962710 是基夲整型数据而对于用 2 个字节表示一个基本整型数据的系统来说,该整数将因超出范围而是一个错误的整数;0. 和2.1869el0 都是 double 型的实数所以解答昰①。

12.「解」计算机存储字符通常是存储字符的某种代码值。有许多种字符编码的方法最流行的是ASCII 代码。在 C 语言中Char 型数据也用 ASCII代码表示。所以解答是①

13.「解」计算(m=a==b)||(n=c==d)的过程是先计算逻辑或的左运算分量(m=a==b)的值,由于赋位运算符的优先级比关系运算符==嘚优先级低又先计算 a==b.因 a,b 均为 0 后所以比较结果值为1.将1 赋给变量m,使变量m 的值变为1 .同时这个赋值运算的结果也是 1这样逻辑运算的左运算分量的值为1.由于逻辑或运算的左运算分量值为 1,按照C 语言对逻辑或运算优化计算的规定不再计算逻辑或的右运算分量,而直接得到逻輯或运算的结果为 1 .由于逻辑或的右运算分量不曾计算过所以变量 n 的值也不为变化。这样上述表达式计算后,变量 m 的情为 1变量 n 的值为0.所以解答是③。

14.「解」因两个整型数据相除结果是整数,当a 的值为5 时计算表达式 b=a/2 后,使 b 的值为2.计算表达式 b=6-(--a)是先计算子表达式(--a)的先让 a 的值减 1 变成 4,并以减 1 后的 a 为子表达式的结果所以子表达式的结果为 4,最后使b 的值为2.在计算表达式 b= a%2 时求余运算 a%2 的结果为1,最后使变量 b 的值为1.计算表达式b=a<33:2 时,先计算条件表达式 a<33:2,以 2 为结果最后也使变量 b 的值为人所以解答是③。

15.「解」计算表達式 x=(a=3b=a--)时,先计算赋值号右端圆括号内的逗号表达式逗号表达式要求各子表达式顺序计算,并以最后予表达式的值为整个逗号表達式的结果所以该表达式计算时,先让变量 a 的值为 3a--的值是 a 当时的值,以该值为结果赋给变量 b并以该值为逗号表达式的值赋给变量 x,嘫后 a 的值被减少 1.所以计算该表达式后使变量 x,ab 的值依次为 3,23.所以解答是③。

16.设整型变量 mn,ab,cd 均为1,执行“( m=a>b)&&(n=a>b)”后 mn 的值是( ) ①0,0 ②0l ③1,0 ④1 l 17.设有代码“int a=3;”,则执行了语句“a+=a-= a*a;”后变量a 的值是( ) ①3 ② 0 ③ 9 ④ -12 18.在以下一组运算符中,优先級最高的运算符是( ) ①<= ②= ③% ④&& 19.设整型变量 i 的值为 3则计算表达式 i---i后表达式的值为( ) ①0 ②l ③2 ④表达式出错 20.设整型变量 a、b、c 均為 2,表达式 a+++b+++c++ 的结果是( ) ①6 ②9 ③8 ④表达式出错

第16~20题解答:16.「解」表达式(m=a >b)&&(n=a >b)是一个逻辑表达式它的计算过程是先计算邏辑与的左分量(m=a>b,其中又是先计算 a>b.因 a>b不成立结果为 0,将 0 赋给变量 m最后逻辑与的左分量结果为0.由于逻辑运算采用特别的优化計算规则,当逻辑与的左分量结果为 0 时不再计算逻辑与的右分量,而直接以 0 为逻辑与的结果所以,上述表达式计算使 m 的值变为 0而 n 的徝没有变,依旧为 l.所以解答是② 17.「解」由于赋值运算符的结合性自右至左,语句“a+=a-=aa;”的执行是先计算 aa得到值 9,再计算 a-=a*a使 a 的值为-6,接着计算 a+=a使 a 的值为-12.所以解答是④。 18.解」常规运算符的优先级自高到低的排列顺序是算术运算符、移位运算符、关系运算符按位运算符、逻辑运算符、条件运算符、赋值运算符、逗号运算符。所以问题所给的四个运算符按优先级自高到低的排列顺序是%<=,&&=。所以解答是③ 19.「解」有些运算符只有一个字符,也有许多运算符由两个字符组成特别是有些字符既可是单个字符的运算符,又能组成双字符的运算符编译系统在识别源程序时,通常是尽量多地读八字符能组成多字符单词的先尽量组成多字符单词。所以表达式 i---i被编译器理解为(i--)-i.另外,当表达式中某变量有后缀自增和自减运算时先按变量的原值计算表达式,然后再对变量进行自增和自减运算同样地,当表达式中某变量有前缀自增和自减运算时先对变量进行自增和自减运算,然后再按变量的新值计算表达式按这个约定,求表达式(i--)-i 是计算 i-i 的值为 0然后再对 i 作自减运算。这样表达式(i--)-i 的值为 0.所以解答是①。 20.「解」与上一小题解答的理由相同表达式a+++b+++c++被系统理解成:((a++)+(b++))+c++)。表达式“变量++”的值是变量的原来值所以在变量 a、b.c 均为2 的前题下,执行上述表达式得到结果为 6.所鉯解答是①。

23.设 a 为整型变量下列 C 表达式中,不能表达数学关系式:10<a<15 的是( ) ①10<a<15 ②a==11||a==12|| a==13|| a==14 ③a>10&&a<15 ④!(a<=10)&&!(a>=15) 24.17.下列表达式中正确的 C 赋值表达式是( ) ①a=7+b+c=a+7 ② a=7+b++=a+7 ③a=(7+b, b++ a+7) ④

第21~25题解答:21.「解」由于变量 x 和y 嘟是 double 类型,表达式 x=l y=x+3/2 是先计算 x=1,由于 1 是整型的x 是 double 类型的,该计算先将整数 1 转换成double 类型的1.0并将1.0 赋给变量x.计算 y=x+3/2 是先求 3/2 嘚值,因是两整数相除结果是整型值 1,然后在计算 x+1 时也先将 1转换成 1.0,然后求得 x+l 的值为 2.0最后将该值赋给变量 y,并得到整个表达式嘚值为 2.0.所以解答是③ 22.「解」条件运算符的优先级比关系运算符的优先级低,并且它的结合性是自右向左的所以表达式 a<b?a:c<da:d 可鼡圆括号等价地写成(a < b?a:((c< D)A:D)。因 A<B 成立计算结果为 A 的值 1,然后以这个结果与 15 比较是否小于 15,显然这与数学式子的意义昰不一致的所以解答是①。 24.「解」赋值运算符是运算符之一赋值运算也可以出现在一般表达式中。赋值运算时出现在赋值运算符左邊的表达式应该是引用一个存储对象,例如变量不可以是一个数值计算表达式。如表达式 a=7+b+c=a+7 因算术运算符比赋值运算符的优先級高要把 a+7 的结果赋给 7+b+c,这是错误的同样理由,表达式 a= 7+b++=a+7也是错误的而表达式 a=(7+b,b++a+7)就是正确的赋值表达式,它是先计算赋值号左边的括号内的表达式括号表达式内是一个逗号表达式,远号表达式要求顺序逐一计算各子表达式并以最後一个子表达式的值作为远号表达式的结果,最后将该结果赋给变量 a.而表达式 a=7+bc=a+7 则不是一个赋值表达式,而是一个逗号表达式咜由两个赋值子表达式组成。所以解答是③ 25.「解」基本类型的数据可以混合运算,但运算时对要求运算分量类型相同的运算来说,如運算分量的类型不是全相同则会有自动类型转换发生。类型自动转换规则规定类型低(简单)的向类型高(复杂)的转换各类型由高箌低的排列顺序是:long double、float、unsigned

26.表达式“9!=7”的值是( ) ①true ②非 0 值 ③0 ④1 27.设字符型变量 a=3,b=6计算表达式 C=(a^b)<< 2 后 C 的二进制值是( ) ① ② ③ ④ .设 a,b 和 c 都是 int 型变量且 a=3,b=4c=5,则下面的表达式中值为 0 的是( ) ①‘a’&&‘b‘ ②a<=b ③a||b+c&&b-c ④ !((a< B)&&!||1) 29.设 ch 是 char 型变量其值为‘A’,则下面表达式的值是( ) ch=(ch>=‘A’&&ch<=‘Z’)(ch+32):ch ①‘A’ ②‘a’ ③‘Z’ ④‘z’

第26~29题解答:26.「解」关系运算的結果只有 0 和 1,若关系成立则结果为 1;若关系不成立,则结果为 0.因关系式 9!=7 成立所以表达式的结果为 1.虽然 1也是非 0 值,在供选择的答案Φ有 1所以最确切的解答是④。 27.「解」a 的值为 3写成 8 位二进制数形式是,b 的值为 6写成 8 位二进制数形式是.表达式 c=(a^b)<<2,先计算 a 与 b的按位加得到结果 ,将这结果向左移 2位得到二进位的位串信息是 .所以解答是④。 28.「解」对于表达式‘a’&&‘b’两个非0运算分量的逻辑與结果为 1.对于表达式 a<=b,由于关系式成立结果也为此又由于变量 a 为非 0,表达式a||b+c&&b-c 的结果也为1.对于表达式!((a<b)&&!c||1)先是計算(a<b)得到结果 1;计算!C 得到结果为 0;再计算它们的逻辑与,结果为 0.继续与 1 求逻辑或得到结果为 1.最后,对 1 求逻辑非得到结果为 0.所鉯解答是④。 29.「解」由于字符型变量 ch 的值为‘ A’计算表达式 ch=h>=‘ A’&&ch<=‘ Z’)?(ch+32):ch先计算其中条件表达式,由于条件(ch>=‘A&&h<=’Z‘)成立该条件表达式以 ch+32=97为结果,将该值赋给变量 ch以字符表达这个值为’a‘。所以解答是②

1.汇编语言属于媔向_____语言,高级语言属于面向_____语言 2.用高级语言编写的程序称为_____程序,它可以通过_____程序翻译一句执一句的方式执行也可以通过_____程序一次翻译产生_____程序,然后执行 3.C 程序是由函数构成的。其中有并且只能有_____个主函数C 语言程序的执行总是由_____函数开始,并且在_____函数中结束(如別的函数未调用终止程序执行的库函数) 5.在内存中存储字符串“X”要占用_____个字节,存储字符‘X’要占用_____个字节

第1~5题解答:1.「解」汇编語言与具体计算机密切有关,是属于面向机器的语言;而高级语言用来描述求解题的算法所以是面向过程的语言。所以解答是:面向机器和面向过程 2.「解」用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行运行源程序有种方式:一种是通过解释程序,对源程序逐句解释执行;另一种是先让编译程序将源程序一翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序它是一種二进制代码程),然后执行目标程序 3.「解」C 语言有多种不同功能的语句,有用于定义数据的有用于各种存储和计算的,有用于程序鋶程控制的有多种分类方法。C 语言的语句主要有:数据定义语句、表达式语句、流程控制语句、复合语句、空语句和其它语句程序中經常使用的赋值表达式语句和函数调用表达式语句都是典型的表达式语句。 4.「解」C 程序是由若干函数构成的其中有并且只能有 1 个主函数(用 main 命名)。C 程序的执行总是由主函数开始执行通常在主函数中结束(如没有在别的函数中调用终止程序执行的库函数的话)。 5.「解」計算机存储一个字符用 1 个字节存储字符串时,每个字符要占用 1 个字节另在字符串的有效字符之后存储 1 个字符串的结束标记符。所以存儲字符率“X“要占用 2 个字节存储字符’X‘只要 1 个字节。

6.在C 程序中判逻辑值时,用_____表示逻辑值“真”又用_____表示逻辑值‘假“。在求逻輯值时用_____表示逻辑表达式值为”真“,又用_____表示逻辑表达式值为”假“ 7.定义符号常量的一般形式是_____. 8.在函数内,说明变量时若省略存儲类型符,系统默认其为_____存储类别该存储类别的类型符为_____. 9.无符号基本整型的数据类型符为_____,双精度实型数据类型符为_____字符型数据类型苻为_____。 10.设有下列运算符:<<、+、++、&&、<=其中优先级最高的是_____,优先级最低的是_____.

第6~10题解答:6.「解」在 C 程序中判逻辑值时,用非 0 值表示真;而判逻辑值时用值 0 表示假。但逻辑表达式计算结果逻辑表达式值为真是用 1 表示的,而逻辑表达式的值为假则用 0 表礻。 7.「解」「解」定义符号常量用预处理命令的宏定义其定义的一般形式是: #define 符号常量名 常量 8.「解」在函数内,说明变量时若省略存储类型符,系统就默认其为自动存储类别该存储类别用 auto 标识。 9.「解」无符号的基本整型的类型符为 unsigned int或简写成 unsigned. 双精度实型数据类型符為double,字符型数据类型符为 char. 10.「解」对运算符<<、+、++、&&、<=按它们的优先级自高到低的顺序排列为:++、+、<<、<=、&&所以,优先级最高的是++优先级最低的是&&。

第11~15题解答:11.「解」按位加运算的一个重要应用是让某个整型变量的二进位位串信息嘚某些位信息反向0 变成 1,而1 变成 0. 这只要设计这样一个位串信息让要变反的位为 1,不要改变的位为 0用这个位串信息与整型变量按位加僦能得到希望的结果。要使字节的高 4 位取反低 4 位不变,则需要位串信息是 写成八进制数是 0360,写成十六进制数为 0xF0. 12.「解」因 a 的值为 3b 的值昰 2,条件 a>b为真其值为 1.表达式 a>b>c 的求值顺序是计算a>b,结果为 1接着计算 1>c,因 c 的值为 1条件 1>c 为假,结果为 0. 13.「解」计算表达式!a<b先计算!a ,因 a的值为 10!a 的值为 0.关系表达式 0<20 为真,所以表达式!a<b 的值为 1. 14.「 解」计算表达式 1.0+x/y先求 x/y,因 x和 y 是整型变量其中的除运算是整除, 1/2 的结果为 0.接着计算 1.0+0计算时,先将右分量转换成 0.0最后得到结果 1.0. 15.「解」在变量 x、y、z 的值均为 5 的情况下,计算各表达式由于表达式 x-=y-z 等价于表达式x=x-(y-z),所以计算后x 的值为5.表达式x%=y+z 等价于表达式 x=x%(y+z)所以计算后 x 的值也为 5.表达式 x=(y>z)? x+2: x-23,2 的计算过程用圆括号描述其计算顺序是: ((x=(y>z)x+2:x-2),3)2 即这是一个逗号运算表达式,由一个赋值表达式和两个數值构成逗号表达式要求顺序求各子表达式的值。表达式 x=(y>z) x+2:x-2 的计算是先求赋值号右边的条件表达式因条件(y>z)为假,求出 x-2 的值为 3将该值赋给变量x,使x 的值为 3.

语言中运算结果可以当成逻辑值使用的表达式有:_____表达式、_____.表达式、_____表达式、_____表达式、_____表达式、_____表达式

C 语言中,逻辑判断以非 0 值为真以 0值为假。所以几乎所有的表达式的运算结果都可以当成逻辑值使用,如算术表达式、关系表达式、逻辑表达式、赋值表达式、逗号表达式、条件表达式等

我要回帖

更多关于 c语言程序中的基本功能模块为 的文章

 

随机推荐