题目解析

计算机应用类专业综合知识理论

课后作业
第五章 数组与指针

一、单选题

1. 下列关于C语言数组的叙述错误的是( )
A. 多维数组实际上是按照一维数组存储的
B. 数组只能一个一个赋值
C. 数组定义时只能是整型常量或整型表达式
D. 数组不等同于链表,数组是离散的
2. 对于二维数组 arra[20][24],下列表达地址的方式错误的是( )
A. *(arra[6]+7)
B. *(arra+8)+9
C. arra[15]
D. &arra[19][1]
3. 若有程序如下,则输出结果为( )
void solve(int* x) {
    printf("%d\n", ++*x);
}

int main() {
    int a = 24;
    solve(&a);
}
A. 23
B. 24
C. 25
D. 26
4. 下列不能正确赋值的是( )
A. char* str1 = "Gentlemen";
B. char str2[] = {'L','a','d','i','e','s'};
C. char str3[20]; str3 = "Gentlemen";
D. char str4[20] = "Ladies";
5. 下述程序是给数组所有的元素输入数据,则空白处所填入的正确答案为( )
int main() {
    int a[10], i = 0;
    while(i < 10) {
        scanf("%d", _________);
    }
}
A. a+(i++)
B. &a[i+1]
C. a+i
D. &a[++i]
6. 下列关于指针的说法不正确的是( )
A. 指针是变量,能在程序中直接使用
B. void类型的指针则不能存放指向任何类型的指针
C. 必须在使用指针存储其他变量地址之前对其进行声明
D. 指针也是内存地址
7. 若有下列说明和语句,极简是对数组CX的正确引用的是( )
int CX[10];
int* Bin;
Bin = CX;
A. Bin+1
B. *(Bin+3)
C. *(Bin+1)+3
D. *(*Bin+2)
8. 设有某函数的说明为:int *func(int MW[10], int B); 则下列叙述中,正确的是( )
A. func的函数体中,不能对MW进行移动指针的操作
B. 只有指向10个整数内存单元的指针,才能作为实参传给MW
C. 形参MW对应的实参只能是数组名
D. 说明中MW[10]写成MW[]或*MW效果一样
9. 若有以下代码,则程序的输出结果为( )
int main() {
    int c[10] = {20,25,13,66,15,16,17,18,19,23}, *flag = c, n = 9;
    printf("%d-%d-%d\n", c[flag-c], c[n], *(&c[n]));
}
A. 20-23-23
B. 11-19-19
C. 25-23-23
D. 25-19-23

二、程序分析题

1. 下列程序的运行结果为______
#include<stdio.h>

void fun(char a[]) {
    printf("%c", *a);
}

int  main() {
    char a[] = {'a', 'b', 'c', 'd', '\0'};
    fun(a);
    return 0;
}
2. 下列程序的运行结果为______
#include<stdio.h>

void fun(int b[], int size) {
    int j;
    for(j=0; j < size; j++) {
        b[j] = j * j;
    }
}

int main() {
    // 代码不完整,根据题目描述无法提供完整结果
}