题目
给定文件filein.txt按照要求输出fileout.txt. 输入:无空格的字符串 输出:将filein.txt删除输入的字符串(不区分大小写),输出至fileout.txt。每行中的空格全部提前至行首。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
bool IsSame(char a,char b)//判断是否是同类型的字符 如同为小写字母或大写字母或数字
{
if(a>='a'&&a<='z'&&b>='a'&&b<='z'||a>='A'&&a<='Z'&&b>='A'&&b<='Z'||a>='0'&&a<='9'&&b>='0'&&b<='9')
return true;
return false;
}
int Judge(char a)//判断是那类型的字符,如小写字母或大写字母或数字
{
if(a>='a'&&a<='z')//小写字母为1
return 1;
if(a>='A'&&a<='Z')//大写字母为2
return 2;
if(a>='0'&&a<='9')//数字为3
return 3;
return 0;
}
void Print(char a,char b)
{
if(Judge(a)==1)//补充小写字母
{
char c='a';//字符C用于输出补充的字符
int i;
for(i=0;i<26;i++)//将字符C递增到A的下一个字母 即'-'前面的字母的顺次下一个字母
{
if(c<=a)
c++;
}
while(c>a&&c<b)
{
printf("%c",c);//依次输出补充的内容
c++;
}
}
if(Judge(a)==2)//补充大写字母
{
char c='A';
int i;
for(i=0;i<26;i++)
{
if(c<=a)
c++;
}
while(c>a&&c<b)
{
printf("%c",c);
c++;
}
}
if(Judge(a)==3)//补充数字
{
char c='0';
int i;
for(i=0;i<10;i++)
{
if(c<=a)
c++;
}
while(c>a&&c<b)
{
printf("%c",c);
c++;
}
}
}
int main()
{
char str[1000];
gets(str);
/* char ch; //至今不会字符串如何循环输入并输出结果。。。 弄了半天没弄出来。。。
int len=0;
while((ch=getchar())!=EOF)
{
str[len++]=ch;
}*/
int len=strlen(str);
int i;
for(i=0;i<len;i++)
{
if(str[i]=='-')//遇到'-'开始补充字符
{
if(IsSame(str[i-1],str[i+1]))//判断是否是同类型的字符 如同为小写字母或大写字母或数字
{ //若是同类型 则调用输出函数输出一波
Print(str[i-1],str[i+1]);
}
else //否则原样输出
{
printf("%c",str[i]);
}
}
else//没遇到'-'则原样输出
{
printf("%c",str[i]);
}
}
printf("\n");
return 0;
}