2010春季学期C语言复习样卷
- 格式:doc
- 大小:114.00 KB
- 文档页数:11
天津工业大学2010~2011学年第 2 学期高级语言程序设计(C语言) 试卷(A卷答案)一、单项选择题:(每题 1 分,共40 分)一、单项选择题:(每题 1 分,共40 分)(说明:请将正确答案按照题干上【】内的序号涂写“标准答题卡”)1.以下各标识符中,能作为变量名使用的是【1】。
A) A#C B) my_x C) main D) ab*2.下列叙述中错误的是【2】。
A) 一个C语言程序必须有main()函数B) C语言规定函数内的每个语句以分号结束C) C语言程序书写格式规定,一行内只能写一个语句D) main()函数可以放在程序开头,也可以放在程序末尾3.设有变量定义语句char ch; 下列赋值表达式中,正确的是【3】。
A) ch='a' B) ch="a" C) ch='97' D) ch="97"4.执行下列程序段后,输出结果为【4】。
int x=023;printf("%d", x--);A)18 B) 19 C) 23 D) 245.表达式10!=9的值为【5】。
A) 1 B) 0 C) True D) False6.设有变量定义语句int x=5,y; 则表达式y=2.75+x/2的值是【6】。
A) 4 B) 5 C) 4.75 D) 5.257.下列选项中,所有变量均已正确说明且有初始值,则错误的C语句是【7】。
A) m++; B) m=a==b; C) a=b=c+2; D) a=b+c=2;8.设int i=0,j=2,k=3;则表达式(i+k)&k|j+i的值是【8】。
A) 0 B) 1 C) 2 D) 39.假设所有变量均为整型,执行表达式x=(y=4,z=16,k=32)后x的值是【9】。
A) 4 B)16 C) 32 D) 5210.有输入语句scanf("a=%d,b=%d,c=%d",&a,&b,&c);为了使a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式是【10】。
江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2010年春)二级C语言(试卷代号C02)(本试卷完成时间70分钟)一、改错题(16分)【程序功能】先将一个正整数转换为十进制数字字符串,再将千位分隔符插入到该字符串中,最后输出该字符串。
【测试数据及运行结果】输入:1234567输出:12345671,234,567【含有错误的源程序】#include <stdio.h>#include <string.h>void ltoa(char s[],long num){ long n=num,i=0;printf("%ld\n",num);while(n){ i++; n/=10; }s[i]= \0 ;while(num){ s[--i]=num%10+'0'; num/=10;}}void insert(char s[]){ char j,k,t;t=j=strlen(s);while(j>3){ j=j-3;for(k=t; k>j; k--)s[k]=s[k+1];s[j]= ',';t++;}}void main(){ static char s[20]; long num;scanf("%d",&num);ltoa(s,num);insert(s,num);puts(s);getch();}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。
二、编程题(24分)【程序功能】一个整数的“真因子”是指包括1但不包括整数自身的因子。
一、选择题(每小题1分,共10分)说明:请将你认为各小题最恰当的正确答案的编号填写在下表中(阅卷以下表为准)。
main(){ int n=9;while(n>6){ n--;printf("%d",n);}}该程序的输出结果是【】。
A.987 B.8765 C.876 D.98762.有如下程序:main(){ int x=1,a=0,b=0;switch(x){ case 0: b++;case 1: a++;case 2: a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是【】。
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=23.有如下程序: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("%f\n",y);}该程序的输出结果是【】。
A.0.000000 B.0.250000 C.0.500000 D.1.000000 4.有如下程序:int add(int a,int b){ return(a+b);}main(){ int x=3,y=6,z=9,r;r=add(add(x,y),z);printf("%d\n",r);}该程序的输出结果是【】。
A.15 B.16 C.17 D.185.有如下程序段:int *p,a=13,b=2;p=&a; a=*p+b;执行该程序段后,a的值是【】。
A.16 B.15 C.14 D.编译出错6.有如下程序:long fib(int n){ if(n<2) return(1);else return(fib(n-1)+fib(n-2));}main(){ printf("%ld\n",fib(3));}该程序的输出结果是【】。
一.单选题1.用C语言编写的代码程序(B)A)可立即执行 B)是一个源程序C)经过编译即可执行 D)经过编译解释才能执行2.以下能正确定义且赋初值的语句是(C)A)int n1=n2=10; B)float f=f+1.1;C)char c=32; D)double x=12.3E2.5;3. 以下叙述中正确的是(B)A)调用printf函数时,必须要有输出项B)使用putchar函数时,必须在之前包含头文件stdio.hC)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII 码4. 以下叙述中正确的是(A)A) 构成C程序的基本单位是函数B) 可以在一个函数中定义另一个函数C) main()函数必须放在其它函数之前D) 所有被调用的函数一定要在调用之前进行定义5. 已有定义:int x=3,y=4,z=5;,则表达式 !(x+y)+z-1 && y+z/2的值是(D)A) 6 B) 0 C) 2 D) 16. 有以下程序(B)main( ){ int x=0,y=5,z=3;while(z-->0&&++x<5) y=y-1;printf(“%d,%d,%d\n”,x,y,z);}程序执行后的输出结果是A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-57. 有以下程序(sizeof操作符的作用是计算数据类型或变量所占用的内存空间字节数) (C)main( ){char a[]="abcdefg",b[10]="abcdefg";printf(“%d %d\n”,sizeof(a) ,sizeof(b) );}执行后输出结果是A) 7 7 B) 8 8 C) 8 10 D) 10 108. 设有如下定义(B)struct ss{char name[10];int age;char sex;}std[3];下面各输入语句中错误的是A) scanf("%d",&std[1].age); B) scanf("%s",&);C) scanf("%c",&std[0].sex) D) scanf("%c",&std[2].sex));9.有以下程序(B)main(){int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;printf("%d\n", *p + *q);}程序运行后的输出结果是A)16 B)10 C)8 D)610. 以下叙述中正确的是(D)A) 全局变量的作用域一定比局部变量的作用域范围大B)未在定义语句中赋初值的auto变量和static变量的初值都是随机值C)函数的形参都属于全局变量D)静态(static)类别变量的生存期贯穿于整个程序的运行期间11.下列字符中,ASCⅡ码值最小的是(A)A)A B)a C)Z D)x12. 能正确表示a≥10或a≤0的关系表达式是(D)A)a>=10 or a<=0 B)a>=10│a<=0C)a>=10&&a<=0 D)a>=10||a<=013. 请选出可用作C语言用户标识符的一组标识符(B)A)void,define,WORD B)a3_b3,_123,IFC)FOR,——abc,Case D)2a,Do,Sizeof14. C语言中最简单的数字类型包括(B)A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型15. C语言提供的合法的数据类型关键字是(B)A)string B)short C)integer D)Char16. C语言中合法的字符常量是(B)A)'84' B)'x43' C)'ab' D)“”17. 若已定义x和y为float型,则表达式:x=1,y=x+3/2的值是(C)A)1 B)2 C)2.0 D)2.518.以下程序的输出结果是(D)A) 10 10 B) 12 12 C) 11 10 D) 11 13main(){int a=12,b=12;printf("%d,%d\n",--a,++b);}19. 以下程序运行后,输出结果是(C)A) cde B) 字符c的ascii码值C) 字符c的地址D)出错main(){char *s="abcde";s+=2;printf("%ld\n",s);}20. 以下程序输出结果是(B)A) 7 B) 6 C) 5 D) 4main(){int m=5;if(m++>5) printf("%d\n",m);esle printf("%d\n",m--);}二.判断题1.在C语言的if语句中,用作判断的表达式可以为任意表达式。
春考历年c语言考试题及答案1.以下叙述正确的是( ) 。
[单选题] *A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句(正确答案)D) C程序的每行中只能写一条语句2.一个C程序的执行是从( ) 。
[单选题] *A) 本程序的main函数开始,到main函数结束(正确答案)B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束3.以下叙述不正确的是( ) 。
[单选题] *A) 一个C源程序必须包含一个main函数B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面(正确答案)4.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是( ) 。
[单选题] *A) C语言程序仅可以编译执行(正确答案)B) C语言程序仅可以解释执行C) C语言程序既可以编译执行又可以解释执行D) 以上说法都不对5.一个C语言程序是由( ) 。
[单选题] *A)一个主程序和若干个子程序组成B) 函数组成(正确答案)C) 若干过程组成D) 若干子程序组成6.以下叙述中错误的是( ) 。
[单选题] *A) C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件(正确答案)7.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为( )。
x=(i=4,j=16,k=32) [单选题] *a) 4B) 16C) 32(正确答案)D 528.以下叙述正确的是( ) 。
程序基本知识答案:B main()函数是程序的入口和出口,和其它代码位置没关系。
答案:C C程序基本单位是函数。
答案:A答案:A答案:C基本数据类型和基本运算答案: B 浮点数两种表示方式,一种是普通小数方式,另一种是科学计数法。
科学计数法中间为e,前边为[1,10〕的实数表示尾数,后边为整数表示10的指数,正负均可。
答案:C 标识符开头只能是字母或下划线,不能是数字。
答案:D 单引号括起来的应该是单个字符答案:A 双引号括起来的是字符串答案:A答案:A 求余运算两边必须全为整数答案:D答案:D 这四种运算符中,非运算级别最高,算术运算比比较运算级别高,最低的是赋值运算答案:C D 项错误在于scanf从第2个参数开始应该是地址引用答案:D x先和自减1后的y相加,结果赋给y,再自加1答案:A 输入时必须包含逗号答案:C答案:A B项逻辑或两边都是假,C项做完逻辑与后才可以自加,D项括号内是赋值运算而非比较运算答案:B x+z后结果已经变成浮点数了答案:D y=0+1=1答案:D 3.5/2+11%2/2=1.75+1/2=1.75+0=1.75答案:B 数轴上一段连续区间必须用两个逻辑表达式相与得到。
答案:B 逻辑与两边明显矛盾答案:B 0.5+0=0.5第六次stop here答案:B 4.0/2+2%3=2.0+2=4.0答案:C答案:D a|b=3 ,10 右移3位为1答案:D答案:D 2+=2+4%2=4答案:D 非0值经过非运算后变成假,两个假或还是假答案:A x^y=2,2 左移两位为8答案:C答案:A 1/3结果为0,整个式子结果为0答案:A分支结构答案:A 其它三项都是如果k是0,则打印No,否则打印Yes。
答案:A 这是两步操作,n=2已经不是if结构里的了。
答案:A 条件判断为逻辑非,直接执行打印语句。
答案:C 余数为3,只能执行default后续printf(),后边没有break(),再执行case 1后边的printf().第七次stop here循环结构答案:A答案:B 两个i - -相当于i-=2答案:B 括号里的条件先比较,再将i减1答案:C 其它的i没有变化答案:A i=1 j=2 0+1+2=3j=3 3+1+3=7 依次类推,最终m为45 函数答案:A答案:D答案:B答案:C 传入实参为5和4,函数中两者比较,得到z为5,返回5+5=10并打印。
语言规定,在一个源程序中main函数的位置 ______ 。
(2010年春选择题第21题)A.必须在最开始B.必须在最后C.必须在预处理命令的后面D.可以在其他函数之前或之后【解析】main函数也叫主函数,是C语言编译系统提供的特殊函数,可以放在程序中的任何位置,但不能定义在其他函数体内。
C程序总是从main函数的第一条语句开始执行。
【答案】D2.以下叙述中正确的是________ 。
(2009年秋选择题第21题)语言系统以函数为单位编译源程序函数必须放在程序开始C.用户定义的函数可以被一个或多个函数调用任意多次D.在一个函数体内可以定义另外一个函数【解析】C语言系统以程序为单位编译源程序,程序由函数组成。
main函数可以放在其他函数之前或之后。
除了main函数外,函数可以被其他函数多次调用。
函数不能定义在其他函数体内,即不能嵌套定义。
【答案】C3.以下叙述中正确的是_________ 。
(2008年秋选择题第21题)A.在编译时可以发现注释中的拼写错误语言程序的每一行只能写一条语句(){}必须位于程序的开始语言程序可以由一个或多个函数组成【解析】C程序的注释不产生编译代码,编译时跳过去,发现不了其中错误。
C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。
main 函数可以放在程序中的任何位置。
C程序可以由一个或多个函数组成,函数可以为空函数,包括main函数。
【答案】D4.以下关于C语言源程序的叙述中错误的是________。
(2007年春选择题第21题)A.一个C源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义B.函数定义由函数头部和函数体两部分组成C.在一个函数定义的函数体中允许定义另一个函数D.在一个函数定义的函数体中允许调用另一个函数或调用函数自身【解析】一个C语言源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义,函数定义由函数头部和函数体两部分组成。
2010年石家庄经济学院C语言程序设计试卷共7页注意:所有答案写在答题纸上,答在本卷上无效。
一、选择题(共30分,每题2分)1、表达式202%4的值是()A)2 B)50 C)50.25 D)512、若a和n均是int型变量,设原来a的值为10,n的值为5,则执行表达式a+=++n后,变量a和n的值各为()A) a的值为15,n的值为6 B) a的值为16,n的值为6C) a的值为15,n的值为5 D) a的值为16,n的值为53、表达式7<12&&5!=9的值为()A) 1 B) 0C)假D)真4、对字符数组s赋值,不合法的一个是()。
A) char s[]="Beijing";B) char s[20]={"beijing"};C) char s[20];s="Beijing";D)char s[20]={'B','e','i','j','i','n','g'};A)A B)D C)C D)B5、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。
A) void B) int C) float D) double6、指出下面程序的输出结果。
( )#include <stdio.h>void main( ){int a[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};int i,j,n;n=9;i=n/5;j=n-i*5-1;printf("a[%d][%d]=%d\n", i,j,a[i][j]);}A) a[2][2]=6 B)a[1][3]=-3 C) a[2][3]=2 D) 不确定7、英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为( )A) 50 B) 66 C) 52 D) 688、已定义以下函数:fun(int *p){……………return *p;}该函数的返回值是 ( )。
考试题一选择题1、语句printf(“%%d%d”, 123); 将输出:A) %123%d B) %%d123 C) %d123 D)上述语句语法有错2、执行下列程序段后, a值为:int a, b;a=15; b=12;a=(a-- ==b++)? a%5 : a/5;A) 0 B) 2.8 C ) 4 D) 23、判断字符变量c的值为数字(’0’---’9’)则返回1,否则返回0, 可用表达式:A) ‘0’<=c<=‘9’ B) ‘0’<=c && c<=‘9’C) ‘0’<=c || c<= ‘9’ D)以上均不是4、对于int x, y; 语句if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于:A) y=0; if (x>=0) if (x) y=1; else y= -1;B) if (x!=0) if (x>0) y=1; else y= -1; else y=0;C) if (x<0) y= -1; if (x!=0) y=1; else y=0;D) y= -1; if (x!=0) if (x>0) y=1; else y=0;5、循环for(i=0, j=5; ++i!=--j; ) printf(“%d %d”, i, j); 将执行A) 6次B) 3次C) 0次D) 无限次6、下列程序段执行后s值为:int i=5, s=0;do if (i%2) continue; else s+=i; while (--i);A) 15 B) 9 C) 6 D) 以上均不是7、对于int a,要使((1<<2>>1)|a)==a; 则a 可以是:A) 2 B) 6 C) 10 D) 2,6,10均可8、对于以下宏定义:#define SQ(x) x*x#define DD(x,y) SQ(x)-SQ(y)宏调用DD(2*3, 2+3)执行后值为:A) 43B) 11 C) 25 D) 以上均不是9、对于以下结构定义:struct { int len;char *str;} *p;*p->str++中的++加在A) 指针str上B) 指针p上C) str所指的内容上D) 以上均不是10、将s所指节点加到p所指节点之后(如下图), 其语句应为:........A) s->next = p+1; p->next = s;B) p->next = s; s->next = p->next;C) s->next=p->next; p->next=s->next;D) s->next = p->next; p->next = s;11、语句if (a>b) k=0; else k=1; (int a, b, k) 等价于:A) k=(a>b)?1:0; B) k=a>b; C) k=a<=b;D) 以上均不是12、对于int i; char c, s[20];从输入序列123ab45efg中将123读入i; ’ b’读入c; “45efg”读入s, 则scanf语句应写为:A) scanf(“%da%c%s”, i, c, s) B) scanf(“%d%*c%c%s”,&i, &c, s);C) scanf(“%da%c%s”, &i,&c,&s) D) scanf(“%d%c%c%s”, &i, &c, s);13、若有以下说明和语句, 已知int和double类型分别占2和8个字节,则sizeof(st)的值为:struct st {char a[10];union {int i;double y;}};A) 18 B) 20 C) 12 D) 以上均不是14、对于以下程序段, 运行后i值为:enum WEEKS {1,2,3,4,5,6,7} ;enum WEEKS a=1;int i=0;switch (a) {case 1: i=1;case 2: i=2;default: i=3;}A) 1 B) 0 C) 3 D) 上述程序有语法错误15、对于以下递归函数f, 调用f(4),其返回值为:int f(int n){ return f(n-1)+n; }A) 10 B) 11 C) 0 D) 以上均不是16、某一程序TEST.C,编译后运行:TEST 123 456 ABC 则相应的argc及argv[3]分别为:A) 3 “456” B) 3 “ABC” C) 4 “456” D) 4 “ ABC”17、如下程序段:int c[]={1, 7, 12};int *k;k=c;printf("next k is %d",*++k);其输出应为:A) 2 B) 7 C) 1 D)以上均不对18、如果变量xx有如下类型:struct {char a1; 1int a2; 2} xx;如果sizeof(xx)的值为3, 则:union {char a1;int a2;int a3;} yy;则sizeof(yy)函数的返回值应为:A) 2 B) 4 C) 5 D)定义有错19、对于enum { RAIN, CLOUD, CLEAR } weather;做如下操作:⑴weather=1;⑵weather=CLOUD; 下列哪个说法是对的。
2010年C语言程序设计考试复习题(含答案)大体上必须清楚的:-1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if 和switch)-2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
-3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.-4)bit是位是指为0或者1。
byte是指字节,一个字节 =八个位.-5)一定要记住二进制如何划成十进制。
-概念常考到的:-1、编译预处理不是C语言的一部分,不再运行时间。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
- 2、每个C语言程序中main函数是有且只有一个。
-3、在函数中不可以再定义函数。
-4、算法的是一定要有输出的,他可以没有输入。
-5、break可用于循环结构和switch语句。
-6、逗号运算符的级别最低第一章-1)合法的用户标识符考查:-合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
- 并且第一个必须为字母或则是下划线。
第一个为数字就错了。
- 关键字不可以作为用户标识符号。
main define scanf printf都不是关键字。
迷惑你的地方If 是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
-2)实型数据的合法形式:-2.333e-1就是合法的,且数据是2.333×10-1。
-考试口诀:e前e后必有数,e后必为整数。
.-3)字符数据的合法形式::-'1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
-'0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII 数值是65。
-4)整型一般是两个字节,字符型是一个字节,双精度一般是4个字节:-考试时候一般会说,在16位编译系统,或者是32位系统。
一、判断共10题(共计10分)第1题(1.0分)题号:1488函数即可以嵌套定义,又可以嵌套调用.答案:N第2题(1.0分)题号:1256unsigned 和void 在C中都是保留字.答案:Y第3题(1.0分)题号:1280表达式++i表示对变量i自加1.答案:Y第4题(1.0分)题号:1282C语言源程序的基本结构单位是main函数.答案:N第5题(1.0分)题号:1276字符常量的长度肯定为1.答案:Y第6题(1.0分)题号:1469char a[]={'a','b','c'};char b[]={"abc"};数组a和数组b占用的内存空间大小不一样.答案:Y第7题(1.0分)题号:1249若有int i=10,j=2; 则执行完i*=j+8;后i的值为28.答案:N第8题(1.0分)题号:33int i,*p=&i;是正确的C说明。
答案:Y第9题(1.0分)题号:1250While循环语句的循环体至少执行一次.答案:N第10题(1.0分)题号:1510有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0.答案:Y二、单项选择共30题(共计30分)第1题(1.0分)题号:456执行下面程序后,输出结果是()。
main(){ a=45,b=27,c=0;c=max(a,b);printf("%d\n",c);}int max(x,y)int x,y;{ int z;if(x>y) z=x;else z=y;return(z);}A:45B:27C:18 D:72答案:A第2题(1.0分)题号:437下列数组说明中,正确的是()。
A:int array[][4];B:int array[][];C:int array[][][5];D:int array[3][];答案:A第3题(1.0分)题号:2396下面有关for循环的正确描述是()A:for循环只能用于循环次数已经确定的情况B:for循环是先执行循环体语句,后判断表达式C:在for循环中,不能用break语句跳出循环体D:for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来答案:D第4题(1.0分)题号:2817以下程序的输出结果是().main(){int i,j,k,a=3,b=2;i=(--a==b++)?--a:++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}A:i=2,j=1,k=3B:i=1,j=1,k=2C:i=4,j=2,k=4D:i=1,j=1,k=3答案:D第5题(1.0分)题号:2866若有下列定义,则对a数组元素地址的正确引用是().int a[5],*p=a;A:*(p+5)B:*p+2C:*(a+2)D:*&a[5]答案:C第6题(1.0分)题号:711下列选项中正确的语句组是()。
【关键字】精品2010年3月二级c语言笔试真题及答案试题:一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分。
共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡上,答在试卷上不得分。
(1) 下列叙述中正确的是AA)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D) 对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n log2n)(2) 算法的时间复杂度是指DA)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(3) 软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于系统软件的是BA)编辑软件B)操作系统C)教务管理系统D)浏览器(4) 软件(程序)调试的任务是AA)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5) 数据流程图(DFD图)是CA)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向东西方法的需求分析工具(6) 软件生命周期可分为定义阶段,开发阶段和维护阶段。
详细设计属于BA)定义阶段B)开发阶段C)维护阶段D)上述三个阶段(7) 数据库管理系统中负责数据模式定义的语言是AA)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8) 在学生管理的关系数据库中,存取一个学生信息的数据单位是DA)文件B)数据库C)字段D)记录(9) 数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的BA)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段(10) 有两个关系R和T如下:R TA B Ca 1 2b 2 2c 3 2A B Cc 3 2d 3 2则由关系R得到关系T的操作是A选择B)投影C)交D)并(11) 以下叙述正确的是BA)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可以作为单独文件形式存在(12) 以下关于C语言的叙述中正确的是BA)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以再使用之前的任何位置进行定义C)在C语言算术的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示(13) 以下C语言用户标示符中,不合法的是DA)_1 B)AaBc C)a_b D)a--b(14) 若有定义:double a=22;int i=0,k=18;则不符合C语言规定的赋值语句是CA)a=a++,i++ B)i=(a+k)<=(i+k) C)i=a%11 D)i=!a(15)#include <stdio.h>Void main(){char a,b,c,d;scanf(”%c%c”,&a,&b);c=getchar(); d=getchar();printf(”%c%c%c%c\n”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,<CR>代表回车,注意:回车是一个字符)12<CR>34<CR>则输出结果是:CA、1234B、12C、12D、123 3416、以下关于C语言数据类型使用的叙述中错误的是:DA、若要准确无误的表示自然数,应使用整数类型。
2010~2011学年度第一学期10级《C语言》期末考试试卷(B卷与参考答案)班级1011计网学号姓名总分(适用班级:1011计网)(考试形式:闭卷时间:90分钟)一、选择题(每题2分,共60分)1、C语言程序的基本单位是( C )A) 程序行B) 语句C) 函数D) 字符2、C语言程序的三种基本结构是( A )A、顺序结构,选择结构,循环结构B、递归结构,循环结构,转移结构C、嵌套结构,递归结构,顺序结构D、循环结构,转移结构,顺序结构3、C语言可执行程序的开始执行点是( C)A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数4、C语言中,运算对象必须是整型数的运算符是( A )A) % B) \ C) %和\ D) * *5、C语言中数组下标的下限是( B )。
A、1B、0C、视具体情况D、无固定下限6、C语言中最简单的数据类型包括( B )A) 整型、实型、逻辑型B) 整型、实型、字符型C) 整型、字符型、逻辑型D) 整型、实型、逻辑型、字符型7、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( B )A) input x,y,z; B) scanf("%d%d%d",&x,&y,&z);C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z);8、表达式:10!=9的值是( D )A) true B) 非零值C) 0 D) 19、表示关系x<=y<=z的c语言表达式为( A)A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z)C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z)10、下列运算符其优先级最高的是( C)。
一、选择题(每小题1分,共10分)说明:请将你认为各小题最恰当的正确答案的编号填写在下表中(阅卷以下表为准)。
main(){ int n=9;while(n>6){ n--;printf("%d",n);}}该程序的输出结果是【】。
A.987 B.8765 C.876 D.98762.有如下程序:main(){ int x=1,a=0,b=0;switch(x){ case 0: b++;case 1: a++;case 2: a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是【】。
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=23.有如下程序: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("%f\n",y);}该程序的输出结果是【】。
A.0.000000 B.0.250000 C.0.500000 D.1.000000 4.有如下程序:int add(int a,int b){ return(a+b);}main(){ int x=3,y=6,z=9,r;r=add(add(x,y),z);printf("%d\n",r);}该程序的输出结果是【】。
A.15 B.16 C.17 D.185.有如下程序段:int *p,a=13,b=2;p=&a; a=*p+b;执行该程序段后,a的值是【】。
A.16 B.15 C.14 D.编译出错6.有如下程序:long fib(int n){ if(n<2) return(1);else return(fib(n-1)+fib(n-2));}main(){ printf("%ld\n",fib(3));}该程序的输出结果是【】。
A.2 B.3 C.4 D.67.有如下程序:#define N 2#define M N+1#define NUM 2*M+1main(){int i;for(i=1;i<=NUM;i++) printf("%d\n",i);}该程序中的for循环执行的次数是【】。
A.5 B.6 C.7 D.88.有如下程序段:int a=14,b=15,x;char c='A';x=(a&&b)&&(c<'B');执行该程序段后,x的值为【】。
A.true B.false C.0 D.19.若有如下定义:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是【】。
A.*p+9 B.*p+=9 C.*(p+8) D.p+810.有如下程序:main(){ int n[5]={3,3,3},i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;printf("%d\n",n[k]);}该程序的输出结果是【】。
A.3 B.5 C.4 D.不确定的值二、阅读程序,写出运行结果(每小题3分,共18分)Array说明:请将答案填写在下表中(阅卷以下表为准)。
1.以下程序的输出结果是【】。
#include <stdio.h>main(){int i,j,k;i=12;j=20;k=i+j;printf("k=i+j=%d\n",k);}2.以下程序的输出结果是【】。
#include <stdio.h>main( ){ float x,y=9.5;x=-12.34;if (x>0) y=1;if (x=0) y=0;if (x<0) y=-1;printf("x=%f\ny=%f",x,y);}3.以下程序的输出结果是【】。
#include <stdio.h>int fun(int x){ int p;if(x==0||x==1)return(3);p=x*fun(x-2);return p;}main(){printf("%d\n",fun(7));}4.以下程序的输出结果是【】。
#include <stdio.h>main(){char *p[]={"POOL","opk","he","SP"};int i;for(i=3;i>=0;i--)printf("%c",*p[i]);printf("\n");}5.以下程序的输出结果是【】。
#include <stdio.h>int y=5;void sub(int x){ int y = 1;y+=x++;printf("sub: y=%d\n",y);}main(){int x = 3;sub(x);y+=x++;printf("main: y=%d\n",y);}6.以下程序的输出结果是【】。
#include <stdio.h>main(){ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++) s+=a[i][j];printf("%d\n",s);}三、填空题 (每空2分,共22分)1.以下函数返回a所指数组中最小值所在的下标值,请填空。
int fun(int *a,int n){int i,p;for(i=1;i<n;i++)if(a[i]<a[p]) ;return(p);}2.以下函数把b字符串连到a字符串的后面,并返回a中新字符串的长度,请填空。
int strcen(char a[],char b[]){ int num=0,n=0;while(*(a+num)!= )num++;while(b[n]){*(a+num)=b[n];num++;;}return num;}3.在磁盘的当前目录下有名为“lut2009.txt”的文本文件,下面的程序是从文件中读出其中的字符,并统计文件中字符的个数,同时还要求统计出字母“m”或“M”出现的次数,请填空。
#include <stdio.h>main(){ char ch; int num=0,cm=0 ;;if( (fp=fopen( )) == NULL)exit(1);elsewhile((ch=fgetc(fp)) != EOF ){num++;if( )cm++;}printf("num=%d\t cm=%d\n",num,cm);}4. 下面程序的功能是求1!+2!+3!+4!+5!,请填空。
main( ){ int i,j,f,sum=0;for(i=1;i<=5;i++){ f=1;for(j=1; ;j++); sum=sum+f; }printf("sum=%d",sum); }5. 下面程序的功能是计算一个3×3矩阵的主对角线的元素之和,请填空。
main(){ int i, ;int a[3][3]={{-1,2,3},{6,7,-8}, {9,11,20}}; for(i=0; i<=2; i++) sum= ; printf("%d\n",sum); } 四、编程题(每小题10分,共50分)1.请编写一个完成输入长方形的长和宽,计算并输出该长方形面积的程序。
2.请编写一个实现符号函数的程序。
1 x>0符号函数即:y=f(x)= 0 x=0-1 x<03.请编写一个输出如下图案的程序。
要求:必须用循环结构实现。
4.请编写子函数 sub_fun(int x),返回1-2+3-4+…+99-100的值。
* * * * * * ** * * * * * * **5.请编写一个实现对数组a的10个数{20,50,30,10,60,80,100,70,70,40}按从小到大排序的程序。
参考答案和评分标准一、选择题(每小题1分,共30分)二、阅读程序,写出运行结果(每小题3分,共27分)三、填空题 (每空2分,共30分)1.p=0;p=i2.'\0'或0n++或++n或n=n+1或n+=13.FILE *fp"lut2009.txt", "r"ch = = 'm' || ch = = 'M'4. j<=if=f*j5. sum=0sum+a[i][i]四、编程题(每小题10分,共50分)评分标准:结构完整2分(主函数或子函数);变量声明恰当、控制符对应正确2分;输入(或初始化)2分;加工处理(顺序、选择或循环)2分;输出(结果)2分参考程序:1.#include <stdio.h>main()float x,y,z;printf("input x,y:\n");scanf("%f,%f",&x,&y);z=x*y;printf("z=%10.2f\n",z);getch();}2.#include <stdio.h>main(){float x,y;printf("input x:\n");scanf("%f",&x);if(x>0)y=1;if(x==0)y=0;if(x<0)y=-1;printf("x=%10.2f\t,y=%10.2f\n",x,y); getch();}3.#include <stdio.h>main(){int i,j;for(i=4;i>=1;i--){for(j=1;j<=4-i;j++)printf(" ");for(j=1;j<=2*i-1;j++)printf("*");printf("\n");}getch();}4.#include <stdio.h>int sub_fun(int x){int i,k=1,s=0;for(i=1;i<=x;i++){s=s+k*i;k=-k;}return s;}以下主函数可以不写:main(){printf("%d\n",sub_fun(100));getch();}5.#include <stdio.h>#define N 10main(){int i,j,k,t,a[N]={20,50,30,10,60,80,100,70,70,40}; for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(a[j]<a[k])k=j;}t=a[i];a[i]=a[k];a[k]=t;}for(i=0;i<N;i++)printf("%4d",a[i]);printf("\n");getch();}。