试卷2(第3-6章)
一. 单选题(共15 题,60.0分)
1. (单选题,4.0分) 以下语句中,用于定义包含有6个元素的二维数组的是( )。
- A. static int a[][2]={1,2,3,4,5,6};
- B. static int a[]={1,2,3,4,5,6};
- C. static int a[][]={1,2,3,4,5,6};
- D. static int a[3][4];
正确答案: A
2. (单选题,4.0分) 在下列的字符数组定义中,存在语法错误的是( )。
- A. char a[20]="abcdefg";
- B. char a[15]={'1','2'};
- C. char a[10]='5';
- D. char a[]="x+y=55.";
正确答案: C
3. (单选题,4.0分)
以下程序段的执行结果是( )。
char s[20]="\"ABC\"",s0[]="\'123\'\n";
strcat(s,"\tand\t");
strcat(s,s0);
printf("%d\n",strlen(s));
- A. 23
- B. 17
- C. 22
- D. 16
正确答案: D
4. (单选题,4.0分) 表达式 strlen("hello") 的值是( )。
- A. 4
- B. 6
- C. 7
- D. 5
正确答案: D
5. (单选题,4.0分) 若用数组名作为函数调用的实参,传递给形参的是( )。
- A. 数组全部元素的值
- B. 数组元素的个数
- C. 数组中第一个元素的值
- D. 数组的首地址
正确答案: D
6. (单选题,4.0分) 若“int a[2]={1,3}, *p=&a[0]+1;” ,则 *p 的值是( )。
- A. 3
- B. &a[0]+1
- C. 4
- D. 2
正确答案: A
7. (单选题,4.0分) 若p指向x,则( )与x的表示是等价的。
- A. *p
- B. *x
- C. p
- D. &x
正确答案: A
8. (单选题,4.0分) 将两个字符串连接起来组成一个字符串时,选用( )函数。
- A. strcat()
- B. strcap()
- C. strlen()
- D. strcmp()
正确答案: A
9. (单选题,4.0分) 设指针px指向的整型变量值为25,则“printf("%d\n",*px);”语句的输出是( )。
- A. 23
- B. 24
- C. 26
- D. 25
正确答案: D
10. (单选题,4.0分) 若有变量定义:“int i,j=7,*p=&i;”,则与“i=j;”语句等价的语句是( )。
- A. i=&j;
- B. i=*p;
- C. *p=*&j;
- D. i=&*p;
正确答案: C
11. (单选题,4.0分) 能把函数处理结果的二个数据返回给调用函数,在下面的方法中不正确的是( )。
- A. return 这二个数
- B. 用二个全局变量
- C. 形参用二个元素的数组
- D. 形参用二个这种数据类型的指针
正确答案: A
12. (单选题,4.0分) 变量s的定义为“char *s= "Hello world!";”,要使变量p指向s所指向的同一个字符串,则应选取( )。
- A. char *p; p=&s;
- B. char *p=&s;
- C. char *p;p=*s;
- D. char *p=s;
正确答案: D
13. (单选题,4.0分) 设有定义“int a=3,b,*p=&a;”,则下列语句中使b不为3的语句是( )。
- A. b=&a;
- B. b=*&a;
- C. b=a;
- D. b=*p;
正确答案: A
14. (单选题,4.0分) 若“char s[]="hello\nworld\n";” ,则数组 s 中有( )个元素。
- A. 15
- B. 12
- C. 14
- D. 13
正确答案: D
15. (单选题,4.0分) 下列不正确的定义是( )。
- A. int i, *p=&i;
- B. int *p=&i, i;
- C. int *p, i;
- D. int i,*p;
正确答案: B
二. 填空题(共5 题,20.0分)
16. (填空题,4.0分) “int a[3][4];”共定义了( )个数组元素。
正确答案:
(1) 12
17. (填空题,4.0分) 一个函数定义由( )和函数体两部分组成。
正确答案:
(1) 函数头
18. (填空题,4.0分) 函数定义中的形参和函数调用时的实参都是变量时,传递方式为( )。
正确答案:
(1) 按值传递
19. (填空题,4.0分) C语言中数组的每一维下标都是从( )开始的。
正确答案:
(1) 0
20. (填空题,4.0分) 在程序中执行到( )语句时,将结束所在函数的执行过程,返回到调用该函数的位置。
正确答案:
(1) return
三. 简答题(共3 题,20.0分)
21. (简答题,10.0分) 编程题:从键盘接收10个整数,并对其用选择法进行排序(要求排成降序),然后输出之。
正确答案:
#include <stdio.h>
void main( )
{
int a[10];
int i,j,p;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
p=i;
for(j=i+1;j<10;j++)
if(a[j]>a[p]) p=j;
if(i!=p)
{int temp=a[i];a[i]=a[p];a[p]=temp;}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
22. (简答题,5.0分)
分析程序,写出其运行结果。
#include<stdio.h>
void LE(int *a, int *b)
{
int x=*a;
*a=*b;
*b=x;
}
void main()
{
int x=15, y=26;
printf("%d %d\n",x,y);
LE(&x,&y);
printf("%d %d\n",x,y);
}
正确答案:
15 26
26 15
23. (简答题,5.0分)
分析程序,写出其运行结果。
#include<stdio.h>
int a[6]={4,5,6,15,20,12};
void main()
{
int i,s1,s2;
s1=s2=0;
for(i=0; i<6; i++)
switch(a[i]%2)
{
case 0: s2+=a[i];break;
case 1: s1+=a[i];break;
}
printf("%d,%d\n",s1,s2);
}
正确答案:
20,42