学校oj的文件代码

又来到了久违的oj公开代码时间~

之前学校老师反映有代码抄袭情况,所以我一直拖到截止时间才发~
(而且这次做得比较慢)
废话不多说上题目:

问题 A: 实验12_1_初识ASCII码文件
时间限制: 1 Sec 内存限制: 128 MB
题目描述
已知一个ASCII码文件,文件名为dict.dic,该文件中只包含ASCII码中的字符,即可对应整数0—127。我们将ASCII码中的字符分为4类,第一类为大写字母“A—Z”、第二类为小写字母“a—z”、第三类为数字字符“0—9”、第四类为其他字符“!@#KaTeX parse error: Expected 'EOF', got '#' at position 535: …TUVWXYZ ~!@#̲%^&*()_+`1234567890- =][’;/.,<>?":{}|
则三个任务的输出分别如下: (注意:Task1、2、3等也需要输出)
Task1:
capital: 26
lowercase: 26
digit: 10
others: 35

Task2:
line: 3
43 characters in max line.
26 characters in min line.

Task3:
CAPITAL:
A:1
B:1
C:1
D:1
E:1
F:1
G:1
H:1
I:1
J:1
K:1
L:1
M:1
N:1
O:1
P:1
Q:1
R:1
S:1
T:1
U:1
V:1
W:1
X:1
Y:1
Z:1
LOWERCASE:
a:1
b:1
c:1
d:1
e:1
f:1
g:1
h:1
i:1
j:1
k:1
l:1
m:1
n:1
o:1
p:1
q:1
r:1
s:1
t:1
u:1
v:1
w:1
x:1
y:1
z:1

样例输入 Copy
1
样例输出 Copy
Task1:
capital: 26
lowercase: 26
digit: 10
others: 35

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void count();//执行任务一:统计字符数量
void countLine();//执行任务二:统计行数、行最大长度、行最小长度
void countCharacter();//执行任务三:输出具体的大小写字母的统计信息,每行一个字母 

int main(void)
{
	int task;
	scanf("%d", &task);
	switch(task)
	{
		case 1: count(); //执行任务一:统计字符数量 
			break;	
		case 2: countLine();//执行任务二:统计行数、行最大长度、行最小长度
			break;
		default:countCharacter();//执行任务三:输出具体的大小写字母的统计信息,每行一个字母 
	}
	return 0;
}

void count()//执行任务一:统计字符数量
{
	int capital, lowercase, digit, others, ch;
	capital = lowercase = digit = others = 0;	
	FILE *fp = fopen("dict.dic", "r");//确立一个读文件的指针 
	ch = fgetc(fp);
	while(ch!=EOF)
	{
		if(ch>='A' && ch<='Z') capital++;
		else if(ch>='a' && ch<='z') lowercase ++;
		else if(ch>='0' && ch<='9') digit ++;
		else others++;
		ch = fgetc(fp);//将指针移到下一个字符 
	}
	fclose(fp);//关闭文件
	//下面进行打印 
	printf("Task1:\n");
	printf("capital: %d\n", capital);
	printf("lowercase: %d\n", lowercase);
	printf("digit: %d\n", digit);
	printf("others: %d\n", others);
}
void countLine()//执行任务二:统计行数、行最大长度、行最小长度
{
	int maxline, minline, line, ch, count;
	maxline = -1;
	minline = 2147483647;
	line = 0;
	FILE *fp = fopen("dict.dic", "r");
	while(ch!=EOF)
	{
		line ++;
		count = 0;
		ch = fgetc(fp);//读取这行的第一个字符 
		while(ch!=10 && ch!=EOF) //一直读到这一行的末尾 
		{
			count ++;
			ch = fgetc(fp);
		}
		if(count>maxline) maxline = count; 
		if(count<minline) minline = count; 
	}
	fclose(fp);//关闭文件
	//下面进行打印 
	printf("Task2:\n");
	printf("line: %d\n", line);
	printf("%d characters in max line.\n", maxline);
	printf("%d characters in min line.\n", minline);
}
void countCharacter()//执行任务三:输出具体的大小写字母的统计信息,每行一个字母
{
	int i, ch;
	int capital[30], lowercase[30];
	memset(capital, 0, sizeof(capital));
	memset(lowercase, 0, sizeof(lowercase));
	FILE *fp = fopen("dict.dic", "r");
	ch = fgetc(fp);
	while(ch!=EOF)
	{
		if(ch>='A' && ch<='Z') capital[ch-'A'+1]++;
		else if(ch>='a' && ch<='z') lowercase[ch-'a'+1] ++;
		ch = fgetc(fp); 
	}
	fclose(fp);//关闭文件
	//下面进行打印
	printf("Task3:\n");
	printf("CAPITAL:\n");
	for(i=1;i<=26;i++)
	{
		printf("%c:%d\n", 'A'-1+i, capital[i]);
	}
	printf("LOWERCASE:\n");
	for(i=1;i<=26;i++)
	{
		printf("%c:%d\n", 'a'-1+i, lowercase[i]);
	}
}

问题 B: 实验12_6_初识二进制文件
时间限制: 1 Sec 内存限制: 128 MB
提交: 1463 解决: 404
[提交] [状态] [命题人:admin]
题目描述
常用的数据类型有字符型(char 型)、短整型(short 型)、整型(int 型)、长整型(long 型)、拓展长整型(long long 型)、单精度浮点型(float 型)、双精度浮点型(double 型)。问题围绕着数据类型与二进制文件展开。现有一个二进制文件,文件名为dict.dic,生成这个文件的C语言代码大概是这样的:
变量如下:
char a,aa[5];//注意这里数组aa为正常使用的字符串,所以会包含字符’\0’,它不需要输出
short b,bb[5];
int c,cc[5];
long d,dd[5];
long long e,ee[5];
float g,gg[5];
double h,hh[5];
int i ;

写入的代码段是这样:
fwrite(&a,sizeof(a),1,fp);
fwrite(&b,sizeof(b),1,fp);
fwrite(&c,sizeof©,1,fp);
fwrite(&d,sizeof(d),1,fp);
fwrite(&e,sizeof(e),1,fp);
fwrite(&g,sizeof(g),1,fp);
fwrite(&h,sizeof(h),1,fp);
fwrite(aa,sizeof(a),5,fp);
fwrite(bb,sizeof(b),5,fp);
fwrite(cc,sizeof©,5,fp);
fwrite(dd,sizeof(d),5,fp);
fwrite(ee,sizeof(e),5,fp);
fwrite(gg,sizeof(g),5,fp);
fwrite(hh,sizeof(h),5,fp);

这个代码段被连续执行了5次。当然每次写入的数据是不同的。

你的任务是从dict.dic中按照输入的顺序,读出7种单独变量,分别存到对应类型的变量中,假设为a、b、c、d、e、g、h。再从该文件中读出7个长度为5的数组,分别存到aa[5]、bb[5]、cc[5]、dd[5]、ee[5]、gg[5]、hh[5]中。最后将它们的值全部输出到屏幕上。
注意,所有变量均不会超过其存储范围。

内容提示:在本题对文件的操作内容中,会用到C语言文件操作函数,其打开文件的方式,如下:
1.FILE *fp=fopen(“file.dat”,“rb”);//"rb"为以只读方式打开二进制文件。
2.fread的样例代码:
#include<stdio.h>
int main()
{
int c,cc[5]={0};
FILE *fp=fopen(“file.dat”,“rb”);
fread(&c,sizeof(int),1,fp); //从fp指向的文件中读出一个整型变量
fread(cc,sizeof(int),5,fp); //从fp指向的文件中读出一个长度为5的整型数组。
fclose(fp);
return 0;
}
输入
为一个整数,只可能是1,2,3,4,5之一。
输出
将dict.dic中的相关内容输出到屏幕上,如果输入是1,则输出那段代码第一次写入的内容,如果输入是2,则输出那段代码第二次写入的内容,依此类推。
形式如样例。
样例输入 Copy
1
样例输出 Copy
X
1234
2000000000
2000000000
500000000000000
1.234500
9.876543
XXX
1234 1234 1234 1234 1234
2000000000 2000000000 2000000000 2000000000 2000000000
2000000000 2000000000 2000000000 2000000000 2000000000
500000000000000 500000000000000 500000000000000 500000000000000 500000000000000
1.234500 1.234500 1.234500 1.234500 1.234500
9.876543 9.876543 9.876543 9.876543 9.876543

其实这个题真的很暴力…先附上我一开始用了全局变量的代码吧,但是学校老师明令禁止全局变量,我只能疯狂设计函数端口了…嘤嘤嘤

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//下面定义题目所需变量,为了方便打印设置为全局变量 
char a, aa[5];
short b, bb[5];
int c, cc[5];
long d, dd[5];
long long e, ee[5];
float g, gg[5];
double h,hh[5];

void freadFile(int n);//读取n次二进制文件 
void printFile();//打印读取结果 

int main()
{
	int n;
	scanf("%d", &n);
	freadFile(n); 
	printFile();
	return 0;
}
void freadFile(int n)
{ 
	int i;
	FILE *fp;
	fp = fopen("dict.dic", "rb");//以只读方式打开二进制文件 
	for(i=1;i<=n;i++)//读取到第n次的文件 
	{
		fread(&a, sizeof(char), 1, fp);
		fread(&b, sizeof(short), 1, fp);
		fread(&c, sizeof(int), 1, fp);
		fread(&d, sizeof(long), 1, fp);
		fread(&e, sizeof(long long), 1, fp);
		fread(&g, sizeof(float), 1, fp);
		fread(&h, sizeof(double), 1, fp);
		fread(aa, sizeof(char), 5, fp);
		fread(bb, sizeof(short), 5, fp);
		fread(cc, sizeof(int), 5, fp);
		fread(dd, sizeof(long), 5, fp);
		fread(ee, sizeof(long long), 5, fp);
		fread(gg, sizeof(float), 5, fp);
		fread(hh, sizeof(double), 5, fp);
	}
	fclose(fp);//关闭文件 
}
void printFile()//打印读取结果 
{
	int i;
	//下面进行打印 
	printf("%c\n", a);
	printf("%hd\n", b);
	printf("%d\n", c);
	printf("%ld\n", d);
	printf("%lld\n", e);
	printf("%f\n", g);
	printf("%lf\n", h);
	printf("%s\n", aa);
	for(i=0;i<5;i++) printf("%hd ", bb[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%d ", cc[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%ld ", dd[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%lld ", ee[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%f ", gg[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%lf ", hh[i]);
	printf("\n");
} 

下面是疯狂设计端口的版本…

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void freadFile(int n, char *a, char *aa, short *b, short*bb, int *c, int *cc, long *d, long *dd, long long *e, long long *ee, float *g, float *gg, double *h, double *hh);//读取n次二进制文件 
void printFile(char *a, char *aa, short *b, short*bb, int *c, int *cc, long *d, long *dd, long long *e, long long *ee, float *g, float *gg, double *h, double *hh);//打印读取结果 

int main(void)
{
	char a, aa[5];
	short b, bb[5];
	int c, cc[5];
	long d, dd[5];
	long long e, ee[5];
	float g, gg[5];
	double h,hh[5];
	int n;
	scanf("%d", &n);
	freadFile(n, &a, aa, &b, bb, &c, cc, &d, dd, &e, ee, &g, gg, &h, hh); 
	printFile(&a, aa, &b, bb, &c, cc, &d, dd, &e, ee, &g, gg, &h, hh);
	return 0;
}
void freadFile(int n, char *a, char *aa, short *b, short*bb, int *c, int *cc, long *d, long *dd, long long *e, long long *ee, float *g, float *gg, double *h, double *hh)//读取n次二进制文件 
{ 
	int i;
	FILE *fp;
	fp = fopen("dict.dic", "rb");//以只读方式打开二进制文件 
	for(i=1;i<=n;i++)//读取到第n次的文件 
	{
		fread(a, sizeof(char), 1, fp);
		fread(b, sizeof(short), 1, fp);
		fread(c, sizeof(int), 1, fp);
		fread(d, sizeof(long), 1, fp);
		fread(e, sizeof(long long), 1, fp);
		fread(g, sizeof(float), 1, fp);
		fread(h, sizeof(double), 1, fp);
		fread(aa, sizeof(char), 5, fp);
		fread(bb, sizeof(short), 5, fp);
		fread(cc, sizeof(int), 5, fp);
		fread(dd, sizeof(long), 5, fp);
		fread(ee, sizeof(long long), 5, fp);
		fread(gg, sizeof(float), 5, fp);
		fread(hh, sizeof(double), 5, fp);
	}
	fclose(fp);//关闭文件 
}
void printFile(char *a, char *aa, short *b, short*bb, int *c, int *cc, long *d, long *dd, long long *e, long long *ee, float *g, float *gg, double *h, double *hh)//打印读取结果 
{
	int i;
	//下面进行打印 
	printf("%c\n", *a);
	printf("%hd\n", *b);
	printf("%d\n", *c);
	printf("%ld\n", *d);
	printf("%lld\n", *e);
	printf("%f\n", *g);
	printf("%lf\n", *h);
	printf("%s\n", aa);
	for(i=0;i<5;i++) printf("%hd ", bb[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%d ", cc[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%ld ", dd[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%lld ", ee[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%f ", gg[i]);
	printf("\n");
	for(i=0;i<5;i++) printf("%lf ", hh[i]);
	printf("\n");
} 

问题 C: 实验12_4_过滤注释
时间限制: 1 Sec 内存限制: 128 MB
题目描述
C语言的注释分为两种,第一种:在一行源代码中“//”后的内容为注释内容。第二种:“/”与“/”之间的内容为注释内容。第三种:程序中只出现了“/”,没有“/”与之对应,那么将“/”后的全部内容都要过滤掉。注意,只要是注释内容,那么注释内容中的字符应该全部忽略,即不起任何的作用。例如“/”与“/”之间如果再有“//”,那么“//”不应起作用;如果“//”再有“/”,那么“/”也不应起作用。
你的任务是先打开一个名字为dict.dic的文本文件,该文件中前5行每行为1个整数,从第6行开始为5段C语言的源代码。那5个数字代表这5段源代码结束的行数,比如如果第一行的整数为20,第二行的整数为60,则表示从第6行到第20为第一段代码,从第21行到第60为第二段代码。然后根据输入要求将源代码中所有注释过滤掉。
在本过滤注释系统中,你可以忽略源文件中双引号导致“//”、“/
”、“/”失去作用的情况,即只要“//”、“/”、“/”不是注释内容,在任何情况下都起作用。
输入
只可能是1,2,3,4,5之一
输出
输入为1则输出第一段代码过滤后的结果,输入为2则输出第二段代码过滤后的结果,依此类推。
样例输入 Copy
1
样例输出 Copy
如果第一段代码是这样:
/

@Author: BUPT
@Date: 2010 8 26
*/

#include<stdio.h>

int main()
{
int a = 10 , b = 2 , c ;
c = a / b ; //I just want to test ‘/’
printf(“I love programming C.\n”) ; //“printf” is a useful function /*
printf(“I hope you love it too!\n”) ;
/*
//C is not always hard , if you love it , it will not treat you rough.
*/
return 0 ;
}

则输出是这样:

#include<stdio.h>

int main()
{
int a = 10 , b = 2 , c ;
c = a / b ;
printf(“I love programming C.\n”) ;
printf(“I hope you love it too!\n”) ;

    return 0 ;

}

我一开始憨憨地把“如果输入是这样:”全原样输出了…后来被同学提示那只是范例…
一开始方向全部偏了,导致有巨多的讨论情况,情况之复杂,我处理不来(*  ̄︿ ̄)
老师看不下去了就提示这道题要用自动机的思想,即读入一个处理一个,哇一下子茅塞顿开,代码也简化了好多好多!因为很多情况都不要考虑了,我愣生生从原来的150行改到90行(简洁才是王道!)

#include<stdio.h>
#include<string.h>
void readNumber(int *a, FILE **fpPtr);//读取前五个数字 
void findFirstLine(int lineNumber, FILE **fpPtr);//找到要过滤的代码第一行 
void filterNote(int startline, int endline, FILE **fpPtr);//过滤注释 
int main(void)
{
	int n, a[10];
	FILE *fp;
	memset(a, 0, sizeof(a));
	scanf("%d", &n);
	fp = fopen("dict.dic", "r");//打开文件 
	readNumber(a, &fp);
	findFirstLine(a[n-1]+1, &fp);
	filterNote(a[n-1]+1, a[n], &fp); 
	fclose(fp);//关闭文件 
	return 0;
}
void readNumber(int *a, FILE **fpPtr)//读取前五个数字 
{
	int ch, tem, i;
	a[0] = 5;//把第一个上面一行定为5,避免讨论 
	for(i=1;i<=5;i++)
	{
		ch = fgetc(*fpPtr);
		tem = 0;
		while(ch != '\n')//这个while是为了避免出现数字不止一位的情况 
		{
			tem = tem * 10 + ch - '0';
			ch = fgetc(*fpPtr);	
		} 
		a[i] = tem;
	}
}
void findFirstLine(int lineNumber, FILE **fpPtr)//找到要过滤的代码第一行 
{
	int count, ch;
	count = 6;
	while(count < lineNumber)
	{
		ch = fgetc(*fpPtr);
		while(ch!='\n' && ch!=EOF)
			ch = fgetc(*fpPtr);
		count ++;
	}
}
void filterNote(int startline, int endline, FILE **fpPtr)//过滤注释 
{
	int count, flag;
	char before, after;//before和after代表前后两个字符 
	count = startline;
	before = fgetc(*fpPtr);
	after = fgetc(*fpPtr);
	while(count<=endline)
	{
		flag = 1;
		if(before=='/' && after == '/')//遇到含“//”的情况 
		{
			while(after != EOF && after != '\n')//一直读到这一行的末尾 
			{
				before = after;
				after = fgetc(*fpPtr);
			}
			flag = 0;
		}
		if(before=='/' && after =='*')//遇到含“/*”的情况 
		{
			while(count<=endline)
			{
				if(before=='*' && after =='/')//如果找到了“*/” 
				{
					flag = 0;
					before = after;
					after = fgetc(*fpPtr);
					break;
				}				
				before = after;
				after = fgetc(*fpPtr);
				if(before =='\n' || before ==EOF) count ++;
			}
			if(count>endline) return ;//如果一直读到结束都没有遇到“*/”直接结束过滤 
		}  
		if(flag) printf("%c", before);
		before = after;
		after = fgetc(*fpPtr);
		if(before =='\n' || before ==EOF) count ++;//遇到换行符,行数加一 
	}
}


问题 D: 实验12_A_和谐词汇
时间限制: 1 Sec 内存限制: 128 MB
题目描述
互联网中存在许多的不和谐词汇,在我们浏览互联网的时候,搜索引擎经常会出现提示信息“根据相关法律法规和政策,部分搜索结果未予显示”。小王同学也想制作一个自己的屏蔽词库,这样他就可以将自己不喜欢的词汇从文件中换成别的字符了。屏蔽词库是一个ASCII码文件,这个文件中只含有单词,每个单词占一行,每个单词中只可能有大小写字母与空格。题目中和谐词库的文件名为dict.dic。(屏蔽词库中每个词汇长度小于10,屏蔽词汇个数不超过10.)
你的任务是将输入中的所有和谐词库中的词语全部替换成“!@# %^&*”(按住键盘shift和数字1至8),然后输出。这里要注意,如果一个词语中包含屏蔽词汇,那么只将屏蔽词汇替换,例如“hehasAAA”被处理后将得到“he!@# %^&*AAA”,注意屏蔽词汇区分大小写,即aaa与AAA是两个不同的单词,为了使问题简化,屏蔽词汇中不会出现互相包含的情况,如“xabcx”与“abc”不会同时出现在同一个屏蔽词库中。由于小王同学很不擅长文件操作,所以他希望你能帮他制作这个屏蔽词汇程序。

输入
若干长度小于110的字符串。
输出
添加屏蔽词后的结果。
样例输入 Copy
The night falls gently. And you are not here. I missing you more and more and I start getting worried as
I stare at the door just waiting for you to surprise me with your arrival at any moment.
Sweet delusion… you are so far away right now that all I can ask for is that time moves faster…

样例输出 Copy
如果屏蔽词库如下:
is
good
are
the
ha ha
some
get
has
more
bad
则输出:

The night falls gently. And you !@# %^&* not here. I m!@# %^&sing you !@# %^&* and !@# %^& and I start !@#KaTeX parse error: Expected 'EOF', got '#' at position 27: …rried as I st!@#̲%^&* at !@# %^&* door just waiting for you to surpr!@# %^&e me with your arrival at any moment.
Sweet delusion… you !@# %^&* so far away right now that all I can ask for !@# %^&
that time

我又用了全局变量…哭唧唧
这个真的不好改…疯狂改端口也不行…

#include<stdio.h>
#include<string.h>
char list[15][15];
int readList();//读取屏蔽词汇库
void mediateVocabulary(int line);//和谐词汇 
void judge(char *passage, int line);//判断目前的词要不要被和谐,并执行和谐过程 
int main(void)
{
	int line;
	line = readList();//读取屏蔽词汇库 
	mediateVocabulary(line);//和谐词汇 
	return 0;
}
int readList()//读取屏蔽词汇库
{
	int line, i;
	line = 0;
	FILE *fp;
	fp = fopen("dict.dic", "r");
	while(fgets(list[line], 10, fp)) line++;// 用读一行的方式读取文件 
	//由于会多读一个换行符,所以巧妙地把最后一个符号换成'\0' 
	for(i=0;i<line;i++)
		list[i][strlen(list[i])-1] = '\0';
	fclose(fp);
	return line;
}
void mediateVocabulary(int line)//和谐词汇 
{
	int i;
	char passage[120];
	while(gets(passage))
	{
		for(i=0;i<strlen(passage);i++)
		{
			judge(passage+i, line);//把当前这一行传递给judge 
		}	
		printf("%s\n", passage);
	}
}
void judge(char *passage, int line)//判断目前的词要不要被和谐,并执行和谐过程
{
	char tem[120];
	int i, j;
	for(i=0;i<line;i++)
	{
		for(j=0;j<strlen(list[i]);j++)
			if(passage[j]!=list[i][j]) break;//只要不符合就中断 
		if(j==strlen(list[i]))
		{
			strcpy(tem, passage+strlen(list[i]));
			strcpy(passage, "!@#$%^&*");
			strcat(passage, tem);
		}
	}
}

然后我成功地把全局变量改了(真香)
附上一点小复习:传递二维数组的方式
1、形参给出第二维的长度。
void func(int n, char str[ ][5] )
此时其实传递的是指针,直接在数组上进行更改
2、形参声明为指向数组的指针。
void func(int n, char (*str)[5] )
3、形参声明为指针的指针。
void func(int n, char **str)
在函数中使用传参过来的二维数组(指针)进行数组取值的时候不能使用(array[i][j])这种形式来取值。应该将二维数组看成一个一维数组,使用array[i * j + j]这种形式来进行取值。

上代码:

#include<stdio.h>
#include<string.h>

int readList(char list[][15]);//读取屏蔽词汇库
void mediateVocabulary(int line, char list[][15]);//和谐词汇 
void judge(char *passage, int line, char list[][15]);//判断目前的词要不要被和谐,并执行和谐过程 

int main(void)
{
	char list[15][15];
	int line;
	line = readList(list);//读取屏蔽词汇库 
	mediateVocabulary(line, list);//和谐词汇 
	return 0;
}
int readList(char list[][15])//读取屏蔽词汇库
{
	int line, i;
	line = 0;
	FILE *fp;
	fp = fopen("dict.dic", "r");
	while(fgets(list[line], 10, fp)) line++;// 用读一行的方式读取文件 
	//由于会多读一个换行符,所以巧妙地把最后一个符号换成'\0' 
	for(i=0;i<line;i++)
		list[i][strlen(list[i])-1] = '\0';
	fclose(fp);
	return line;
}
void mediateVocabulary(int line, char list[][15])//和谐词汇 
{
	int i;
	char passage[120];
	while(gets(passage))
	{
		for(i=0;i<strlen(passage);i++)
		{
			judge(passage+i, line, list);//把当前这一行传递给judge 
		}	
		printf("%s\n", passage);
	}
}
void judge(char *passage, int line, char list[][15])//判断目前的词要不要被和谐,并执行和谐过程
{
	char tem[120];
	int i, j;
	for(i=0;i<line;i++)
	{
		for(j=0;j<strlen(list[i]);j++)
			if(passage[j]!=list[i][j]) break;//只要不符合就中断 
		if(j==strlen(list[i]))
		{
			strcpy(tem, passage+strlen(list[i]));
			strcpy(passage, "!@#$%^&*");
			strcat(passage, tem);
		}
	}
}
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值