没事干我就爱吃包子吧 关注:66贴子:8,868
  • 0回复贴,共1
#include<stdio.h>
#include<iostream>
#include<fstream>
using namespace std;
int fuck_it(char *s){
int i,j,length=0,con=1,x;//length为字符串长度 con为符号正确时的情况 定义变量x记录-号的位置 处理时用到 初始化con=1是当s为单词时处理方法和+号相同
//ofstream cout("testouttt.txt");
if (s[0]=='\n') { cout<<endl; return 0;}
for (i=0;s[i]!='\0';i++){//c++输入个字符串会在末位自动加‘\0’表示结尾 所以可以用此来判断字符数组的长度
length++;
if (s[i]=='+'||s[i]=='-'||s[i]=='*'||(s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){//如果不出现非法字符
if (s[i]=='+') { con=1; }
if (s[i]=='-') { con=2; x=i;}
if (s[i]=='*') { con=3; }
}
else return(-1);
}
switch (con)
{
case 1://加号情况
i=0;
while (s[i]!='\0') {//此处也可用for 1到length循环
if (s[i]!='+') {//忽略加号
if (s[i]>='A'&&s[i]<='Z') { s[i]+=32; cout<<s[i];}//大写转换为小写
else cout<<s[i];
}
i++;
}
break;// 每个case后都应被break
case 2://减号情况
for (i=0;i<x;i++){//先处理到减号之前
int flag=0;
for (j=x+1;j<=length;j++){
if (s[i]==s[j]) flag=1;}//内层循环判断正在输出的s【i】是否被‘减去’,flag为标志
if (flag==0) cout<<s[i];
}
break;
case 3:
for (i=0;i<length;i++){
if (s[i]=='*') cout<<'s';
else {
if (s[i]>='A'&&s[i]<='Z') { s[i]+=32; cout<<s[i];}
else cout<<s[i];}
}//和加号大同小姨
break;
case -1:
return (-1);
break;
}
cout<<' ';
}
int function1(){
char s[100],ch;
int i=0;
FILE *fp;
ifstream file_in("test9.txt");
fp=fopen("test9.txt","r");
do{
i=0;
int nflag=0;
while ((ch=fgetc(fp))!=' ') {
if (ch=='\n') { nflag=1; break;}
if (ch==EOF) return 0;
s[i]=ch;
i++;
}
s[i]='\0';
fuck_it(s);
if (nflag) cout<<endl;
} while (ch!=EOF);
}
int main(){
function1();
while(1);
}


IP属地:北京1楼2014-11-30 01:31回复