题目:编写一函数expand(s1,s2),用以将字符串s1中的缩记符号在字符串s2中扩展为等价的完整字符,例如将
a-d扩展为abcd。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。在main函数中测试该函数:从键
盘输入包含缩记符号的字符串,然后调用该函数进行扩展,输出扩展结果。
(教材 P63:Exercise 3-3)
【输入形式】
从
键盘输入包含扩展符的字符串
【输出形式】
输出扩展后的字符串
【输入样例】
a-c-u-B
【输出样例】
abcdefghijklmnopqrstu-B
【样
例说明】
扩展输入a-c-u为:abcdefghijklmnopqrstu,而B比u值小,所以无法扩展,直接输出。
我
的算法思路如下:
1、通过输入来获取待扩展字符
2、用三个char变量来存储连续的三个字符
3、对三个char变量进行分析,然
后输出
代码如下:
#include <stdio.h> //标准输入输出库
#include
<string.h> //用到保存字符串的函数gets(char *)
#include
<ctype.h> //基本类型判断头文件
#define N 10 //限制带扩展字符的宽度
int
print1(char,char,char); //带返回的打印,用返回数字来判断移进的字符数
void
print2(char,char,char); //根据最后三个带扩展字符来打印
void main()
{
int i,j; // i 存储输入的带扩展字符的个数,j作为循环不变量
char
first,second,third; //存储连续的三个字符
char s[N]; //存储所有待扩展字符的数组
gets(s); //存储所有待扩展字符
i=0;
while(s[i]!='\0')
i++;
if(i<3)
printf("%s",s);
//若总待扩展字符数小于3,则直接输出之
else
{
for(j=0;j<i-3;) //否则,先判断前面i-3个字符
{
first=s[j];
second=s[j+1];
third=s[j+2];
if(print1(first,second,third))
j=j+2;
//若能扩展,则移进两个字符
else
j++;
//若不能扩展,则只移进一个字符
}
print2(s[i-3],s[i-2],s[i-1]); //判断最后三个字符并打印之
}
}
int
print1(char first,char second,char third)
{
char i;
//若第二个字符为'-',并且第一个字符和第三个字符同型,并且第一个字符小于第三个字符,则输出
if(second=='-'&&(isdigit(first)&&isdigit(third)||isalpha(first)&&isalpha(third))&&first<third)
{
for(i=first;i<third;i++)
printf("%c",i);
return 1;
}
//否则,只输出第一个字符
printf("%c",first);
return 0;
}
void print2(char
first,char second,char third)
{
char i;
//若第二个字符为'-',并且第一个字符和第三个字符同型,并且第一个字符小于第三个字符,则输出
if(second=='-'&&(isdigit(first)&&isdigit(third)||isalpha(first)&&isalpha(third))&&first<third)
{
for(i=first;i<=third;i++)
printf("%c",i);
}
else
printf("%c%c%c",first,second,third); //直接打印最后三个不能扩展的字符
}
简
单的编写几个测试用例,发现均能通过测试,ok!Let's go to the next one!
分享到:
相关推荐
C语言刷题大作业——涵盖多种C语言题目C语言刷题大作业——涵盖多种C语言题目C语言刷题大作业——涵盖多种C语言题目C语言刷题大作业——涵盖多种C语言题目C语言刷题大作业——涵盖多种C语言题目C语言刷题大作业——...
资源已过时,现改为免费下载。
C语言题目C语言题目
C语言题目测试软件。。。。
计算机二级考试的一些编程题(大学生专用),C语言题目,java语言题目 计算机二级C语言题目 计算机二级Java语言题目 计算机二级考试的一些编程题(大学生专用),C语言题目,java语言题目 计算机二级C语言题目 ...
经典C语言题目及答案大全——初学者的最爱~~~~
C语言题目150道,经典的代码和算法都有,有较为详细的解答
C语言经典题目C语言经典题目C语言经典题目C语言经典题目C语言经典题目C语言经典题目C语言经典题目
C语言题目集锦C语言题目集锦
100条经典的C语言题目(附答案)
以前搜集的面试c语言题目,有用的可以拿去 基础性的,对于面试还是可以用
113道经典 c语言试题,原题和答案, 113道经典C语言题目解答
c语言经典编程题目及答案 一共60个例子
C语言竞赛题目大全,题目种类多,难度中等偏上,很有挑战性,做完所有题目,会很有成就感。
平时的C语言题目以及解析.zip平时的C语言题目以及解析.zip平时的C语言题目以及解析.zip平时的C语言题目以及解析.zip平时的C语言题目以及解析.zip
C语言面试题目汇总C语言面试题目汇总C语言面试题目汇总C语言面试题目汇总C语言面试题目汇总
这是一道c语言题目:工资与扣除奖金之间的关系题目答案
经典的50道C语言题目,又处于初学者理解并深入C语言
本文解释了一些C语言中比较难于理解和编程的题目,欢迎大家下载
113道C语言题目