1 / 24
文档名称:

C语言第四次作业ppt课件.ppt

格式:ppt   大小:110KB   页数:24页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言第四次作业ppt课件.ppt

上传人:相惜 2021/4/19 文件大小:110 KB

下载得到文件列表

C语言第四次作业ppt课件.ppt

相关文档

文档介绍

文档介绍:C语言作业解析
——第三弹
寄语:本次作业比较变态。。涉及到一些初等的算法
1
最新版整理ppt
11级第四次作业---删数问题1.
【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S’。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数S’最小。 【输入形式】输入有两行: 。其中S最长可达240位。 。S、N均以非0数字开头。 【输出形式】输出有一行,是在S中删除N位后所得的最小数字S’。 【样例输入1】 178543 4 【样例输出1】13
【样例输入2】 1002 1 【样例输出2】002【样例说明】样例1中输入整数S=178543,N=4,要求在178543中删除4位,使剩下的数字最小。正确答案为S’ = 13。样例2中输入整数S=1002,N=1,删完一位后S’ = 002,而不是2,即2之前的0也必须输出。 【运行时限】程序一次运行的最长时间限制在15秒内,超出则认为程序错误。 【评分标准】该题要求输出一个大整数的各位数字。结果完全正确得20分,每个测试点4分。。
2
最新版整理ppt
本题解析:
这道题主要的障碍存在于两个方面: 。
读入的话简单的说就是将一个数以字符串的形式存储下来然后通过字符串处理对数字的每一位进行操作。
删除的方式比较精髓。这里介绍一个比较容易懂的方法:每次删除都搜索第一个第i位比第i+1位大的,然后把第i位删掉。重复m次就可以得到最优解了。
3
最新版整理ppt
#include <>
#include <>
int main()
{
char s[245];
int i,j,k;
int n,m;
scanf("%s",s);
scanf("%d",&m);
n=strlen(s);/*,就是求s的长度的意思*/
for (i=1;i<=m;i++)/*总共删m个数*/
{
for (j=0;j<=n-1;j++)/*从头到尾扫描*/
{
if (s[j]>s[j+1])/*如果这个数比下一个数大那么这个数要删掉*/
{
for (k=j;k<=n;k++)/*删除操作*/
s[k]=s[k+1];
break; /*删除结束退出扫描,继续删除下一个数*/
}
}
}
printf(“%s”,s); /*输出*/
}
4
最新版整理ppt
11级第四次作业---扩展字符2.
【问题描述】 编写一函数expand(s1,s2),用以将字符串s1中的缩记符号在字符串s2中扩展为等价的完整字符,例如将a-d扩展为abcd。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。在main函数中测试该函数:从键盘输入包含缩记符号的字符串,然后调用该函数进行扩展,输出扩展结果。 (教材 P63:Exercise 3-3)注意:
待扩展字符串中有可能包含空格,例如:a-d x-z应扩展成:abcd xyz。所以读入待扩展字符串时,应能够读入包含空格的字符串。
只要缩记符号-之后的字符比之前的字符的ASCII码值大,就要将它们之间的所有字符扩展出来,例如:Z-a之间的字符也要扩展出来;
特殊情况:a-b-c将被扩展为:abc。a-a将被扩展为:a-a。
   【输入形式】 从键盘输入包含扩展符的字符串 【输出形式】 输出扩展后的字符串 【输入样例】 a-c-u-B 【输出样例】 abcdefghijklmnopqrstu-B
5
最新版整理ppt
本题解析:
这个题目乍一看比较麻烦。。其实是这次作业中比较简单的题目之一。因为特殊的字符只有一个,那就是‘-’,只要判断好’-’这个题目就完成了。
这个方法比较朴素,就是用一个flag来表示前一个字符是不是‘-’如果不是‘-‘那么就输出这个字符,如果是的话就进行判断,判断这个字符跟’-‘前字符的关系,如果这个字符≤’-‘前字符,那就输出’-‘在输出这个字符。否则的话就从‘-’前字符到这个字符循环输出即可。
6