版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题目的括号内。每小题2分,共36分)1 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是( A )A. C语言程序仅可以编译执行 B. C语言程序仅可以解释执行C. C语言程序既可以编译执行又可以解释执行 D. 以上说法都不对解:编译执行和解释执行是计算机语言的一种执行方式。所谓编译执行就是编译à连接,生成*.exe文件后,执行*.exe。大部分语言都是这种方式。比如C、Fortran,Pascal等语言;而届时执行则不能脱离语言的系统环境,如QBasic语言,它由解释器现场解释执行
2、,不生成目标程序。解释执行效率较低,低于编译执行。A、解释程序 所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一
3、组语句,这就造成很大浪费。 B、编译程序 这是一类很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。 编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分
4、配;第四遍扫描做代码生成。 值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。 在实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时间。2. 以下叙述中错误的是( D )A. C语言的可执行程序是由一系列机器指令构成的B.
5、 用C语言编写的源程序不能直接在计算机上运行C. 通过编译得到的二进制目标程序需要连接才可以运行D. 在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件解:3. 以下选项中不能用作C程序合法常量的是( A )A. 1,234 B. '123' C. 123 D. "x7G"解:考点:常量首先要理解何谓常量,A中1,234在日常表示可以或部分语言可以识别,而C语言中表示整数不能使用逗号分隔形式, C是正确。D"x7G"为字符串常量,其中x7为控制字符表示BEL即响铃,所以该字符串常量有两个字符响铃x7和G。而B123很多
6、人认识是错误的,实际上是正确的,书本上很少有介绍。请看下列示例:#include <stdio.h>void main()char x='123'char y='ab'printf("%cn",x);printf("%cn",y);运行结果为 3 B也就是说类似123这样表示,系统是由左向右取值,最后一个字符为其值。实际编程很少用到,但确实允许。4. 以下选项中可用作C程序合法实数的是( A )A. .1e0 B. 3.0e0.2 C. E9 D. 9.12E解:考点:浮点数的表示实数的科学表示法:1.2e-4
7、,其中尾数1.2和指数(必须是整数)-4不可少,e写出E也可。从答案中可知B的指数是小数,C少尾数,D少指数。5. 若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是( A )A. a=(b=4)=3; B. a=b=c+1; C. a=(b=4)+c; D. a=1+(b=c=4);解:考点:表达式,赋值 语法都对A的等效式为b=4;b=3;a=b; 有冗余,给b赋值两次。B的等效式为b=c+1;a=b;C的等效式为b=4; a=b+c;D的等效式为c=4;b=c;a=1+b;6. 有以下程序段char name20;int num;scanf("name
8、=%s num=%d",name;&num);当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为( A )A. Lili B. name=Lili C. Lili num= D. name=Lili num=1001解:考点:格式输入scanf("name=%s num=%d",name;&num);蓝色部分需要用户输入,字符串%s输入字符串时空格或回车结束,字符串接受了Lil i,故选A。7. if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是( D )A. 必须
9、是逻辑值 B. 必须是整数值 C. 必须是正数 D. 可以是任意合法的数值解:考点:表达式的值条件表达式的值或为真1/true或为假0/false。如果非逻辑值0/1,则非0为真,故可以是任意合法的数值,0时为假,非0为真,故选D。8有以下程序#include <stdio.h>main() int x=011;printf("%dn",+x);程序运行后的输出结果是( C )A. 12 B. 11 C. 10 D. 9解: 考点:表达式、八进制常量x的初值为八进制数011,对应的十进制数为9。 显示的值是表达式+x的值,+x的值为10,故选C。9. 有以下程序
10、#include <stdio.h>main()int s;scanf("%d",&s);while(s>0) switch(s)case 1:printf("%d",s+5);case 2:printf("%d",s+4); break;case 3:printf("%d",s+3);default:printf("%d",s+1);break;scanf("%d",&s);运行时,若输入1 2 3 4 5 0<回车>,则输出结
11、果是( )A. 6566456 B. 66656 C. 66666 D. 6666656解: 考点:多分支结构,格式化输入输入的数据之间均有空格,所以变量s接受的值依次为1、2、3、4、5、0。1时,执行case 1和case 2,显示652时,执行case 2,显示63时,执行case 3和default,显示644时,执行default,显示55时,执行default,显示60时循环结束,故最后显示结果为6566456,选A。10. 有以下程序#include <stdio.h>main()char s="012xy08s34f4w2"int i,n=0;f
12、or(i=0;si!=0;i+)if(si>='0'&&si<='9') n+;printf("%dn",n);程序运行后的输出结果是( B )A. 0 B. 3 C. 8 D. 9解:考点:字符数组,循环结构字符串以0作为结束符,访问字符数组时如果未指定给定位置,通常到0,本题在循环中结束判断指定到0,故实际统计的字符串为”012xy”,数字字符个数为3,故选B。11. 若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k+) printf("*n");下面关于语句
13、执行情况的叙述中正确的是( D )A. 循环体执行两次 B. 循环体执行一次C.循环体一次也不执行D. 构成无限循环解:考点:for循环,条件表达式该循环,初值i=0,k=-1,终值条件k=1,即将1赋给k,故为恒真,无论中间k如何变化,均是如此,故选D。如果终值条件k=1,则应选C。12. 有以下程序#include <stdio.h>main()char b,c; int i;b='a' c='A'for(i=0;i<6;i+) if(i%2) putchar(i+b);else putchar(i+c); printf("n&q
14、uot;);程序运行后的输出结果是( B )A. ABCDEF B. AbCdEf C. aBcDeF D. abcdef解:考点:循环、字符运算和输出、条件表达式 该循环初值b=a为小写字母,c=A为大写字母,循环次数为6次,i=05; i%2=1时i=1,3,5,显示i+bàb d f i%2=0时 i=0,2,4,显示i+càA C E 故选B13. 有以下程序段#include <stdio.h>main()while( getchar()!='n');以下叙述中正确的是( C )A. 此while语句将无限循环 B. getchar()
15、不可以出现在while语句的条件表达式中C. 当执行此while语句时,只有按回车键程序才能继续执行D. 当执行此while语句时,按任意键程序就能继续执行解:考点:while循环而和getchar()函数 条件表达式getchar()!=n表示从键盘输入的字符如果不是回车就为真,所以只有输入的是回车,该循环才会结束,继续后续语句的执行。14. 有以下程序#include <stdio.h>main()int x=1,y=0;if(!x) y+;else if(x=0)if (x) y+=2;else y+=3;printf("%dn",y);程序运行后的输出结
16、果是( D )A. 3 B. 2 C. 1 D. 0解:考点:if()else ifelse是最简单的分支语句,为二选一, 通过嵌套可以组成多分支,嵌套时else总是与它前面最近的if配对。将上面的if进行划分就非常清楚了。if(!x) y+;else if(x=0)if (x)y+=2;else y+=3;判断前初值x=1,y=0,由上面语句可以看出x=0,y的值才会变化,故y=0,显示结果为0。15. 有以下程序#include <stdio.h>main()char a30,b30;scanf("%s",a);gets(b);printf("%s
17、n %sn",a,b);程序运行时若输入:how are you? I am fine<回车>则输出结果是( B )A. how are you? B. how I am fine are you? I am fineC. how are you? I am fine D. row are you?解:考点:字符串输入scanf(“%s”,a)接受用户从键盘输入字符串直到空格或回车。gets(b)接受用户输入直到回车结束,故a接受的是”How”,剩下的有b 接受。16. 设有如下函数定义int fun(int k)if (k<1) return 0;else if(
18、k=1) return 1;else return fun(k-1)+1;若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( B )A. 2 B. 3 C. 4 D. 5解:考点:函数及其递归调用该调用为fun(3)àfun(2)àfun(1),fun()函数共调用了3次,故选B 2+1 <-1+1 <-1 17.有以下程序#include <stdio.h>#define S(x) 4*(x)*x+1main()int k=5,j=2;printf("%dn",S(k+j);程序运行后的输出结果是( B )A.
19、 197 B.143 C.33 D. 28解:考点:宏宏是预处理的一种,分宏定义,宏调用和宏展开。定义好宏后,在编程时进行调用,用宏定义的功能代替要编写的功能,减少编程量。编译时系统会按宏定义格式原样替换,即所谓的宏展开:S(s+j)=4*(k+j)*k+j+1=4*(5+2)*5+2+1=143故选B18. 有以下程序#include <stdio.h>main()unsigned char a=8,c;c=a>>3;printf("%dn",c);程序运行后的输出结果是( C )A. 32 B. 16 C. 1 D. 0解:考点:数的表示和位运算
20、,表达式无符号字符表示a=8,为单字节数据,二进制表示为0000 1000,运算符>>表示右移,a>>3表示将a右移3位,即0000 1000à0000 0001,结果为1,故选C。填空题(每空2分,共20分)1. C语言的预处理语句以_#_开头。解:所有预处理均用#开头,如#include <stdio.h> 包含头文件,系统在这些头文件中定义了一些函数,用户可以调用;宏#define S(x) 4*(x)*x+12. 表达式7<2<1的结果是_1或true_.解:关系运算的运算符有< <= > >= = !=
21、 , 都是二目运算符,即运算符两边都有操作数,如:x>y x!=y等,通常用作条件表达式。本题7<2<1是两个条件判断的组合,可分解为如下形式:7<2<1à (7<2)<1,显然结果为真。3. C语言中strcpy() 函数的功能是 复制字符串或字符串常量给另一个字符串数组或指针 .解:C语言中没有专门的字符串变量,表示字符串通常用字符串数组或指针。用字符串常量可以初始化一个数组或指针,但是不能用于赋值给数组。比如 char str=”WuYi University”;是正确的,但是 char str20; str=”WuYi Univers
22、ity”;是错误的。在 C语言中用于处理字符串数组和指针,需要使用系统提供的函数,它包含在头文件string.h中,比如strlen(),strcat(),strcmp(),strcpy(),strstr()等,输入输出函数有getchar(),putchar() ,gets(),puts(), 其中strcpy()格式为strcpy(char *dstr,const char *sstr);功能为将sstr复制给dstr。例如char dstr20="AP10331",sstr20="AP10332"printf("%s-%sn",
23、dstr,sstr);strcpy(dstr,sstr);printf("%s-%sn",dstr,sstr);执行结果为:AP10331-AP10332AP10332-AP103324. 数组 int a34;共定义了 12 个数组元素。解:C语言中定义二维数组的格式如下: 数组类型 数组名行数列数;在计算机语言中,实现多维数组的方式主要体现在存储数据的方式,通常有行序优先和列序优先方式,C语言采用行序优先的存储方式,Fortran则采用列序优先的方式存储。定义的元素个数=行数*列数=3*4=12存储的顺序为:a00,a01,a02,a03, a10,a11,a12,a1
24、3,a20,a21,a22,a235. 短整型数-35在机内的补码表示为 0xffdd 。解:短整型数在内存中用两个字节存储,由题目知是带符号数,故其补码表达范围为0x00000x7fffà0-327670x80000xffffà-32768-1 -35补=0x10000-35=0xffdd6. 执行下列语句int a=9; a+=a-=a*a; 后,a的值是_144_。解:多个赋值表达式的组合,规则是从右向左结合,等效于:a=a-a*a; /a=9-9*9=-72 a=a+a;/a=-72-72=-1447. 有如下语句:char A =“I am a student.”
25、; 该字符串的长度是_15_,A5=_a_。解:用字符数组存储字符串,用0表示字符串结束。求字符串长度时不包含0,故长度为15,A5=a0123456789101112131415Iamastudent.'0'8. 一个源程序中允许有 1 个main()函数。解:一个工程只能含有一个main()函数,一个工程可以含有多个源程序*.cpp文件,其中只能有一个文件可以含有main()函数,所以一个源程序可以含有0/1个main()函数,含有main()称为主源程序。任何一个工程都是从main()函数开始执行,也结束于main()函数。9. 符号“a”和a的区别是 前者是字符串常量,
26、后者是字符常量 。解: 前者的有效字符虽然也只有一个字符a,但其后面还有一个结束字符0,故内存需要两个字符存储。应用题(每小题6分,共30分)1. 下面程序段为起泡(冒泡)排序法,写出运行结果。int r10= 1,2,3,4,5,3,20,8,9,10 ;int n=10,exchange,bound,temp;for(int i=1;i<n;i+)printf("%d ",ri);printf("n");exchange=n; while (exchange) bound=exchange; exchange=0; for (int j=0;
27、j<bound; j+) if (rj>rj+1) temp=rj;rj=rj+1;rj+1=temp; exchange=j; for(i=0;i<n;i+)printf("%d ",ri);程序运行后的输出结果是 。解:该程序段是对r10进行起泡排序,数据范围是r0r9。该算法是改进的起泡排序法,排序后数据由小到大排列。输出结果有两行,第一行显示排序前的r1r9,第二行显示排序后的r0r9,结果如下:2 3 4 5 3 20 8 9 101 2 3 3 4 5 8 9 10 202. 有以下程序 #include <stdio.h>int
28、fun (int x,int y)if (x!=y)return (x+y)/2);else return (x);main()int a=4,b=5,c=6;printf("%dn",fun(2*a,fun(b,c);程序运行后的输出结果是 6 。 解:此题主要考函数的递归调用。首先要弄懂函数的功能,从函数体if (x!=y)return (x+y)/2);else return (x);可知,如果x!=y返回其整除平均值,如果相等返回x,实际上也是平均值,则: fun(b,c)=fun(5,6)=(5+6)/2=5 fun(2*a,fun(b,c)=fun(8,5)=(8+5)/2=63. main() int a=8, b=2;a=a+b;b=a*b;printf(“a=%d, b=%d”,a,b); 该程序的运行结果是_a=10, b=20_。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成都市 2024-2025 学年小学五年级科学期中模拟试卷(含答案与解析)
- 高中语文必修上册同步练习 含答案-第5单元 《乡土中国》
- 2025年海南省公务员笔试冲刺押题卷
- 2025年通信技术基础试题及答案
- 2025年预防环境传播试题及答案
- 2025年初中三年级化学上学期反应方程式卷
- 2025年河南省公务员申论真题预测卷
- 个人简历模版(三页)带封面(可编辑)自我评价
- 2025借款合同担保书范文
- 2025电子产品采购合同模板
- 2025年山东省兽药工程专业人员职称考试(基础知识和实务)历年参考题库含答案详解(5卷)
- 2025年武夷山评茶师考试题库及答案
- 房屋坍塌应急演练方案(3篇)
- 家庭保洁培训课件
- 大学生职业规划大赛《视觉传达设计专业》生涯发展展示
- DB42T 850-2012 湖北省公路工程复杂桥梁质量鉴定规范
- 幼儿园培训:甲型流感(甲流)防控知识
- 2025至2030年中国烟标印刷行业市场发展调研及投资前景展望报告
- 25春国家开放大学《特殊教育概论》形考任务1-8+期末大作业参考答案
- 2025年考研30个199管理类联考综合写作素材
- c2考驾照科目一试题及答案
评论
0/150
提交评论