上海电机学院 2010–2011学年第1学期
(03303043) 《高级语言程序设计》(上)期末考试试卷
A卷 开课学院: 电子信息学院 出卷教师: 吉顺如
考试形式:闭卷 考试时间 90 分钟 上机考
考生姓名: 赵君阳 学号: 19 班级: BQ0902
题序 | 一 | 二 | 三 | 四 | 五 | 总 分 |
得分 | ||||||
评卷人 | ||||||
一、选择题(共20分,每小题1分)
1.在一个C语言程序中下列说明正确的是 ( B )
A)main()函数必须出现在所有函数之前 B)main()函数可以在任何地方出现
C)main()函数必须出现在所有函数之后 D)main()函数必须出现在固定位置
2.二进制语言是属于(A )
A)面向机器语言 B)面向问题语言 C)面向过程语言 D)面向汇编语言
3. 下列符号串中,属于C语言合法标识符的是( A )
A) float B)sum one C)2max D)max2
4.以下选项中合法的C语言字符常量是( C )
A) ‘\092 ' B) "x" C) ‘\xAB’ D) ‘xy’
5.若有以下程序段,则变量c的二进制值是( A )
int a=6,b=3,c;
c=a^b<<2;
A)00011011 B) 00001010 C)00011000 D)00000110
6.要输入实数,用格式字符( C )。
A)%d B)%c C)%f D)%s
7.putchar( )函数可以向终端输出一个( D )
A)整型变量表达式 B)实型变量值 C)字符串 D)字符或字符型变量
8. 若x是int类型变量,y是float类型变量,则为了将数据55和55.5分别赋给x和y,则执行语句: scanf(“x=%d, y=%f”,&x,&y,); 时,正确的键盘输入是 ( A ) 。
A) 55 55.5↙ B)x=55, y=55.5↙ C)55↙55.5↙ D)x=55↙y=55.5↙
9.设x,y和z是int型变量,且x=1,y=2,z=3,则下面表达式中值为0的是( D )
A) x&&y B) x<=y C) x||y+z&&y-z D) !((x<y)&&!z||1)
10.为了避免嵌套的if-else语句的二义性,c语言规定else总是与( C )组成配对关系。
A)缩排位置相同的if B)在其之前末配对的if
C)在其之前未配对的最近的if D)同一行上的if
11.以下叙述中正确的是( C )
A)用C程序实现的算法必须要有输入和输出操作
B)用C程序实现的算法可以没有输出但必须要有输入
C)用C程序实现的算法可以没有输入但必须要有输出
D)用C程序实现的算法可以既没有输入也没有输出
12. 要把高级语言编写的源程序转换为目标程序,需要使用 ( D )
A)编辑程序 B)驱动程序 C)诊断程序 D)编译程序
13.程序段:int num=0; while(num<=2) printf(“%d ,”,num++);的循环执行的次数( C)
A)1次 B) 2次 C) 3次 D)4次
14. C语言中while和do-while循环的主要区别是( A )
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
15. 以下不正确的描述是( B )
A)break语句不能用于循环语句和switch语句外的任何其它语句
B)在switch语句中使用break语句或continue语句的作用相同
C)在循环语句中使用continue语句结束本次循环,但不会终止整个循环
D)在循环语句中使用break语句是会跳出循环体,提前结束循环
16. 执行下列语句序列后,不可能出现的运行结果是( D )
int n;
scanf( “%d”, &n);
switch ( n )
{
case 1:
case 2: putchar('X');
case 3:
case 4: putchar('Y'); break;
default: putchar('Z');
}
A) 显示:X B)显示:Y C) 显示:Z D)显示:XY
16.若有以下的数组定义:char a[ ]="abcd"; char b[ ]={'a','b','c','d','e'};
则正确的描述是 ( B )
A) aswitch语句必须使用break吗数组和b数组长度相同 B) a数组长度大于b数组长度
C) a数组长度小于b数组长度 D) 两个数组中存放相同的内容
17.若有定义:char str1[30],str2[30];则输出较大字符串的正确语句是:( C )
A) if(strcmp(strl,str2)) printf("%s",strl);
B) if(strl>str2) printf("%s",strl);
C) if(strcmp(strl,str2)>0) printf("%s",strl);
D) if( strcmp(strl)>strcmp(str2)) printf("%s",strl);
18.假设有定义int i,t[][3]={1,2,3,4,5,6,7,8,9}; 执行语句for (i=0;i<3;i++) printf("%d",t[2-i][i]);后的输出结果是( C )
A ) 357 B ) 753 C) 369 D) 951
19.若变量已正确定义, 且x的值是1, y的值是2, z的值是4,计算表达式 (x=y= =z ) 后各变量的值为( C )
A)x=0,y=2,z=4 B) x=1,y=4,z=4 C)x=4,y=4,z=4 D)D. x=1,y=2,z=4
20.设有数组定义:char array[]=”China”; 则数组所占的空间是 ( B )
A)4个字节 B)5个字节 C)6个字节 D)7个字节
二、填空题(共20分,每空格1分)
1.C程序是由函数构成的。其中有并且只能有 1 个主函数。一个函数由两部分组成:函数的首部和 函数体 。
2.若x和n均是int型变量,且x的初值为26,n的初值为7,则计算表达式x%=(n%=4)后,变量x的值为 2
3.表达式 2.5 + 10/4= 4.5 。若定义int a=4,b;则表达式(b=6*5,a*4),a+16的值是__30,16,32____
4.十进制数89,转换为二进制数为 1011001 ,转换为十六进制数为 59
5.假设有定义a=b=c=d=m=n=4。则执行表达式 (m=a>b)&&(n=c>d)后,n的值为
6.当a=3,b=2,c=1时,表达式x=a>b>=c的值是 3
7.若有定义int a=15,b=7,c;则执行c=(a%b<1)||(a/b>1);后c的值为 4
8.能判断x是数字字符的C语言表达式是 char c[]
9.若有定义int w=5,x=2,y=6,z=4;则条件表达式w<x?w: (y<z?y:z)的值是 4
10.将数学式转换成C语言表达式 cos(sqrt(x*x))/(a+b) 。
11.若有定义:double a[3][5];则a数组中列下标的上限为 3
12.有如下语句:char a[ ]={”How are you!”}; sizeof(a)= ,strlen(a))= 12
13.二维数组A[4][5]={{2,2,4},{4,6,5,6},{0}};中元素A[1][1]的值是
14.若有定义:char p[20]={'a','b','c','d'},r[]="xyz";则执行语句strcat(p,r);printf("%s\n",p);后的输出结果是
15. 在C语言中,标识符只能由字母、数字和下划线字符组成,并且第一个字符不能是___数字_____ 字符。
16. 定义 int b=7; float a=5.2, c=6.9; 则表达式 b*(int)(a+c)/2 的值为__42_______
三、程序改错题(共18分,每小题6分)
1、下列程序从键盘输入一个数n,求1~n之和并输出。请纠正程序中存在错误,使程序实现其功能。
如输入 5↙
输出:The sum from 1 to 5 is 15
#include <stdio.h>
main()
{
int i=1,n;
float sum;
scanf(“%d”, n);
for(i<n;i++);
sum+=i;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论