版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2006级数学系本科班C语言程序设计期末考试试题答案及解析一、单项选择题,答案不写入答题栏的一律不得分!(每题1.5分,共52.5分) 1、结构化程序设计的3种结构是 。A)顺序结构、选择结构、转移结构B)分支结构、等价结构、循环结构C)多分支结构、赋值结构、等价结构D)顺序结构、选择结构、循环结构 2、以下叙述中正确的是 。A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D)C语言出现的最晚,具有其他语言的一切优点 3、C语言中最简单的数据类型包括 。A)整型、实型、逻辑型B)整型
2、、实型、字符型C)整型、字符型、逻辑型D)字符型、实型、逻辑型 4、若变量已正确定义并赋值,以下符合C语言语法的表达式是 。A)a:=b+1B)a=b=c+2C)int 18.5%3D)a=a+7=c+b 5、若变量a,i已正确定义,且i已正确赋值,合法的语句是 。A)a= =1B)+i;C)a=a+=5;D)a=int(i); 6、已知:int t=0;while(t=1).则以下叙述正确的是 。A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对 7、若变量已正确说明为float型,要通过语句scanf(%f
3、%f%f,&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是 。A)10<回车>22<回车>33<回车>B)10.0,22.0,33.0<回车>C)10.0<回车>22.0 33.0<回车>D)10 22<回车>33<回车>解析遇到%d%d%d或%f%f%f不能用逗号作几个数据间的分隔符。 8、有如下程序:main() int x=1,a=0,b=0;switch(x)case 0: b+;case 1: a+;case 2
4、: a+;b+;printf("a=%d,b=%dn",a,b);该程序的输出结果是A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2解析根据x=1,执行case 1,接着并未退出switch,而是执行case 2。即找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。 9、有以下程序main()int i=1,j=1,k=2;if(j+|k+)&&i+)printf("%d,%d,%dn",i,j,k);执行后输出结果是 。A)1,1,2B)2,2,1C)2,2,2D)2,2,3解析本题关键在于k保
5、持原值2不变,因为或运算只需要检验j+是否为真即可判断整个表达式j+|k+为真,相当于没有执行k+。 10、有如下程序main()float x=2.0,y;if(x<0.0)y=0.0;else if(x<10.0)y=1.0/x;else y=1.0;printf("%fn",y);该程序的输出结果是 。A)0.000000B)0.250000C)0.500000D)1.000000 11、有如下程序:main()int n=9;while(n>6)n-; printf("%d",n);该程序的输出结果是 。A)
6、987B)876C)8765D)9876解析第一遍循环n=9,执行n - -,输出n现值8,以此类推得到B答案。 12、在下列选项中,没有构成死循环的是 。A)int i=100;while(1)i=i%100+1;if(i>100)break; B)for(;);C)int k=10000;dok+;while(k>10000);D)int s=36;while(s)- -s; 解析A选项if表达式的条件是假,而while表达式是真,构成死循环;B选项相当于while(1),无终止的执行循环体;C选项第一次执行循
7、环后k=10001,自此后k>10000恒为真,无终止循环;D答案选项当s自减至0时,while表达式为假,跳出循环。 13、设int x=1,y=1;表达式(!x|y-)的值是 。A)0B)1C)2D)-1 14、有以下程序float fun(int x,int y)return(x+y);main()int a=2,b=5,c=8;printf("%3.0fn",fun(int)fun(a+c,b),a-c);程序运行后的输出结果是 。A)编译出错B)9C)21D)9.0解析(int)fun(a+c,b)为(int)fun(10,5),经调用后
8、值为15;接着计算fun(int)fun(a+c,b),a-c)为fun(15,-6),经调用后值为9。 15、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 。A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参 16、若有以下调用语句,则不正确的fun函数的首部是 。main() int a50,n;fun(n, &a9);A)void fun(int m, int x)B)void fun(int s, int h41)C)void fun(int p, int *
9、s)D)void fun(int n, int a)解析把数组a中9号元素的地址传递给fun的函数参数,本题的考点是用什么来做函数的形参。A选项用不定长度的数组x作形参;B选项用长度小于50的数组h作形参;C用指针变量*s作形参;显然D中形参变量a只是普通的整形变量,不能接收来自于实参9号元素的地址。 17、fseek函数的正确调用形式是 。A)fseek(文件指针,起始点,位移量)B)fseek(文件指针,位移量,起始点)C)fseek(位移量,起始点,文件指针)D)fseek(起始点,位移量,文件指针) 18、若fp是指向某文件的指针,且已读到文件末尾,则函数feof(
10、fp)的返回值是 。A)EOFB)-1C)1D)NULL 19、若有说明语句:char c='72' 则变量c 。A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定 20、若有说明 int a34;则a数组元素的非法引用是 。A)a02*1B)a13C)a4-20D)a04 21、设有以下说明语句struct stuint a;float b; stutype;则下面的叙述不正确的是 。A)struct是结构体类型的关键字B)struct stu是用户定义的结构体类型C)stutype是用户定义的结构体类型名D)a和b都是
11、结构体成员名 22、在C语言中,引用数组元素时,其数组下标的数据类型允许是 。A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式 23、若运行时给变量x输入12,则以下程序的运行结果是 。main()int x,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%dn",y); A)0B)22C)12D)10 24、以下说法正确的是 。A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义C)C语言程序总是从mai
12、n()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分 25、表达式0x130x17的值是 。A)0x04B)0x13C)0xE8D)0x17 26、有以下程序 #define F(X,Y)(X)*(Y)main()int a=3, b=4; printf("%dn", F(a+, b+); 程序运行后的输出结果是 。A)12B)15C)16D)20 27、下列程序执行后的输出结果是 。void func(int *a,int b) b0=*a+6; main()int a,b5;a=0; b0=3;func(&a,
13、b); printf("%dn",b0);A)6B)7C)8D)9解析func(&a,b)中两个参数分别把整形变量a的地址传递给指针变量*a、把数组b(即数组名作实参)首元素的地址传递给形参数组b。因此在func()函数中,b0=*a+6=0+6=6。 28、若有下面的程序段:char s="china"char *p; p=s;则下列叙述正确的是 。A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等D)*p与s0相等 29、有以下程序void sort(int a,int n
14、)int i,j,t;for(i=0;i<n-1;i+)for(j=i+1;j<n;j+)if(ai<aj)t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(&aa3,5);for(i=0;i<10;i+)printf("%d,",aai);printf("n");程序运行后的输出结果是 。A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,C)1,2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,
15、6,5,4,3,解析sort(&aa3,5)的作用是把数组aa的第3号元素及其后续4个元素(一共5个元素)由大到小排列,其他元素原样输出。 30、以下程序的运行结果是 。#include "stdio.h"main()struct dateint year,month,day;today;printf("%dn",sizeof(struct date);A)6B)8C)10D)12 31、若有语句int *point, a=4;和 point=&a;下面均代表地址的一组选项是 。A)a,point,*&aB)&
16、amp;*a,&a,*pointC)*&point,*point,&a D)&a,&*point,point 32、已定义以下函数 fun(char *p2, char *p1) while(*p2=*p1)!='0')p1+;p2+; 函数的功能是 。A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2 C)对p1和p2两个指针所指字符串进行比较 D)检查p1和p2两个指针所指字符串中是否有'0' 33、若执行下述程序时,若从键盘输入6和8时,结果为 。main()int
17、 a,b,s;scanf("%d%d",&a,&b);s=aif(a<b)s=b;s*=s;printf("%d",s);A)36B)64C)48D)以上都不对 34、下列关于C语言数据文件的叙述中正确的是 。A)文件由ASCII码字符序列组成,C语言只能读写文本文件 B)文件由二进制数据序列组成,C语言只能读写二进制文件 C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 35、有以下程序void ss(char *s,cha
18、r t)while(*s)if(*s= =t)*s=t - 'a'+ 'A's+;main()char str1100="abcddfefdbd",c='d'ss(str1,c); printf("%sn",str1);程序运行后的输出结果是 。A)ABCDDEFEDBDB)abcDDfefDbDC)abcAAfefAbAD)Abcddfefdbd解析把字符串中的小写字符d转换为大写字符D。字符指针*s是指向该串的首字符(即字符a),随着s+不断向后续字符移动。t - 'a'+ 'A
19、'是英文字符小写转大写的公式,这里不再赘述。 二、填空题,答案不写入答题栏的一律不得分!(每空2分,共30分)36、以下程序段的输出结果是 28 。main()int a=2,b3,c=4;a*=16+(b+)-(+c);printf("%d",a); 3738、若变量n中的值为24,则print()函数共输出 5 行,最后一行有 4 个数。void print (int n,int aa)int i;for (i=1; i<n+1; i+)printf ("%6d", aai);if(!(i%5) printf (&q
20、uot;n");printf ("n"); 39、调用C语标准库函数时要求用 include 命令。 40、stract函数的作用是连接两个字符数组中的字符串。 41、C语言程序的注释可以出现在程序中的任何地方,一个注释以 /* */ 作为开始和结束。 42、设二进制数A是00101101,若想通过异或运算AB使A的高4位取反,低4位不变,则二进制数B应是1111 0000。 43、若已知a=10,b=20,则表达式!a<b的值为 1 。 44、设i,j,k均为int型变量,则执行完下面的for语句
21、后,k的值为 10 。for(i=0, j=10; i<=j; i+, j-)k=i+j; 4546、下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。randomize()是初始化随机数生成器函数,rand()返回一个随机数函数。请填空。#include<stdlib.h>#include<stdio.h>void fun(int a,int n, int *max, int *d)
22、 int i;*max=a0;*d=0;for(i=0; i<n ;i+)if(*max< ai )*max=ai;*d=i;main() int i, x20, max, index, n=10;randomize();for(i=0;i<n;i+)xi=rand()%50; printf("%4d",xi);printf("n");fun(x,n,&max,&index);printf("Max=%5d,Index=%4dn", max, index); 47、以下程序的输出结果是 24
23、6 。void fun() static int a=0;a+=2; printf("%d",a);main() int cc;for(cc=1;cc<4;cc+)fun();printf("n");解析第一次调用fun(),输出a为2;第二次调用fun(),输出a为4(局部静态变量,不重新赋初值);则第三次调用输出为6。 48、以下程序的输出结果是 7 。#define MAX(x,y)(x)>(y)?(x):(y)main() int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(&quo
24、t;%dn",t); 49、下列y的值是 8 。int y; y=sizeof(2.25*4); 50、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。int mystrlen(char *str) int i;for(i=0; *(str+i)或者写成stri != 0;i+);return(i); 三、程序设计题。要求程序结构清晰,没有逻辑错误,书写工整,无需写出运行结果。请写在背面并标明题号(第51题7.5分、第52题10分,共17.5分,按关键步骤评分)51、输入一个33的整数矩阵,求其对角线元素之差。#incl
25、ude <stdio.h>void main()int a33,minus;int i,j;printf("enter data:n");for (i=0;i<3;i+)for (j=0;j<3;j+)scanf("%d",&aij);minus=a00;for (i=1;i<3;i+)minus=minus-aii;printf("minus=%6dn",minus);52、有10个学生,每个学生的数据包括学号(stu_num,6个字符,如s00101)、姓名(name,8个字符)、三门课程的成绩(score3,实型)及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村落改造施工组织方案
- 影院音效提升聚酯纤维方案
- 村庄道路亮化方案
- 村庄规划绿化勘测方案
- 村庄垃圾清运方案
- 村庄保护与治理方案
- 村内活动广场建设方案
- 村中巷道改造提升方案
- 材料成型 专业课程设计
- 材料安全库存管理方案
- GB/T 21435-2008相变加热炉
- FZ/T 01002-2010印染企业综合能耗计算办法及基本定额
- 河南省洛阳市《综合能力测试》事业单位国考真题
- 智慧消防整体解决方案消防大数据一体化管理平台解课件
- 《推窗风来》中考语文作文优秀6篇
- 国家自然科学基金申请经验汇总课件
- 青春期女孩自尊自爱课件
- 困境儿童(含孤儿事实无人抚养儿童监护缺失儿童)风险评估表
- 腹部血管疾病的超声诊断课件整理
- 《客源国概论》期末考试题
- 公司吸烟管理规定范文
评论
0/150
提交评论