2025-2026学年上学期期末
2025-2026学年上学期期末试卷
说明
根据试卷第 3—6 页照片整理,第 1—2 页缺失。学年、学期及考试类型依收集目录标注,所提供页面未包含卷首信息。照片中的手写作答、批改及遮盖区域未作为参考答案收录。程序保留原题写法。
一、选择题
第 1—2 页缺失,选择题第 1—9 题题干缺失。第 3 页页首仅保留上一题的选项:A. 10 5;B. 10 10;C. 11 10;D. 11 5。以下保留原卷题号。
-
对于字符串定义
char str[10] = "\tHello\n";,sizeof(str)的大小为( )?A. 10
B. 8
C. 11
D. 9
-
使用
scanf("%d %s", &num, str);注入以下两行输入时,请问最终读取结果是?10Try It!A.
10, "Try It!"B.
1, "0"C.
10, "\n"D.
10, "Try"
-
下列语句哪个可以动态分配字符串 “Hello” 所需要的空间?
A.
malloc(strlen("Hello"))B.
allocate(6 * sizeof(char))C.
malloc(sizeof("Hello"))D.
allocate(5 * sizeof(char))
-
已知
char *str1 = "hello"; char str2[6] = "hello";,以下表达式中哪个是没有编译或执行错误的?A.
str1 = "hello world!";B.
str2 = "hello world!";C.
strcpy(str1, " world!");D.
strcpy(str2, " world!");
-
已知
char map[10][8]的基地址为 0x001a2451,有char *ptr = *(map+2);,请问map[4][5]的地址和ptr+2的地址分别为( )。A. 0x001a2496,0x001a2471
B. 0x001a2496,0x001a2463
C. 0x001a2476,0x001a2471
D. 0x001a2476,0x001a2463
-
设当前目录下已有一个名为 data.txt 的文件,其内容原本为字符串 Hello。若此时使用
FILE *fp = fopen("data.txt", <label>);打开文件,并使用fprintf(fp, " World");写入,则下列说法正确的是( )。A. 若
<label>为"w",则文件最后内容为"Hello World"B. 若
<label>为"w",则文件最后内容为" World"C. 若
<label>为"r+",则文件最后内容为"Hello World"D. 若
<label>为"r",则文件最后内容为"Hello World"
二、填空题(10 分,每题 2 分)
-
C 语言中
const int *p和int *const p的区别是:前者表示 ,后者表示 。
-
在 C 语言中,取模操作符
%要求两边操作数必须都是 类型。请给出一个可以表达if else逻辑的三元操作符 。
-
有如下两种指针的声明语句:
int **pp; void (*sp)(int,int);,则pp是 指针,sp是 指针。
-
char s[] = "hello";,假设&s[0]的值为 0xEF6C7A19,则*(s+1)的值是 ,s+1的值是 。
-
有语句:
int ages[] = {40, 13, 20, 19, 36};,请问ages[2]/ages[3]的值是 ,&ages[2]-&ages[3]的值是 。
三、程序分析题(20 分,每题 5 分)
-
下面程序的输出结果是:( )。
void main() {int a=0, b=0;while(a < 100) {++a;b+=a;}printf("%d, ", b);a=0;while(a < 100) {int b;++a;b-=a;}printf("%d", b);}
-
下面程序的输出结果是:( )。
#include<stdio.h>typedef char string[2000];void main() {char *p[]={"hello, ", "world", "abc", "123", "!!!"};string s1, s2;strcpy(s1, p[0]++);strcpy(s2, ++p[1]);printf("%s", strcat(s1, s2));}
-
下面程序的输出结果是:( )。
#include<stdio.h>int i=1;int fun(int n) {static int a=2;a++;return a+n;}void main() {int k=5;{int i=3;k += fun(i);}k += fun(i);printf("%d", k);}
-
下面程序的输出结果是:( )。
#include<stdio.h>void main() {int i=-10;i >>= 3;printf("%d", i);}
四、编程题(本题满分 40 分,每小题 10 分)
注意程序中适当的注释和良好的编程风格都是得分点。
-
(10 分)编写程序,找出 之间所有“逢 7 过”的数字并输出。所谓“逢 7 过”是指:该数字或者是 7 的倍数,或者个位数是 7,或者十位数是 7。要求:一行输出 5 个数字,数字之间用空格隔开。实现的程序输出如下图所示:
7 14 17 21 2728 35 37 42 47...(后续省略)
-
(10 分)编写一个函数
int IsPalindrome(const char *str),用于判断传入的字符串是否是“回文串”。如果是回文串,返回 1;否则返回 0。回文串是指正读和反读都一样的字符串,例如 “level”、“12321”、“aba” 都是回文串。输入的字符串长度范围为 。
-
(10 分)编写一个递归函数
void ToBinary(int n),实现十进制转二进制输出,功能是将传入的正整数 转换为二进制形式并输出(前缀 0 不需要输出)。要求:必须使用递归思想实现;函数只需要打印结果,不需要换行。示例:如果 ,则程序输出 111。
-
(10 分)编写程序实现文献管理系统。当前目录下有一个文本文件 references.txt,其中包含文献的信息(格式:文献名称 第一作者 发表日期 被引数量),发表日期格式为 YYYY-MM-DD。从文件中读取所有文献的数据。对文献进行排序,先按发表日期先后顺序进行排序;如果发表日期相同,则按被引数量从高到低排序。将排序后的结果按顺序输出到文件 ordered_references.txt,每行一个文献信息(格式:文献名称 第一作者 发表日期 被引数量)。
references.txt:
Deep_Learning_Review LeCun 2015-05-28 5000Graph_Networks Scarselli 2009-01-01 1200Transformer_Model Vaswani 2017-06-12 8000ResNet_Paper He 2015-12-10 6000GAN_Introduction Goodfellow 2014-06-10 7500Adam_Optimizer Kingma 2015-05-28 4500ordered_references.txt:
Graph_Networks Scarselli 2009-01-01 1200GAN_Introduction Goodfellow 2014-06-10 7500Deep_Learning_Review LeCun 2015-05-28 5000Adam_Optimizer Kingma 2015-05-28 4500ResNet_Paper He 2015-12-10 6000Transformer_Model Vaswani 2017-06-12 8000