资源描述
第3次作业答案(红字为答案)
1. 下列叙述中错误的是( )
A. 对于double 类型数组,不可直接用数组名对数组进行整体输入或输出
B. 数组名代表数组所占存储区的首地址,其值不可变
C. 在程序执行过程中,当数组元素下标超出定义的下标范围时,系统将给出“下标”越界的错误提示
D. 可以通过赋初值的方式确定数组元素个数
提示:请从数组下标的合法取值范围来考虑。
2. 已有定义char a[] = “xyz”,b[]={‘x’, ‘y’, ‘z’} ,以下叙述正确的是( )
A. 数组a 和b 的长度相同 B. 数组a 的长度小于数组b 的长度
C. 数组a 的长度大于数组b 的长度 D. 上述说法均不正确
提示:此题考察字符数组长度和字符串长度之间的关系。
3. 以下能正确定义一维数组的选项是( )
A. int num[]; B. #define N 100 int num[N]
C. int num[0..100]; D. int N = 100; int num[N];
提示:此题考察一维数组的维数界定问题。
4. 下列程序的输出结果是( )
#include <stdio.h>
void main()
{
char a[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘\0’};
int i, j;
i = sizeof(a); j = strlen(a);
printf(“%d, %d\n”, i, j);
}
A. 9,9 B. 8, 9 C. 1, 8 D. 9,8
提示:此题考察字符数组长度和字符串长度之间的关系。
5. 以下不能正确定义二维数组的选项是( )
A. int a[2][] = {{1, 2}, {3, 4}}; B. int a[][2] = {1, 2, 3, 4};
C. int a[2][2] = {{1}, {2}}; D. int a[2][2] = {{1}, 2, 3};
提示:此题考察二维数组初始化的规定。
6、C 语言规定,若未对函数返回类型加以说明,则函数的隐含类型为( )
A. void B. double C. int D. char
分析:教材中有答案,但我们不推荐大家在编程时省略函数返回类型。
7、若已定义的函数有返回值,则以下关于该函数调用的叙述错误的是( )
A. 函数调用可以作为独立语句存在
B. 函数调用可以作为一个函数的实参
C. 函数调用可以出现在表达式中
D. 函数调用可以作为左值而被赋值
分析:基本概念题,可查书或上机验证。
8、下列说法中错误的是( )
A. 在不同的函数中可以使用相同名字的变量
B. 函数中的形参是局部变量
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个函数的复合语句中定义的变量只在本函数范围内有效
分析:基本概念题。考察变量的作用域和生命期。
9、下列说法中正确的是( )
A. 定义函数时,形参的类型说明可以放在函数体内
B. return 后面的值不能为表达式
C. 如果函数值类型与return 后的返回值类型不一致,则以函数值类型为准
D. 如果形参与实参的类型不一致,则以实参类型为准
分析:基本概念题,可查书或上机验证。
10、阅读下列程序段,其执行结果为( )
#include <stdio.h>
void fun(int a)
{
int x = 5;
x += a++;
printf(“%d,”, x);
}
void main()
{
int a = 3, x = 1;
fun(a);
x += a++;
printf(“%d\n”, x);
}
A. 8,2 B. 8,3 C. 8,4 D. 8,5
分析:考察大家对传值调用和传址调用的理解。
11、阅读下列程序段,其执行结果为( )
#include <stdio.h>
void main()
{
int a = 4, b = 6, c = 7;
double d;
double fun(int, int, int);
printf(“d = %lf\n”, fun(a, b, c));
}
double fun(int a, int b, int c)
{
return a % b * c;
}
A. 27 B. 27.000000 C. 28 D. 28.000000
分析:可上机验证,留意一下函数声明的方式,以及输出语句中对函数返回值的处理。
12、下列说法中不正确的是( )
A. C 语言规定,不能在一个函数的内部再定义函数
B. 在没有声明函数返回值类型的情况下,默认函数返回值类型为int 型
C. 函数的类型可以是整型、实型、字符型,但不能是指针类型
D. 函数可以没有形参,但函数名后的括号不能省略
分析:基本概念题。
13、一个变量的指针就是( )
A. 变量的名称 B. 变量的地址 C. 变量的类型 D. 变量的值
分析:基本概念题。
14. 两个指针变量不能( )
A. 相加 B. 相减 C. 比较 D. 指向同一地址
分析:基本概念题。查书或上机验证。
15. 在C 语言中,对变量的访问方式是()
A. 能直接访问,也能间接访问 B. 能直接访问,不能间接访问
C. 不能直接访问,能间接访问 D. 直接、间接均不能
分析:基本概念题。
16. C 语句: int (* pa)[5]; 中,pa 表示的是一个( )
A. 指针数组的名称
B. 指向整型变量的指针
C. 指向包含5 个整型元素的一维数组的指针
D. 指向函数的指针
分析:基本概念题。
17. C 语句int * func(); 中,func 表示的是()
A. 返回值为指针的函数名称
B. 指向整型变量的指针
C. 指向数组的指针
D. 指向函数的指针
分析:基本概念题。
18. 给定下列程序,假定从键盘输入数据1、2,则执行结果为( )
#include <stdio.h>
void swap(int * p1, int p2)
{
* p1 = * p1 + p2;
p2 = p2 + * p1;
}
void main()
{
int a, b, * p1;
scanf("%d, %d", &a, &b);
p1 = &a;
swap(p1, b);
printf("a = %d, b = %d\n", a, b);
}
A. 3,5 B. a = 3, b = 5 C. 3, 2 D. a = 3,b = 2
分析:考察传值与传址的区别。
19. 给定下列程序,则运行结果为( )
#include <stdio.h>
void fun(int x, int y, int * z)
{
* z = x – y;
}
void main()
{
int a, b, c;
fun(11, 5, &a);
fun(8, a, &b);
fun(a, b, &c);
printf(“%d, %d, %d\n”, a, b, c);
}
A. 2,4,6 B. 2, 6, 4 C. 6, 2, 4 D. 6,4,2
分析:传址与传值。
20. 给定下列程序,则其运行结果为( )
#include <stdio.h>
void main()
{
static int array[][4] = {{1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19 ,21, 23}};
int (* p)[4], i, j, sum[3];
p = array;
for(i = 0; i < 3; i++)
{
sum[i] = 0;
for(j = 0; j < 4; j++)
sum[i] += *(*(p + i) + j);
printf(“%d, ”, sum[i]);
}
}
A. 16, 48, 80 B. 164880 C. 144 D. 80
分析:考察用指针变量遍历二维数组的方法。重点在理解,否则考试时不可能有机会上机验证。
展开阅读全文