前段时间我在网上看到了一篇小有意思的文章,引用如下。

如果令:ABCDEFGHIJKLMNOPQRSTUVWXYZ 分别对应等于1、2、、、26 的数字,

那么Hardwork(努力工作)
H+A+R+D+W+O+R+K=8+1+18+4+23+15+18+11=98%

Knowledge(知识)
K+N+O+W+L+E+D+G+E=11+14+15+23+12+5+4+7+5=96%

Love(爱情)
L+O+V+E=12+15+22+5=54%

Luck(好运)
L+U+C+K=12+21+3+11=47%

(这些我们通常认为重要的东西往往并不是最重要的)
什么能使得生活变得圆满?

是Money(金钱)吗?…
不!M+O+N+E+Y=13+15+14+5+25=72%

是Leadership(领导能力)吗?…
不!L+E+A+D+E+R+S+H+I+P=12+5+1+4+5+18+19+9+16=89%

那么,什么能使生活变成100%的圆满呢?
每个问题都有其解决之道,只要你把目光放得远一点!

ATTITUDE(心态)
A+T+T+I+T+U+D+E1+20+20+9+20+21+4+5=100%
我们对待工作、学习的态度能够使我们的生活达到100%的圆满

然后我顺手转载到了我的校内日志上面。结果发现大家很感兴趣。我也很感兴趣除了attitude还有哪些词是加得到100的——不妨称之为“满分单词”,就先去找了个单词表——为了找到这玩意的txt版本我还专门去某一个下载网站注册了……然后写了个程序搜了下,发现还蛮多~如下:

accumulate
acknowledge
analysis
attitude
boundary
boycott
carpenter
clockwise
companion
congress
corridor
culture
delivery
discipline
elsewhere
excellent
fountain
hospital
inflation
interfere
irritate
lightning
likelihood
ornament
outset
pasture
personal
prevent
primary
pursue
quarter
reciprocal
renovate
restore
session
simulate
socialism
status
stress
telephone
telescope
therefore
thirty
towards
turkey
variety
whenever
whiskey
writing

有心的人可以发挥各种想像,写出与前文极其相似的励志山寨文——当然,有些词可以不写励志的,就看你的别有用心啦……比如boycott啊,stress啊,甚至是whiskey的广告啊~

其实我感兴趣的是这个程序里面的一句话:fscanf(fin,”%*[^\n]\n”);
因为我以前是学pascal的,所以我的C是半桶水……这句话的作用是将读入光标换行。我请教了WebberYoung,发现原来我不知道scanf里面还有%[]这样的物体存在……都怪谭浩强的教材没说……我在这里备忘一下,没学过的童鞋可以来看看,学过的童鞋请帮检查~
%[]和正则有点像,意即读入所有处于[]之中的字符——[]中的字符就可以理解为定义域,是一个集合。而其中的“^”则表示取其补集(注意,只有当^处于左括号后第一个字符时才表示取补集),即读入所有不处于[]中的字符。而”*”就是读入但是不交给变量处理,其实也有诸如%*d的用法。那么%*[^\n]就是读入所有非换行符并且不交给变量处理。后面跟着的\n就是换行符——那么这一句就是一直读,读掉一个换行符为止。
说得远点,[]中还有-来表示集合的起点和终点(ASCII码排序),比如[a-z]之类的。现在有个特殊问题:我要怎么匹配”]”?其实,把]作为第一个匹配字符即可,比如%[]a-z],但是如果要取补集就放在^的右边,比如%[^]0-9]。关于”-”还有一个问题:%[a-c-e-g]其实匹配了集合{a,b,c,e,f,g,-},也就是说当-的两边都是未使用的可用于作为起点与终点的字符时才有控制符功能。这样如果我们想要匹配-,只需放在最右边就好了。

WebberYoung还给了我一个MSDN链接,大家可以去围观。

我怎么觉得最后偏题了……

代码如下,我的读入方式是那个TXT文件所决定的:

#include<stdio.h>
int sum,i,j;
char temp,arr[30];
FILE *fin,*fout;
 
int main()
{
	fin=fopen("2009.txt","r");
	fout=fopen("100.txt","w");
	while (!feof(fin))
	{
		fscanf(fin,"%c",&temp);
		if (temp<'0' || temp>'9')
		{
			fscanf(fin,"%*[^\n]\n");
			continue;
		}
		while (temp<'a' || temp>'z')
			fscanf(fin,"%c",&temp);
		i=0;
		sum=0;
		while (temp>='a' && temp<='z')
		{
			arr[i]=temp;
			i++;
			sum+=temp-96;
			fscanf(fin,"%c",&temp);
		}
		if (sum==100)
		{
			for (j=0;j<i;j++)
				fprintf(fout,"%c",arr[j]);
			fprintf(fout,"\n");
		}
		fscanf(fin,"%*[^\n]\n");
		continue;
	}
	fclose(fin);
	fclose(fout);
	return 0;
}

本文由 严酷的魔王 创作,转载或引用前请联系我们

相关文章:

  1. NOIP实用算法 6.常用数学方法
  2. NOIP实用算法 7.分治
  3. NOIP实用算法 1.模拟方法
  4. 军训——我只写有意思的
  5. NOIP实用算法 3.搜索

标签:,

2009年8月16日 星期天

13条评论

留下您的足迹

2009 f(Program,Poet)=Programet.
Powered by Wordpress. Theme by Pharmacy Drugs and LastLeaf.