201501批次程序设计基础复习大纲(答案)
对外经济贸易大学远程教育学院
2014-2015学年第一学期
《程序设计基础》复习大纲
一、单选题
1. 下面描述中不正确的是()
A. 软件不仅仅是程序
B. 程序是指令的集会,计算机语言是编写程序的工具
C. 计算机语言都是形式化语言,它有严格的语法规则和定义
D. 计算机语言只能编写程序而不能表示算法
2. C语言程序的基本单位是()
A. 语句
B. 函数
C. 程序行
D. 字符
3. C语言中字符(char)数据在内存中存储的是()
A. 原码
B. 补码
C. 反码
D. ASCⅡ码
4. 以下错误的转义字符是()
A. ’\\’
B. ’\’’
C. ’\81’
D. ’\0’
5. 已知:char a;int b;float c;double d;执行语句c=a+b+c+d;后,变量c的数据类型是()
A. int
B. char
C. float
D. double
6. 已知:int x=1,y=2,z; 则执行:z=x>y? ++x:++y; 则z的值为()
A. 1
B. 2
C. 3
D. 4
7. 执行下面语句后x的值为 int a=14,b=15,x; char c=’A’; x=((a&&b) && (c<’a’)); ()
A. TRUE
B. FALSE
C. 0
D. 1
8. 下列四个选项中,均是C语言关键字的选项是()
A. auto enum include
B. switch typedef continue
C. signed union scanf
D. if struct type
9. C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符
()
A. 必须为字母
B. 必须为下划线
C. 必须为字母或下划线
D. 可以使字母,数字和下划线中任一字符
10. 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()
A. 2.
B. 2.
C. 3.
D. 0.
11. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()
A. int
B. float
C. double
D. 不确定
12. 表达式(a=3*5,a*5),a+5的值是多少()
A. 20
B. 80
C. 不能确定
D. 15
13. 语句:printf("%d \n",12&&12);的输出结果是()
A. 12
B. 1
C. 24
D. 0
14. 若已定义x和y为double型,则表达式:x=1,y=x+3/2的值是()
A. 1
B. 2
C. 2.0
D. 2.5
15. 若x和y都是int型变量,x=100,y=200,且有下面的程序片段:
printf("%d",(x,y)); 上面程序片段的输出结果是()
A. 200
B. 100
C. 200 100
D. 输出格式符不够,输出不确定的值
16. 表达式:10!=9的值是()
A. true
B. 非零值
C. 0
D. 1
17. 若int a,b,c;则为它们输入数据的正确输入语句是()
A. read (a,b,c);
B. scanf (“%d%d%d”,a,b,c);
C. scanf (“%D%D%D”,&a,&b,&c);
D. scanf
(“%d%d%d’,&a,&b,&c);
18. 若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是()
A. (exp==0)
B. (exp!=0)
C. (exp==1)
D. .(exp!=1)
19. 能正确表示逻辑关系:"a ≥ 10或a ≤ 0"的C语言表达式是()
A. a > =10 or a < =0
B. a > =0
a < =10
C. a > =10 &&a < =0
D. a < =0
a>=10
20. 在下列结论中,只有一个是错误的,它是()
A. C语言允许函数的递归调用
B. C语言中的continue语句,可以通过改变程序的结构而省略
C. 有些递归程序是不能用非递归算法实现的
D. C语言中不允许在函数中再定义函数
21. 已知:int *p,a;则语句“p=&a;”中的运算符“&“的含义是()
A. 位与运算
B. 逻辑与运算
C. 取指针内容
D. 取变量地址
22. 以下能对二维数组a进行正确初始化的语句是()
A. int a[2][]={{1,0,1}{5,2,3}};
B. int a[][3]={{1,2,3},{4,5,6}};
C. int a[2][4]={{1,2,3},{4,5},{6}};
D. int a[][3]={{1,0,1},{},{1,1}};
23. 执行语句for (i=1;i++<4;);后,i的值是()
A. 3
B. 4
C. 5
D. 不定
24. 已知:char **s; 正确的语句是()
A. s=”computer”;
B. *s=”computer”;
C. **s=”computer”;
D. *s=’A’;
25. 在进行文件操作时,写文件的一般含义是()
A. 将计算机内存中的信息存入磁盘
B. 将磁盘中的信息存入计算
机内存
C. 将计算机CPU中的信息存入磁盘
D. 将磁盘中的信息存入计算机CPU
26. 以下对一维整型数组a的正确说明是()
A. int a(10);
B. int n; scanf("%d",&n); int a[n];
C. int n=10,a[n];
D. #define SIZE 10 (换行) int a[SIZE];
27. 以下能正确定义一维数组的选项是()
A. int a[5]={0,1,2,3,4,5};
B. char a[ ]={0,1,2,3,4,5};
C. char a={''A'',''B'',''C''};
D. int a[5]="0123";
28. 程序段:int a=5;printf(“%d\n”,(a=3*5,a*4,a+5)); 的输出结果为()
A. 45
B. 20
C. 15
D. 10
29. 要判断char型变量m是否是数字字符,可以使用下列表达式()
A. 0<=m&&m<=9
B. ’0’<=m && m<=’9’
C. ”0”<=m && m<=”9”
D. 前面三个答案均是错误的
30. 以下说法中正确的是()
A. C语言程序总是从第一个函数开始执行
B. 在C语言程序中, main()函数可有可无
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
31. 表示关系X < =Y < =Z的C语言表达式为()
A. (X < =Y) && (Y < =Z)
B. (X < =Y)AND(Y < =Z)
C. (X < =Y < =Z)
D. (X < =Y)&(Y < =Z)
32. 判断字符串a和b是否相等,应当使用()
A. if(a = = b)
B. if(a = b)
C. if( strcpy(a,b) )
D. if (!strcmp(a,b) )
33. 有以下语句:int b;char c[10]; 则正确的输入语句是()
A. scanf(“%d%s”,&b,&c);
B. scanf(“%d%s”,&b,c);
C. scanf(“%d%s”,b,c);
D. scanf(“%d%s”,b,&c);
34. C语言中的函数()
A. 可以嵌套定义
B. 不可以嵌套调用
C. 可以嵌套调用,但不能递归调用
D. 嵌套调用和递归调用均可
35. 程序设计一般包含以下四个步骤,其中首先应该完成的是()
A. 设计数据结构和算法
B. 建立数学模型
C. 编写程序
D. 调试运行程序
36. 下面描述中,正确的是()
A. 主函数中的花括号必须有,而子函数中的花括号是可有可无的
B. 一个C程序行只能写一个语句
C. 主函数main是C程序启动时唯一的入口
D. 函数体包含了函数说明部分
37. 设int类型的数据长度为2个字节,则unsigned int 类型数据的取值范围是
()
A. 0~255
B. 0~65535
C. -256~255
D. -32768~32767
38. 已知int i=5;执行语句i+=++i; i的值是()
A. 10
B. 11
C. 12
D. 以上答案都不对
39. 表达式(int)2.1416的值是()
A. 2
B. 2.1
C. 0
D. 3
40. if语句的控制条件()
A. 只能用关系表达式
B. 只能用关系表达式或逻辑表达式
C. 只能用逻辑表达式
D. 可以用任何表达式
41. 在C语言中,int、char和short三种类型数据所占用的内存()
A. 均为2个字节
B. 由用户自己定义
C. 由所用计算机的机器字长及编译环境决定
D. 是任意的
42. 在C语言中,数字029是一个()
A. 八进制数
B. 十六进制数
C. 十进制数
D. 非法数
43. 若二维数组a有m列,则在a[i][j]前的元素个数为()
A. . j*m+i
B. i*m+j
C. i*m+j-1
D. i*m+j+1
44. 已知:int a,*p=&a;则下列函数调用中错误的是()
A. scanf(“%d”,&a);
B. scanf(“%d”,p);
C. printf(“%d”,a);
D. printf(“%d”,p);
45. 下列对字符串的定义中,错误的是()。
A. char str[5]=“QBASIC”
B. char str[ ]=“QBASIC”
C. char *str=“QBASIC”
D. char str[]={‘Q’,‘B’,‘A’,‘S’,‘I’,‘C’}
46. 以下关于运算符优先顺序的描述中正确的是()
A. 关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符
B. 逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符
C. 赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符
D. 算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符
47. 设intx=1,y=1;表达式(!x||y--)的值是()
A. 0
B. 1
C. 2
D. -1
48. 有定义charch;判断ch的值是否为小写字母的表达式为()
A. ‘a’<= ch =‘z’
B. (ch >=‘a’)&(ch <=‘z’)
C. (ch>=‘a’)AND (ch<=‘z’)
D. ch>=97 && ch<=122
49. 有定义:int a=2,b=4;float C=10; 执行printf(“%f”,c+=a/b*0.5);的输出结果是()
A. 2.5
B. 25
C. 11
D. 10
50. 执行以下程序段后,a,b,c的值分别是()inta,b=100,c,x=10,y=9;a=(--x==y++)?--x;++y;if(x<9)b=x++;c=y;
A. 9,9,9
B. 8,8,10
C. 9,10,9
D. 1,11,10
51. 下列说法中正确的是______。()
A. break用在switch语句中,而continue用在循环语句中。
B. break用在循环语句中,而continue用在switch语句中。
C. break能结束循环,而continue只能结束本次循环。
D. continue能结束循环,而break只能结束本次循环。
52. 以下程序的输出结果是()main(){intn=4;while(n--
)printf("%d",--n);}
A. 2 0
B. 3 1
C. 3 2 1
D. 2 1 0
53. 若有:do{i=a-b++;printf(“%d”,i);}while(!i);则while中的!i可用
()代替。
A. i==0
B. i!=1
C. i!=0
D. 以上均不对
54.
执行以下程序段后,c3的值是
int c1=1,c2=2,c3;
c3=c1/c2;
()
A. 0
B. 1/2
C. 0.5
D. 1
55.
若有以下程序段,其输出结果是
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf (“%d,%d,%d\n”,a,b,c);
()
A. 3,0,-10
B. 0,0,5
C. -10,3,-10
D. 3,0,3
56.
若a为int 类型,且a=125,执行下列语句后的输出是
printf (“%d,%o,%x\n”,a,a+1,a+2)
()
A. 125,175,7D
B. 125,176,7F
C. 125,176,7D
D. 125,175,2F
57.
以下程序的输出结果是()
main()
{int a=12,b=12;
printf("%d %d\n",--a,++b);
}
A. 10 10
B. 12 12
C. 11 13
D. 11 10
58.
以下程序的输出结果是
main()
{ int a= -1,b=1;
if((++a < 0)&& ! (b-- < =0)) printf("%d %d\n",a,b);
else printf("%d %d\n",b,a);
}
A. -1 1
B. 0 1
C. 1 0
D. 0 0
59.
若执行下面的程序从键盘输入3和4,则输出是main()
{ int a,b,s;
scanf("%d%d",&a,&b);
s=a;
if (a < b) s=b;
s=s*s;
printf("%d\n",s);
}
A. 14
B. 16
C. 18
D. 20
60.
下面的程序是
main()
{ int x=3,y=0,z=0;
if (x==y+z) printf("****");
else printf("####");
}
A. 有语法错误不能通过编译
B. 输出****
C. 可能通过编译,但是不能通过连接,因而不能运行
D. 输出####
61.
以下程序输出结果是
main ()
{ int m=5;
if (m++ > 5) printf ("%d\n",m);
else printf ("%d\n",m--);
}
A. 7
B. 6
C. 5
D. 4
62.
执行下面语句后的输出为
int i= -1;
if (i < =0)printf("****\n")
else printf("%%%%\n")
()
A. ****
B. %%%%
C. %%%%C
D. 有语法错,不能执行
63.
执行下列程序段后,x、y和z的值分别是
int x=10,y=20,z=30;
if(x>y) z=x;x=y;y=z;
()
A. 10,20,30
B. 20,30,30
C. 20,30,10
D. 20,30,20
64.
以下程序的输出结果是
main()
{int w=4,x=3,y=2,z=1;