新建Microsoft Word文档

问题描述

  L正在出题,新建了一个word文档,想不好取什么名字,身旁一人惊问:“你出的题目叫《新建Microsoft Word文档》吗?”,L大喜,一拍桌子,说:“好,就叫这个名字了。”
  仔细观察,当你新建一个word文档时,会得到一个名为“新建 Microsoft Word 文档.doc”的文件,再新建一个,则名为“新建 Microsoft Word 文档(2).doc”,再新建,便是“新建 Microsoft Word 文档(3).doc”。不断新建,编号不断递增。倘若你现在新建了三个文档,然后删除了“新建 Microsoft Word 文档(2).doc”,再新建就又会得到一个“新建 Microsoft Word 文档(2).doc”。

  严格说,Windows在每次新建文档时,都会选取一个与已有文件编号不重复的最小正整数作为新文档的编号。

  请编程模拟以上过程,支持以下两种操作
  New:新建一个word文档,反馈新建的文档的编号
  Delete id:删除一个编号为id的word文档,反馈删除是否成功
  初始时一个文件都没有,“新建 Microsoft Word 文档.doc”的编号算作1。

输入格式

  第一行一个正整数n表示操作次数,接下来n行,每行表示一个操作。若该行为”New”,则表示新建,为”Delete id”则表示要删除编号为id的文档,其中id为一个正整数。操作按输入顺序依次进行。

输出格式

  对于输入的每一行,输出其反馈结果。对于新建操作,输出新建的文档的编号;对于删除操作,反馈删除是否成功:如果删除的文件存在,则删除成功,输出”Successful”,否则输出”Failed”。

样例输入

12
New
New
New
Delete 2
New
Delete 4
Delete 3
Delete 1
New
New
New
Delete 4

样例输出

1
2
3
Successful
2
Failed
Successful
Successful
1
3
4
Successful

数据规模和约定

  操作次数(即输入的行数)不超过1481
  删除编号的数值不超过2012

时间限制:1.0s   内存限制:256.0MB

 1 #include<stdio.h>
 2 #include<stdlib.h>            //atoi()函数头文件
 3 #include<string.h>
 4 int Exist(int a[],int n,int w)//数组中是否存在某元素
 5 {
 6     int i;
 7     for(i=0;i<n;i++)
 8     {
 9         if(a[i]==w)
10             return i;//若存在,返回下标值
11     }
12
13     return 0;//不存在,返回0
14 }
15
16 int Max(int a[],int n)//求数组的最大值
17 {
18     int i;
19     int max=a[0];
20     for(i=0;i<n;i++)
21     {
22         if(a[i]>max)
23             max=a[i];
24     }
25     return max;//返回最大值
26 }
27
28 int New(int a[],int n)//新建
29 {
30     int i;
31     if(Max(a,n)==0)//若最大值为0,则表示无文件
32     {
33         a[n]=1;//数组末添加元素
34         return 1;//添加成功
35     }
36     else//最大值不为0,表示有文件
37     {
38         for(i=1;i<=Max(a,n);i++)//判断区间[1,max]是否连续?
39         {
40             if(Exist(a,n,i)==0)//如果有断层
41             {
42                 a[n]=i;        //将缺少的文件编号  添加到数组末
43                 return i;    //返回编号
44             }
45         }
46         a[n]=Max(a,n)+1;    //若区间连续无断层,编号加一,添加元素
47         return Max(a,n)+1;    //返回编号
48     }
49 }
50
51 int Delete(int a[],int n,int w)//删除
52 {
53     int i;
54     if(Max(a,n)==0)
55         return 0;    //若无文件,删除失败
56     else
57     {
58         if(Exist(a,n,w)!=0)//有文件,且存在编号
59         {
60             a[Exist(a,n,w)]=0;//将该编号文件删除
61             return 1;    //删除成功
62         }
63         return 0;//有文件,但不存在欲删除的文件编号,删除失败
64     }
65 }
66
67 int main()
68 {
69     int n,d,m,i,k=0;//n行数
70     int a[1500]={0};//a文件编号数组,初始化为0
71     char b[20],c[4];//b用于存放输入指令字符,c存放Delete n 指令的n
72
73     scanf("%d",&n);//输入行数
74     m=n;//新建操作含n++,防止影响循环判断
75     while(k++ <= m  && gets(b)!=NULL)//先判断再输入  当前行++  <=  总行数    输入不为空
76     {
77         if(strcmp(b,"New")==0)//strcmp(str1,str2),判断字符串是否相等,相等返回0
78         {
79             n++;//数组长度加一
80             printf("%d\n",New(a,n));//输出新建结果
81         }
82
83         else if(strncmp(b,"Delete",6)==0)//strncpy(str1,str2,n) 把str2从n位开始复制到str1
84         {
85             strncpy(c,b+7,strlen(b));//截取文件编号
86             int d=atoi(c);//atoi(str) 把字符串转换为整型
87             if(Delete(a,n,d)==1)
88                 printf("Successful\n");
89             else
90                 printf("Failed\n");
91         }
92     }
93     return 0;
94  } 

若想进一步优化,可以使用动态数组,也可以借鉴Java里set集合的思想。

内存数组不可能无限制增大,可以考虑限制值为0的数组元素个数。

原文地址:https://www.cnblogs.com/kaml8/p/10356069.html

时间: 2025-01-18 04:04:56

新建Microsoft Word文档的相关文章

算法提高 新建Microsoft Word文档

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 using namespace std; 6 const char s2[15] ="Successful"; 7 const char s3[15] ="Failed"; 8 int main() 9 { 10 int s[3000],n,ans; 11 c

ASP.NET里创建Microsoft Word文档

原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 本文是应在ASP.NET里创建Microsoft Word文档之需而写的。这篇文章演示了在ASP.NET里怎么创建和修改Microsoft Word文档。 [背景]      自动化是一种能让各种语言编写的(如:Visual Basic.NET或C#)应用程序在程序级别上控制其他应用程序。      对于Word的自动化允许你执行诸如创建新的文档,向文档里添加文本,邮件合并和格式化文档这些操作。在Word和其他

在 Microsoft Word 文档 中粘贴代码实现语法高亮的方法

1.下载notepad++. 2.将代码粘贴进notepad++,或者直接用notepad++打开. 3.点击顶栏 ===> 插件 ===> NppExport ===> cope HTML to clipboard. 4.然后在word中直接ctrl+v即可实现高亮.

velocity模板技术生成word文档

本文介绍采用velocity技术在Java中生成word文档的方法. 1.新建一个word文档,编辑内容如下: 2.将上述word文档另存为htm格式的文件 3.新建一个Java Project项目velocityTest,加入Velocity所依赖的Jar包velocity-dep-1.5-beta2.jar. 4.在src目录下新建一个velocity.vm文件,将第二步生成的velocity.htm用文本编辑器打开,复制内容到velocity.vm中.内容如下: <html xmlns:v

asp.net页面读取word文档内容显示

用asp.net实现对指定word文档内容的读取显示该如何实现?比如左边读取指定文件夹中所有的word文档,以文档的标题作为链接,点击文档标题则在右边某位置显示出该word文档中的内容(包括字体样式,图片显示等). 可以这样实现: 操作WORD配置说明 引入:Word的对象库文件“MSWORD.OLB”(word 2000为MSWORD9.OLB) 1.运行Dcomcnfg.exe 2.组件服务――计算机――我的电脑――DCOM配置――找到microsoft word 文档 3.点击属性 4.选

C# 给word文档添加水印

和PDF一样,在word中,水印也分为图片水印和文本水印,给文档添加图片水印可以使文档变得更为美观,更具有吸引力.文本水印则可以保护文档,提醒别人该文档是受版权保护的,不能随意抄袭.前面我分享了如何给PDF添加水印,有人问我如何给word文档添加水印,今天正好有空,就记录一下我是如何实现的. 步骤其实很简单,为了节省时间和简化代码规模,我从E-iceblue官网上下载了一个免费word组件,解压安装之后,参考官网的教程,创建项目,并按步骤对代码进行了简单的设置.下面就来看看如何通过这个组件实现上

c#中操作word文档-四、对象模型

转自:http://blog.csdn.net/ruby97/article/details/7406806 Word对象模型  (.Net Perspective) 本文主要针对在Visual Studio中使用C# 开发关于Word的应用程序 来源:Understandingthe Word Object Model from a .NET Developer's Perspective 五大对象 Application           :代表Microsoft Word应用程序本身 D

c# word文档的操作

参考https://blog.csdn.net/ruby97/article/details/7406806 Word对象模型  (.Net Perspective) 本文主要针对在Visual Studio中使用C# 开发关于Word的应用程序 来源:Understandingthe Word Object Model from a .NET Developer's Perspective 五大对象 Application           :代表Microsoft Word应用程序本身 D

支持Word文档和其他文件格式间的转换的控件Spire.Doc for .NET

Spire.Doc for .NET是e-iceblue公司推出的一款专门对Microsoft Word 文档进行操作的.NET类控件.这款控件的主要功能在于帮助开发人员轻松快捷地生成.编辑和查看Word文档.同时,开发人员还可以通过使用Spire.Doc for .NET 设置Word文档的格式,插入图片,表格,超链接等.Spire.Doc for .NET 最大的便利之处在于它不依赖于Microsoft Word以及任何其他第三方软件.只需将此款控件安装在您的电脑上,您就可以对word文档进