内容正文:
编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第20卷,是知识点训练卷。按“C语言程序设计”考试纲要(七)指针的六点知识点要求编写,其六点要求是:
1. 了解指针的概念。2.了解指向简单变量。
吉林省《信息工程类(电子与信息类)考纲百套卷》 第20卷
《C语言程序设计》
(七)指针-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1.以下关于指针的说法正确的是( )
A. 指针变量存储的是变量的值
B. 指针变量存储的是变量的地址
C. 指针变量可以直接存储字符串
D. 指针变量不能进行算术运算
2.以下代码的输出结果是( )
int a = 10;
int *p = &a;
printf("%d", *p);
A. 10
B. a的地址
C. p的地址
D. 编译错误
3.以下代码的输出结果是( )
int a = 5;
int *p = &a;
*p = 20;
printf("%d", a);
A. 5
B. 20
C. p的地址
D. 编译错误
4.以下代码的输出结果是( )
int a = 10;
int *p = &a;
int **pp = &p;
printf("%d", **pp);
A. 10
B. p的地址
C. pp的地址
D. 编译错误
5.以下代码的输出结果是( )
int a[] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d", *(p + 2));
A. 1
B. 2
C. 3
D. 4
6.以下代码的输出结果是( )
char *str = "Hello";
printf("%c", *(str + 1));
A. H
B. e
C. l
D. o
7.以下代码的输出结果是( )
int a = 10;
int *p = &a;
printf("%p", p);
A. 10
B. a的地址
C. p的地址
D. 编译错误
8.以下代码的输出结果是( )
int a = 10;
int *p = &a;
int *q = p;
printf("%d", *q);
A. 10
B. p的地址
C. q的地址
D. 编译错误
9.以下代码的输出结果是( )
int a = 10;
int *p = &a;
int **pp = &p;
printf("%d", *p);
A. 10
B. p的地址
C. pp的地址
D. 编译错误
10.以下代码的输出结果是( )
int a = 10;
int *p = &a;
*p = 20;
printf("%d", a);
A. 10
B. 20
C. p的地址
D. 编译错误
二、判断题(本大题共10小题,每小题2分,共20分)
1.指针变量可以存储任何类型的数据。( )
2.int *p; 声明了一个指向整型数据的指针变量。( )
3.指针变量可以进行加、减、乘、除等算术运算。( )
4.int *p = NULL; 表示指针p指向空地址。( )
5.在C语言中,如果指针变量 p 指向一个整型变量 a ,那么 *p 和 a 的值是相同的。( )
6.数组名是一个指针常量,不能修改其值。( )
7.int *p = &a; 和 int *p; p = &a; 是等价的。( )
8.int *p; p = 10; 是合法的代码。( )
9.int *p; p = &a; 和 int *p = &a; 是等价的。( )
10.int *p; p = (int *)malloc(sizeof(int)); 语法正确。( )
三、填空题(本大题共5小题,每题2分,共10分)
1. 在 C 语言中,若定义 int a = 10; int *p = &a;,那么 *p 代表的是变量 a 的 ____。
2. 若有定义 char str[] = "Hello"; char *ptr = str;,ptr + 3 指向的是字符 ____。
3. 已知 int arr[5] = {1, 2, 3, 4, 5}; int *q = arr;,*(q + 4) 的值是 ____。
4. 定义 double num = 3.14; double *r = #,若要通过指针 r 修改 num 的值为 6.28,应使用语句 ____。
5.若有 int x = 20; int *y; y = &x;,此时 &(*y) 等价于 ____。
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
*p = 20;
printf("%d
", a);
return 0;
}
2.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a;
int *q = &b;
*p = *q + 2;
printf("%d
", a);
return 0;
}
3.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a[] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d
", *(p + 2));
return 0;
}
4.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
int **q = &p;
**q = 30;
printf("%d
", a);
return 0;
}
5.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a;
int *q = &b;
p = q;
*p = 15;
printf("%d
", b);
return 0;
}
五、编程题(本大题共5小题,每题5分,共25分)
1. 编写一个程序,使用指针交换两个整数的值。
2.编写一个程序,使用指针计算数组元素的和。
3.编写一个程序,使用指针反转字符串。
4.编写一个程序,使用指针查找数组中的最大值。
5.编写一个程序,使用指针实现字符串的拼接。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第20卷,是知识点训练卷。按“C语言程序设计”考试纲要(七)指针的六点知识点要求编写,其六点要求是:
1. 了解指针的概念。2.了解指向简单变量。
吉林省《信息工程类(电子与信息类)考纲百套卷》 第20卷
《C语言程序设计》
(七)指针-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1.以下关于指针的说法正确的是( )
A. 指针变量存储的是变量的值
B. 指针变量存储的是变量的地址
C. 指针变量可以直接存储字符串
D. 指针变量不能进行算术运算
答案:B
2.以下代码的输出结果是( )
int a = 10;
int *p = &a;
printf("%d", *p);
A. 10
B. a的地址
C. p的地址
D. 编译错误
答案:A
3.以下代码的输出结果是( )
int a = 5;
int *p = &a;
*p = 20;
printf("%d", a);
A. 5
B. 20
C. p的地址
D. 编译错误
答案:B
4.以下代码的输出结果是( )
int a = 10;
int *p = &a;
int **pp = &p;
printf("%d", **pp);
A. 10
B. p的地址
C. pp的地址
D. 编译错误
答案:A
5.以下代码的输出结果是( )
int a[] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d", *(p + 2));
A. 1
B. 2
C. 3
D. 4
答案:C
6.以下代码的输出结果是( )
char *str = "Hello";
printf("%c", *(str + 1));
A. H
B. e
C. l
D. o
答案:B
7.以下代码的输出结果是( )
int a = 10;
int *p = &a;
printf("%p", p);
A. 10
B. a的地址
C. p的地址
D. 编译错误
答案:B
8.以下代码的输出结果是( )
int a = 10;
int *p = &a;
int *q = p;
printf("%d", *q);
A. 10
B. p的地址
C. q的地址
D. 编译错误
答案:A
9.以下代码的输出结果是( )
int a = 10;
int *p = &a;
int **pp = &p;
printf("%d", *p);
A. 10
B. p的地址
C. pp的地址
D. 编译错误
答案:A
10.以下代码的输出结果是( )
int a = 10;
int *p = &a;
*p = 20;
printf("%d", a);
A. 10
B. 20
C. p的地址
D. 编译错误
答案:B
二、判断题(本大题共10小题,每小题2分,共20分)
1.指针变量可以存储任何类型的数据。( )
答案:错误
2.int *p; 声明了一个指向整型数据的指针变量。( )
答案:正确
3.指针变量可以进行加、减、乘、除等算术运算。( )
答案:错误
4.int *p = NULL; 表示指针p指向空地址。( )
答案:正确
5.在C语言中,如果指针变量 p 指向一个整型变量 a ,那么 *p 和 a 的值是相同的。( )
答案:正确
6.数组名是一个指针常量,不能修改其值。( )
答案:正确
7.int *p = &a; 和 int *p; p = &a; 是等价的。( )
答案:正确
8.int *p; p = 10; 是合法的代码。( )
答案:错误
9.int *p; p = &a; 和 int *p = &a; 是等价的。( )
答案:正确
10.int *p; p = (int *)malloc(sizeof(int)); 语法正确。( )
答案:正确
三、填空题(本大题共5小题,每题2分,共10分)
1. 在 C 语言中,若定义 int a = 10; int *p = &a;,那么 *p 代表的是变量 a 的 ____。
答案:值
2. 若有定义 char str[] = "Hello"; char *ptr = str;,ptr + 3 指向的是字符 ____。
答案:'l'
3. 已知 int arr[5] = {1, 2, 3, 4, 5}; int *q = arr;,*(q + 4) 的值是 ____。
答案:5
4. 定义 double num = 3.14; double *r = #,若要通过指针 r 修改 num 的值为 6.28,应使用语句 ____。
答案:*r = 6.28;
5.若有 int x = 20; int *y; y = &x;,此时 &(*y) 等价于 ____。
答案:&x
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
*p = 20;
printf("%d
", a);
return 0;
}
答案: 20
2.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a;
int *q = &b;
*p = *q + 2;
printf("%d
", a);
return 0;
}
答案: 12
3.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a[] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d
", *(p + 2));
return 0;
}
答案: 3
4.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
int **q = &p;
**q = 30;
printf("%d
", a);
return 0;
}
答案: 30
5.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a;
int *q = &b;
p = q;
*p = 15;
printf("%d
", b);
return 0;
}
答案: 15
五、编程题(本大题共5小题,每题5分,共25分)
1. 编写一个程序,使用指针交换两个整数的值。
答案:
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
swap(&x, &y);
printf("x = %d, y = %d
", x, y);
return 0;
}
2.编写一个程序,使用指针计算数组元素的和。
答案:
#include <stdio.h>
int sum(int *arr, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += *(arr + i);
}
return sum;
}
int main() {
int a[] = {1, 2, 3, 4, 5};
int n = sizeof(a) / sizeof(a[0]);
printf("Sum = %d
", sum(a, n));
return 0;
}
3.编写一个程序,使用指针反转字符串。
答案:
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
int len = strlen(str);
char *start = str;
char *end = str + len - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "Hello";
reverse(str);
printf("%s
", str);
return 0;
}
4.编写一个程序,使用指针查找数组中的最大值。
答案:
#include <stdio.h>
int findMax(int *arr, int n) {
int max = *arr;
for (int i = 1; i < n; i++) {
if (*(arr + i) > max) {
max = *(arr + i);
}
}
return max;
}
int main() {
int a[] = {3, 7, 2, 9, 5};
int n = sizeof(a) / sizeof(a[0]);
printf("Max = %d
", findMax(a, n));
return 0;
}
5.编写一个程序,使用指针实现字符串的拼接。
答案:
#include <stdio.h>
void concat(char *dest, const char *src) {
while (*dest) dest++;
while (*src) {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
}
int main() {
char str1[50] = "Hello, ";
char str2[] = "World!";
concat(str1, str2);
printf("%s
", str1);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$