C语言等级考试真题

合集下载

2024年6月青少年软件编程C语言等级考试试卷四级真题

2024年6月青少年软件编程C语言等级考试试卷四级真题

2024年6月青少年软件编程C语言等级考试试卷四级真题分数:100 题数:41.人以群分(25分)。

社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。

要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。

输入:第一行给出一个正整数N(2≤N≤105)。

随后一行给出N个正整数,分别是每个人的活跃度,其间以空格分隔。

题目保证这些数字以及它们的和都不会超过231。

输出:按下列格式输出:,其中N1是外向型人的个数;N2是内向型人的个数;N3是两群人总活跃度之差的绝对值。

2.那就别担心了(25分)。

下图转自“英式没品笑话百科”的新浪微博——所以无论有没有遇到难题,其实都不用担心。

博主将这种逻辑推演称为“逻辑自洽”,即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题(开玩笑的,千万别以为这是真正的逻辑自洽的定义……)。

现给定一个更为复杂的逻辑推理图,本题就请你检查从一个给定命题到另一个命题的推理是否是“逻辑自洽”的,以及存在多少种不同的推理路径。

例如上图,从“你遇到难题了吗?”到“那就别担心了”就是一种“逻辑自洽”的推理,一共有3条不同的推理路径。

输入:首先在一行中给出两个正整数N(1<N≤500)和M,分别为命题个数和推理个数。

这里我们假设命题从1到N编号。

接下来M行,每行给出一对命题之间的推理关系,即两个命题的编号S1 S2,表示可以从S1推出S2。

题目保证任意两命题之间只存在最多一种推理关系,且任一命题不能循环自证(即从该命题出发推出该命题自己)。

最后一行给出待检验的两个命题的编号A B。

输出:在一行中首先输出从A到B有多少种不同的推理路径,然后输出Yes如果推理是“逻辑自洽”的,或No如果不是。

题目保证输出数据不超过109。

3.凑零钱(25分)。

韩梅梅喜欢满宇宙到处逛街。

2级计算机等级考试c语言试题及答案

2级计算机等级考试c语言试题及答案

2级计算机等级考试c语言试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个选项是合法的变量名?A. 2ndVariableB. intC. _firstVariableD. variable-name答案:C2. 在C语言中,以下哪个关键字用于定义一个函数?A. classB. functionC. defD. void答案:D3. 下列哪个选项不是C语言的标准库函数?A. printfB. scanfC. strcatD. main答案:D4. C语言中,以下哪种数据类型用于存储字符?A. intB. charC. floatD. double5. 在C语言中,以下哪个选项是正确的字符串定义?A. "Hello"B. 'Hello'C. "Hello"[]D. 'Hello'[]答案:A6. C语言中,以下哪个选项用于定义一个整型数组?A. int array[10];B. int array[];C. int array[10]={0};D. int array[]={0};答案:A7. 在C语言中,以下哪个选项是正确的二进制数表示?A. 0b1010B. 0x2AC. 0101D. 0B1010答案:A8. C语言中,以下哪个选项是正确的注释方式?A. // This is a commentB. /* This is a comment */C. //* This is a comment */D. /* This is a comment */答案:B9. C语言中,以下哪个选项用于定义一个结构体?B. classC. unionD. enum答案:A10. 在C语言中,以下哪个选项是正确的文件包含指令?A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h"D. #include <stdio.h>答案:B二、填空题(每题2分,共20分)1. C语言中,用于定义一个整型变量的关键字是________。

2023年9月青少年软件编程C语言等级考试试卷一级真题(含答案)

2023年9月青少年软件编程C语言等级考试试卷一级真题(含答案)

2023年9月青少年软件编程C语言等级考试试卷一级(含答案)分数:100 题数:5一、编程题(共5题,共100分)第1题. 日期输出给定两个整数,表示一个日期的月和日。

请按照"MM-DD"的格式输出日期,即如果月和日不到2位时,填补0使得满足2位。

时间限制:10000内存限制:65536输入2个整数m,d(0 < m <= 12, 0 < d <= 31)。

数据保证日期合法。

输出按照题目要求输出日期样例输入7 18样例输出07-18 。

参考答案:。

第2题. 计算(a+b)*(c-b)的值给定3个整数a、b、c,计算表达式(a+b)*(c-b)的值。

时间限制:1000内存限制:65536输入输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。

(-10,000 < a,b,c < 10,000)输出输出一行,即表达式的值样例输入2 3 5样例输出10 。

参考答案:。

第3题. 有一门课不及格的学生给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。

时间限制:10000内存限制:65536输入一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。

输出若该生恰好有一门课不及格,输出1;否则输出0。

样例输入50 80样例输出1 。

参考答案:。

第4题. 特殊求和如果一个数能够被7整除或者十进制表示中含有数字7,那么我们称这个数为幻数,比如17,21,73是幻数,而6,59不是。

对于给定的N,求出1~N中所有幻数的和。

时间限制:1000内存限制:65536输入一个整数N(1 < N < 10000)。

输出一个整数,表示1~N中所有幻数的和。

样例输入14样例输出21 。

参考答案:。

第5题. 比n小的最大质数对于给定的n,求比n小的质数中最大的一个。

质数是指一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数。

全国计算机二级(C语言)等级考试题库(完整版)

全国计算机二级(C语言)等级考试题库(完整版)

1、2、3、4、5、6、78910111213【参考答案】long fun ( char *p){long n=0;int flag=1;if(*p=='-') /*负数时置flag为-1*/ {p++;flag= -1;}else if(*p=='+') /*正数时置flag为1*/p++;while(*p!='\0'){n=n*10+*p-'0'; /*将字符串转成相应的整数*/p++;}return n*flag;}1415161718192021222324252627282930313233343536【参考答案】void fun(int tt[M][N],int pp[N]){int i,j,max;for(j=0;j<N;j++){max=tt[0][j]; /*假设各列中的第一个元素最大*/for(i=0;i<M;i++)if(tt[i][j]>max) /*如果各列中的元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/max=tt[i][j];pp[j]=max; /*将各列的最大值依次放入pp数组中*/}}37【参考答案】unsigned fun(unsigned w){int n=1,j,s=1;unsigned t;t=w;/*首先确定w的位数,用变量n保存*/while(t>=10){/*每次循环使s的位数减1,同时n加1*/t=t/10;n++;}/*求10的n-1次方*/for(j=1;j<n;j++)s=s*10;/*用w对10的n-1次方求余即可得到所求*/return w%s;}38【参考答案】void fun(char*s){char ch;int i,m,n;i=0;m=n=strlen(s)-1;/*将第i个和倒数第i个数互换,但循环的次数为数组长度的一半*/while(i<(n+1)/2){/*使用中间变量叫唤*/ch=s[i];s[i]=s[m];s[m]=ch;i++; m--;}}39【参考答案】void fun( char s[],int c){int i=0;char *p;p=s;while(*p) /*判断是否为结束符*/{if(*p!=c) /*判断字符串中字符是否与指定字符相同*/ {s[i]=*p;/*不同将重新组合字符串,*/i++;}p++; /*相同则处理下一个字符。

2024年3月青少年软件编程C语言等级考试试卷一级真题及答案

2024年3月青少年软件编程C语言等级考试试卷一级真题及答案

2024年3月青少年软件编程C语言等级考试试卷一级真题(答案)分数:100 题数:5一、编程题(共5题,共100分)。

1.倒序输出。

依次输入4个整数a、b、c、d,将他们倒序输出,即依次输出d、c、b、a这4个数。

时间限制:1000。

内存限制:65536。

输入:一行4个整数a、b、c、d,以空格分隔。

0<a,b,c,d<108。

输出:一行4个整数d、c、b、a,整数之间以一个空格分隔。

样例输入:样例输出:参考答案:2.足球联赛积分。

在足球联赛里,一个球队赢下一场比赛得到3个积分,打平一场比赛得到1个积分,输掉比赛得到0分。

现已知一个球队在整个联赛里的比赛情况,求该球队最终的积分。

时间限制:1000。

内存限制:65536。

输入:三个整数x,y,z,以空格分开,分别表示这个球队赢下的比赛场数,打平的比赛场数,输掉的比赛场数。

(0≤x,y,z≤40)。

输出:一个整数,表示该球队最终的积分。

样例输入:样例输出:提示:63=19*3+6*1+4*0。

参考答案:3.苹果和虫子。

你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。

虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?时间限制:1000。

内存限制:65536。

输入:输入仅一行,包括n,x和y(均为整数)。

输出:输出也仅一行,剩下的苹果个数。

样例输入:样例输出:提示:是要求完整的苹果数。

参考答案:4.整数的个数。

给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数。

写程序计算给定的k个正整数中,1,5和10出现的次数。

时间限制:10000。

内存限制:65536。

输入:输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。

输出:输出有三行,第一行为1出现的次数,,第二行为5出现的次数,第三行为10出现的次数。

样例输入:样例输出:参考答案:5.求满足条件的3位数。

全国计算机等级考试c语言试题及答案

全国计算机等级考试c语言试题及答案

全国计算机等级考试c语言试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级编程语言B. C语言可以直接在操作系统上运行C. C语言具有结构化的特点D. C语言具有丰富的库函数答案:B2. 在C语言中,用于定义数组的关键字是:A. structB. enumC. unionD. int答案:D3. 下列关于指针的描述中,正确的是:A. 指针可以存储函数的地址B. 指针不能存储变量的地址C. 指针不能存储数组的地址D. 指针不能存储指针的地址答案:A4. 在C语言中,用于定义结构体的关键字是:A. structB. unionC. enumD. typedef答案:A5. 下列关于循环的描述中,错误的是:A. for循环可以嵌套使用B. while循环不能嵌套使用C. do-while循环至少执行一次D. 循环语句可以没有循环体答案:B6. 在C语言中,用于定义函数的关键字是:A. structB. unionC. enumD. int答案:D7. 下列关于文件操作的描述中,错误的是:A. 文件指针是指向文件的指针B. 文件操作需要包含头文件stdio.hC. 文件操作只能使用二进制方式打开D. 文件操作可以使用"r"、"w"、"a"等模式答案:C8. 在C语言中,用于定义枚举的关键字是:A. structB. unionC. enumD. typedef答案:C9. 下列关于预处理指令的描述中,错误的是:A. #include用于包含头文件B. #define可以定义宏C. #ifdef可以用于条件编译D. #pragma可以用于编译器指令答案:C10. 在C语言中,用于定义联合的关键字是:A. structB. unionC. enumD. typedef答案:B二、填空题(每题2分,共20分)1. 在C语言中,表示逻辑“与”的运算符是______。

2024年3月青少年软件编程C语言等级考试试卷四级真题

2024年3月青少年软件编程C语言等级考试试卷四级真题

2024年3月青少年软件编程C语言等级考试试卷四级真题分数:100 题数:4一、编程题(共4题,共100分)1.最长上升子序列一个数的序列b i,当b1 < b2 < ... < b S的时候,我们称这个序列是上升的。

对于给定的一个序列(a1, a2, ..., a N),我们可以得到一些上升的子序列(a i1, a i2, ..., a iK),这里1 <= i1 < i2 < ... < i K <= N。

比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。

这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8). 你的任务,就是对于给定的序列,求出最长上升子序列的长度。

时间限制:11000内存限制:65536输入输入的第一行是序列的长度N (1 <= N <= 1000)。

第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。

输出最长上升子序列的长度。

样例输入样例输出试题编号:20240323-4-01试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:考生得分:0是否评分:已评分评价描述:2.重启系统小明帮助管理一个处理数据的计算系统,有N个待处理的任务,需要按照顺序来完成这些任务,即每次所完成任务的编号都要大于前一个完成任务的编号,且单个任务不可以分解完成。

计算系统运行着一个奇怪的保护程序,它限制了系统当前所能处理的数据量不能超过上次完成任务所处理的数据量。

重启系统可以使它立刻恢复到最高性能(一开始系统拥有最高性能,最高性能大于任何待处理任务的数据量)。

小明有一次重启系统的权限(也可以不使用),你能帮他算出最多能完成几个任务吗?时间限制:1000内存限制:65536输入第一行:N (2 <= N <= 1000) 待处理的任务数第二行:N个整数,每个任务的数据量输出输出只包括一行,这一行只包含一个整数,表示最多能完成的任务数。

2023年9月青少年软件编程C语言等级考试试卷五级真题(含答案)

2023年9月青少年软件编程C语言等级考试试卷五级真题(含答案)

2023年9月青少年软件编程C语言等级考试试卷五级(含答案)分数:100 题数:4一、编程题(共4题,共100分)第1题.红与黑有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。

你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。

请写一个程序,计算你总共能够到达多少块黑色的瓷砖。

时间限制:1000内存限制:65536输入:包括多个数据集合。

每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。

W和H都不超过20。

在接下来的H行中,每行包括W个字符。

每个字符表示一块瓷砖的颜色,规则如下:(1)‘.’黑色的瓷砖;(2)‘#’白色的瓷砖;(3)‘@’黑色的瓷砖,并且你站在这块瓷砖上。

该字符在每个数据集合中唯一出现一次。

当在一行中读入的是两个零时,表示输入结束。

输出:对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。

样例输入:6 9....#......#..............................#@...#.#..#.0 0样例输出:45参考答案:#include <iostream>#define xa x+a[i]#define ya y+b[i]using namespace std;int graph[21][21];int w=0,h=0;int X1=0,Y1=0,cnt=0;const int a[]={-1,0,1,0},b[]={0,-1,0,1};void dfs(int x,int y){graph[x][y]=0;cnt++;for(int i=0;i<4;i++){if(graph[xa][ya]==1 && xa>0 && xa<=w && ya>0 && ya<=h)dfs(xa,ya);}}void get(){for(int i=1;i<=w;i++){for(int j=1;j<=h;j++){char a;cin>>a;if(a=='#') graph[i][j]=0;else if(a=='.') graph[i][j]=1;else if(a=='@'){X1=i,Y1=j;graph[i][j]=1;}}}dfs(X1,Y1);cout<<cnt<<endl;cnt=0;}int main(){while(1){cin>>h>>w;if(h==0 && w==0) break;get();}return 0;}第2题.装箱问题一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1,2*2,3*3,4*4,5*5,6*6。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针(3)对于长度为的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是A)冒泡排序为C)快速排序为(4)对长度为比较次数为A)(5)下列对于线性链表的描述中正确的是A)存储空间不一定是连续,且各元素的存储顺序是任意的你B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的(6)下列对于软件测试的描述中正确的是A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确C)软件测试的目的是尽可能多地发现程序中的错误D)软件测试的目的是使程序符合结构化原则(7)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(8)下列描述中正确的是A)程序就是软件B)软件开发不受计算机系统的限制C)软件既是逻辑实体,又是物理实体D)软件是程序、数据与相关文档的集合(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指______A)数据与程序独立存放B)不同的数据被存放在不同的文件中C)不同的数据只能被对应的应用程序所使用D)以上三种说法都不对(10)用树形结构表示实体之间联系的模型是A)关系模型(11)算法具有五个特性,A)有穷性(12)以下选项中可作为A)(13)以下叙述中正确的是A)用B)用C)用D)用(14)以下不能定义为用户标识符的是A)(15)以下选项中不能作为合法常量的是A)(16)数字字符main(){ charprintf("%c,",}程序运行后的输出结果是A)(17)有以下程序main(){ int m=12, n=34;printf("%d%d",m++, ++n);printf("%d%d\n",n++, ++m);}程序运行后的输出结果是A)(18)有定义语句:。

A)C)(19)有以下程序main(){ int m,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量456,pA)C)(20)有以下程序main(){ int a,b,d=25;a=d/10%9; b=a&&(-1);printf("%d,%d\n",a,b);}程序运行后的输出结果是A(21)有以下程序main(){ int i=1,j=2, k=3;if(i++==1&&(++j==3||k++==3))printf("%d %d %d\n",i,j,k);}程序运行后的输出结果是A)(22)若整型变量件表达式A)(23)有以下程序main(){ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7) if(p[i]%2) j+=p[i];printf("%d\n",j);}程序运行后的输出结果是A)(24)有以下程序main(){ char a[7]="a0\0a0\0"; int i,j;i=sizeof(a); j=strlen(a);printf("%d %d\n",i,j);}程序运行后的输出结果是A)(25)以下能正确定义一维数组的选项是A)C)(26)有以下程序int f1(int x,int y){ return x>y?x:y; }int f2(int x,int y){ return x>y?y:x; }main(){ int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序运行后的输出结果是A)(27)已有定义:确的是______A)数组C)(28)有以下程序void f(int *x,int *y){ int t;t=*x;*x=*y;*y=t;}main(){ int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q); p++; q--;}for(i=0;i<8;i++) printf("%d,",a[i]);}程序运行后的输出结果是A)C)(29)有以下程序main(){ int a[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++) p[i]=i;for(i=0;i<3;i++) printf("%d",a[1][i]);}程序运行后的输出结果是A)(30)以下叙述中错误的是A)对于整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数(31)有以下程序#define N 20fun(int a[],int n,int m){ int i,j;for(i=m;i>n;i--)a[i+1]=a[i];}main(){ int i,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++) printf("%d",a[i]);}程序运行后的输出结果是A)(32)有以下程序main(){ int a[3][2]={0},(*ptr)[2],i,j;for(i=0;i<2;i++) {ptr=a+i; scanf("%d",ptr); ptr++; } for(i=0;i<3;i++){ for(j=0;j<2;j++) printf("%2d",a[i][j]);printf("\n");}}若运行时输入:A)产生错误信息(33)有以下程序prt(int *m,int n){ int i;for(i=0;i<n;i++) m[i]++;}main(){ int a[]={1,2,3,4,5},i;prt(a,5);for(i=0;i<5;i++) printf("%d,",a[i]);}程序运行后的输出结果是A)C)(34)有以下程序main(){ int a[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++) print(}程序运行后的输出结果是A)C)(35)有以下程序#define P 3void F(int x){ return(P*x*x);}main(){ printf("%d\n",F(3+5));}程序运行后的输出结果是A)(36)有以下程序main(){ int c=35; printf("%d\n",c&c);}程序运行后的输出结果是A)(37)以下叙述中正确的是A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间(38)若有以下说明和定义union dt{ int a;char b;double c;}data;以下叙述中错误的是A)B)变量C)程序段:D)(39)以下语句或语句组中A)C)(40)设有如下说明typedef struct ST{ long a;int b;char c[2];}NEW;则下面叙述中正确的是A)以上的说明形式非法C)(41)有以下程序main(){ int a=1,b;for(b=1;b<=10;b++){ if(a>=8) break;if(a%2==1){a+=5; continue;}a-=3;}printf("%d\n",b);}程序运行后的输出结果是A)(42)有以下程序main(){ char s[]="159",*p;p=s;printf("%c",*p++); printf("%c",*p++);}程序运行后的输出结果是A)(43)有以下函数fun(char{ while((*a!='\0')&&(*b!='\0')&&(*a==*b)){ a++;return(*a-*b);}该函数的功能是A)计算B)将C)将D)比较(44)有以下程序main(){ int num[4][4]={{1,2,3,4},{5,6,7,8},for(i=0;i<4;i++){ for(j=0;j<=i;j++) printf("%4c",for(j=_____;j<4;j++) printf("%4d",num[i][j]);printf("\n");}}若要按以下形式输出数组右上半三角1 2 3 46 7 811 1216则在程序下划线处应填入的是A)(45)有以下程序point(charmain(){ charpoint(p);}程序运行后的输出结果是A)(46)程序中若有如下说明和定义语句char fun(char *);main(){ char *s="one",a[5]={0},(*f1)()=fun,ch;......}以下选项中对函数A)(47)有以下结构体说明和变量定义,如图所示: struct node{int data; struct node *next;} *p,*q,*r;data next data next data next现要将下不能完成指定操作的语句是A)C)(48)以下对结构体类型变量A){ int n;float m;}AA;AA td;C){ int n;}aa;struct aa td;(49)以下与函数A)(50)有以下程序#include <stdio.h>void WriteStr(char *fn,char *str){ FILE *fp;fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}main(){ WriteStr("t1.dat","start");WriteStr("t1.dat","end");}程序运行后A)二、填空题(每空(1)某二叉树中度为个叶子结点。

相关文档
最新文档