2005-12
26

“长假”归来

By xrspook @ 21:11:56 归类于: 烂日记

回来了,终于回来了,上个星期三走人,现在终于归来了。好像好久都没有上网的样子,好像要下载的都落下了好多。但我回来绝对不是为了这些,我还有好多要复习的没有复习,时间不多了,下个星期就要考试,然后结束这个学期……

近段日子我一直在验证着如此一句话——不要想那么多,做就好了,上天早就为你做好决定了。很多很多我前思后想的事情最终原来远没有我想的那么复杂,以为很难做出的决定其实几秒钟就好了,你根本就不用想,把你所想的做出来就好。人生说来很难,其实也好容易。

我老在找National Geographic Channel今年拍摄的Unlocking Da Vinci’s Code我找了好久,也下载了好多,已经下载了2个都接近700MB的文件,始终不是我想要的,绕了好多的弯路,最后今天居然在eMule自己的搜索那里找到了。我在各大搜索网站都找不到,居然就那么轻易的在eMule上找着了,这次应该不会错,不是西文了,不是别的东西了,应该是我想要的英文原版Unlocking Da Vinci’s CodeNational Geographic ChannelUnlocking Da Vinci’s Code。转了那么的一个大圈,最终居然回到了最初的地方,最简单的方法居然是最后才发现。人就是这样,往往是后悔的时候才知道自己做得不好,做错了,但人间是绝对不会有后悔药的。

ed2k://|file|National%20Geographic%20-%20Unlocking%20Da%20Vinci’s%20Code%20-%20The%20Full%20Story.avi|731754496|6B4AF536C73E571939462DB271D9CF0A|/

长假归来,我该收心养性了。

2005-12
25

圣诞·韩剧·C

By xrspook @ 18:00:17 归类于: 烂日记

今天是圣诞,但今天不是被兴奋的圣诞音乐叫醒,也没有礼物等着我,居然是被“傻婆”的电话硬把我从周公那里拖出来了,连在家里她也不放过我,我真的好后悔为什么我给她写电话的时候不胡扯一个,那么我就不用烦了,连在家里我都不安全,我该到那里啊!?和萨达姆在一起吗?还是找个窟窿跳下去,然后叫人家盖上点土。她怎么可以那么烦!!!!简直就不当我是人,人的忍耐能力是有限度的,迟早我无法再忍的时候要好好教训她一顿。对女生,我可是作得出心狠手辣的,想想当年的“蕾姨”就知道了,不过相比之下“蕾姨”比“傻婆”要好很多,起码“蕾姨”不会死缠烂打,而“傻婆”比502还要厉害,只要粘上了就很难摆脱。真不明白她的脸皮怎么就可以这么厚。无论如何她的EQ 一定十分有问题,当然她的IQ也不见得多么的厉害!天啊!我也不知道是怕她还是恨她,又怕又恨,因怕而恨吧,无奈……她今天早上居然打我手机叫我要借什么什么给她,我不应该随便乱借固话,不过我发誓,以后看到那个电话是无论如何也不会借的,我会马上按掉。第一次,今天是第一次,我先给她个初始化,以后这个电话就会永远进入黑名单!!!!

韩剧,妈今天又在疯狂地看韩剧,一共看了4集,她的疯癫绝不下于我。于是就不得不忍受那些韩剧的对话和音乐不断冲击我的耳膜,而自己则在痛苦地做C语言。

C语言,我已经努力了好多天。我已经告诉过自己,今天不能再做了,要复习其他的科目,但到现在为止,我除了做C,还是做C。今天要啃的是指针,简直就好像到了地域,自己是白痴之中的白痴!唯一觉得自己有进步的就是终于几乎90%认出编译时出现的error和warning,当然,自己一次成功的几率也大了不少。现在,已经结束了,终于搞定了那本实验书。我发誓,吃过饭后我一定绝对绝对不碰那个C了,我要给时间别的,我发誓!我发誓!

我也要吃饭了……

2005-12
24

程序渐进

By xrspook @ 22:16:06 归类于: 烂日记

C不是一天就能攻陷的,要经过不懈加不懈的努力,甚至要来个for(i=0;;i++)无限循环来达成。于是今天我就从1:00AM不知不觉努力到4:00AM,在Turbo C的世界里我的右下脚没有时间,我的桌面也从来没有钟,于是努力就在不知不觉中进行着。

今天凌晨,当我正要睡觉的时候来了道如此的题目:
某班有5个学生(含学号sno,姓名name),三门课(English, C, Math)。分别编写4个函数实现一下要求:
1. 求各门课的平均分。
2.找出有两门以上课程不及格的学生,并输入其学号、姓名和不及格课程的成绩。(我觉得这句话有歧义,到底是只3门课都不及格的人呢还是指那些在English,C和Math有2门或以上不及格的人呢?莫名其妙。于是我就在完工之后写多了个函数来满足编者两个不清不楚的要求)
3.找出三门课平均成绩85到90分的学生,并输出其学号和姓名。
4.找出每门课的最高分所对应的学生学号、姓名和分数。
5.主函数输入5个学生的成绩,然后调用上述函数输出结果。

这个题目看上去很庞大,但不难,于是我就先写了主函数,然后用/**/把没有用到的函数先注释起来,一个一个函数去攻陷。里面用到的知识都很全面,但我都会。要筛选就是要有条件,把符合条件的找出来,要算平均分其实就是要先算总分,一切都思路清晰,这里运用得最多的就是循环语句,所以如果循环语句你不过关你就不用活了。这是这个单元的一个函数编程应用题,它的难度系数是5,我是第一次没有碰什么大钉子就搞定5的题目。

char a[5][5]={"No.1","No.2","No.3","No.4","No.5"};
char b[5][5]={"stua","stub","stuc","stud","stue"};
int i;
ave(int score[])
{
  int sum=0;
  for(i=0;i<5;i++)
    sum+=score[i];
  return(sum/5);
}
f2a(int c[],int d[],int e[])
{
  printf("\n\n /*Three Courses in Red*/");
  for(i=0;i<5;i++)
    if(c[i]<60&&d[i]<60&&e[i]<60)
      printf("\n %s %s English:%d, C program:%d, Math:%d",a[i],b[i],c[i],d[i],e[i]);
}
f2b(int c[],int d[],int e[])
{
  printf("\n\n /*At Least Two Courses in Red*/");
  for(i=0;i<5;i++)
  {
    if(c[i]<60&&d[i]<60&&e[i]>=60) printf("\n %s %s English:%d, C program:%d",a[i],b[i],c[i],d[i]);
    else if(c[i]<60&&d[i]>=60&&e[i]<60) printf("\n %s %s English:%d, Math:%d",a[i],b[i],c[i],e[i]);
    else if(c[i]>=60&&d[i]<60&&e[i]<60) printf("\n %s %s C program:%d, Math:%d",a[i],b[i],d[i],e[i]);
    else if(c[i]<60&&d[i]<60&&e[i]<60)
      printf("\n %s %s English:%d, C program:%d, Math:%d",a[i],b[i],c[i],d[i],e[i]);
   }
}
f3(int c[],int d[],int e[])
{
  int ave[5];
  printf("\n\n /*The Average Score of 3 Courses is between 85 to 90*/");
  for(i=0;i<5;i++)
  {
    ave[i]=(c[i]+d[i]+e[i])/3;
    if(ave[i]>=85&&ave[i]<=90)
      printf("\n %s %s",a[i],b[i]);
  }
}
max(int score[])
{
  int m;
  m=score[0];
  for(i=1;i<5;i++)
    if(m  for(i=0;i<5;i++)
    if(score[i]==m) printf(" %s %s %3d\t",a[i],b[i],score[i]);
}
main()
{
  int c[5],d[5],e[5];
  clrscr();
  for(i=0;i<5;i++)
    scanf("%d%d%d",&c[i],&d[i],&e[i]);
  printf("\n");
  for(i=0;i<5;i++)
    printf(" %s %s %3d %3d %3d\n",a[i],b[i],c[i],d[i],e[i]);
  printf("\n\n /*Average*/\n English:%d\tC program:%d\tMath:%d",ave(c),ave(d),ave(e));
  f2a(c,d,e);
  f2b(c,d,e);
  f3(c,d,e);
  printf("\n\n /*The Highest Score of Each Course*/");
  printf("\n English:\t");
    max(c);
  printf("\n C program:\t");
    max(d);
  printf("\n Math:\t\t");
    max(e);
  getch();
}

程序好长,但不难。开始的时候我没有想到把i、a[][](储存学号的二维数组)和b[][](储存姓名的二维数组)设计为全局变量,但在后面的运作之中,每个函数都要用到循环,都要用到i与其个个函数都设计不如来个全局变量方便,因为i只用于循环语句,所以每次都会给它个初始值,所以自己觉得定义这个全局变量是我的一个十分明智的选择。当然a[][]和b[][]的定义也使我方便好多,它们的方便之处就随着i的增多而增多,因为是i带动它们变化的。

我不是什么天才,太难的程序我不单不会写,也看不懂,但我会循序渐进,程序就需要我一点一点地啃。路是一步一步走的,程序是一点一点渐进的。

2005-12
23

疯狂地C

By xrspook @ 20:12:07 归类于: 烂日记

几乎发疯了,今天起码连续做了5个小时的C语言,把自己最讨厌的数组和函数都似乎不知不觉地冲过了,也不知道自己是怎么熬过来的。很多很多的函数嵌套从开始的害怕到现在的有点顺手,自己脑袋里除了C还是C,我知道我再这样做下去一定会发疯的,因为期末的考试肯定没有那么刁钻,而二级的考试应该也没有那么“阴险”。

今天令我载最多跟斗的是格式问题,到底是int还是用unsigned甚至是long unsigned经常令我经过一番磨难以后才恍然大悟。谁会想到要用到平时似乎不怎么可能接触到的大值啊!于是突然觉得那个才10块钱的“科学”计算器真的好厉害,起码它能简单地输入输出10的N次方,而我们可怜的C则要为那个结果该用什么输出而烦恼。很简单的输入,14,如果来个5次方那么long unsigned也无能为力,叫人怎么做????我是无能为力了,哎!

以下的是比较好彩的,题目是求1到20的2、3、4、5次方,程序很简单,但用什么格式输出就意味着你程序的成功和失败,经过n++次失败以后我突然恍然大悟,原来自己没有把调用函数的格式搞好,于是就失败了。看看程序看看截图,真的好有成功感!这用计算器搞简直就是轻而易举的小菜,但用C来自己搞,就注定着我这个粗心的人要碰壁好多好多次。我依然是和平常一样,思路清晰但粗心不少。

long unsigned square(long unsigned x)
{
  long unsigned y;
  y=x*x;
  return(y);
}
long unsigned cube(long unsigned x)
{
  long unsigned y;
  y=x*x*x;
  return(y);
}
long unsigned quartic(long unsigned x)
{
  long unsigned y;
  y=square(x)*square(x);
  return(y);
}
long unsigned quintic(long unsigned x)
{
  long unsigned y;
  y=square(x)*cube(x);
  return(y);
}
main()

  long unsigned i;
  clrscr();
  printf("\n  A TABLE OF POWERS\n");
  printf("  No.\tSquare\tCube\tQuartic\tQuintic\n");
  for(i=1;i<21;i++)
    printf("  %lu\t%lu\t%lu\t%lu\t%lu\n",i,square(i),cube(i),quartic(i),quintic(i));
  getch();}

但如果要计算n!就没有那么好彩了。要计算阶乘的思路很清晰,但要算阶乘就不是你想想就能实现的问题。算阶乘的方法很简单:

main()

{  int i;
  float x,t=1;
  clrscr();
  printf("Input a number: ");
  scanf("%f",&x);
  {for(i=1;i<=x;i++)
    t*=i;
  printf("\n  %g!=%g",x,t);
  getch();}

就搞定了,但要知道x和t就决定了你的乘到底能去多远。用long unsigned(最长的无符号整型),那么阶乘最多能算到12!,而用float就能算到34!因为long unsigned的范围在0到429467295(2的32次方减一),而float则-3.4e-38到3.4e38之间,12的阶乘是479001600,13的阶乘是6227020800,long unsigned最远就只能是12!了。而34的阶乘是2.952328e38,但35的阶是1.0333148e40,于是float就无能为力了。更厉害的是doulbe范围在-1.7e-308到1.7e308,但我在书上怎么也找不到它的输入和输出方式。最厉害的是long double,但以%什么输入?我到现在也是一头冒水,long double的范围是-1.2e-4932到1.2e4932。所以,用float就是我力所能及的范围了。

计算:其实就是计算阶乘,别以为计算这个比计算阶乘要简单,因为是先算阶乘后相除,所以阶乘的值保不住就无法计算这个,痛苦啊!!!!

float f(float n)
{
  float t=1;
  int i;
  for(i=1;i<=n;i++)
    t*=i;
  return(t);
}
main()
{
  float n,m,C;
  clrscr();
  printf("Input n,m (n>m&&n<35): ");
  scanf("%f%f",&n,&m);
  if(m>n||n>35) printf("Wrong Input!!!");
  else
  {
    C=f(n)/f(n-m)/f(m);
    printf("n=%g, m=%g, C=%g",n,m,C);
  }
  getch();
}

最令人痛心和兴奋的就是素数的计算:设计一个判别素数。如果是素数,返回值1;如果不是素数,则返回值0。在主函数中调用这个判别函数,输出100以内的所有素数。还有输出格式限制:
 No. Value
 1    2
 2       3
 3       5
 4       7
 5      11
这个东西的计算可以说是可以“八仙过海,各显神通”但我不是神仙,人家显神通我就被他人糊弄的乱七八糟。在书本的帮助下首先改装一下完成了第一个成品:
http://static.flickr.com/36/77467040_a9e266502d_o.gif

#include
find(int a[]);
main()
{
  int a[101];
  clrscr();
  find(a);
  getch();
}
find(int a[])
{
  int i,j,k=1;
  printf("No\tValue\n");
  for(i=2;i<=100;i++)
    a[i]=i;
  a[1]=0;
  for(i=2;i  for(j=i+1;j<=100;j++)
  {
    if(a[i]!=0&&a[j]!=0)
      if(a[j]%a[i]==0)
 a[j]=0;
  }
  for(i=1;i<100;i++)
    if(a[i]!=0)
    {
      printf("%2d\t%2d\n",k,a[i]);
      k++;
    }
}

是用数组完成的,想想都会发疯。该在主函数决定什么,然后传入find函数真的令我几乎发疯。因为书本的题目是整个过程在主函数完成的。在完成上面的改装后不久,我终于有了灵感重修自己本来一点不像样的程序:

int m;
find(int n)
{
  int i,ext;
  for(i=2;i    if(n%i==0) {ext=0; break;}
    else ext=1;
  if(ext==1) m=n;
}
main()
{
  int n,j=1,i;
  clrscr();
  printf("No.\tValue\n");
  for(n=2;n<100;n++)
  {
    find(n);
    if(m!=0)
    {
      printf("%2d\t%2d\n",j,m);
      j++;
      m=0;
    }
  }
  getch();
}

真的好兴奋,当我运行成功的时候,我简直似乎发疯地狂跳狂叫!!!!用了比书本简单好多的语句就完成了,好欣慰,真的好欣慰!!!我的程序只有12.2KB,而书本改装的要28.3KB,发费了大概2个小时做这个题目,应该说我白痴还是说我努力!?只有在家里,只有在没有人的时候我才能如此专心,有了internet我就会有了依赖,我还是要和紫龙那样,在脱掉圣衣的时候才可以把潜能的小宇宙发挥到及至。

不过这样的日子真的好难熬,毕竟我要照顾的不是C语言一个,“孩子们”都需要我关心啊!

2005-12
22

步履不同

By xrspook @ 23:54:11 归类于: 烂日记

好久好久没有注视生活的细节,但今天因为塞车,因为坐在公车上无事可干于是就开始了注视行人的步履。

有个好奇怪的现象:几乎所有男的走路伸脚的时候大腿和小腿是成一直线的;但女的就不一样,她们大多大腿和小腿成的不是一条直线,而是成个很像平角的钝角,而穿高跟鞋的女人由尤为特别,因为她们的钝角显然要比其他人要小而那些似乎有关节病的老人也是钝角比较小,就是说他们似乎都有个共同的特点,关节好像活动不开似的。这说不上是什么重大发现去让我突然学会了从小事中探索思考。大概是因为今天早上一起来就在想C语言,想问题想上瘾了:)

造成如此现象的原因是什么呢?为什么几乎所有男的都伸得那么直,而女的则不是。难道是人体工程学的问题?但为什么从来没有人提出过如此的疑问?还有一点就是大概有30%的女的腿也是伸得很直的。说不上在脚向前跨步的时候伸直了和不伸直有什么好不好。但我一直以为人走路的时候大腿和小腿是成一直线的,因为所有的动画片都似乎把这个当作一个必然现象,而模特走台步就更不用说了。造成今天这个现象的原因到底是什么呢?最直接而又最客观,最一切由实际出发的一个原因是因为冬天而女性又仿佛相比男性怕冷,于是多穿了裤子,造成关节活动不太方便。而有个很明显的例子就是当你摔跤,膝盖受伤的时候你也不喜欢老是活动它,如果坐着起来走动肯定是不方便的,因为显而易见坐着的时候膝盖的皮肤要撑开,而站着的时候皮肤则要折叠,这“开和关”显然会造成疼痛,谁喜欢活动,于是我们就通常采取个适中的方式——半开放式,坐着的时候腿不弯曲成90度,而站着或走路的时候不伸直成180度。这就是普通人“免痛”的方式,我觉得这个解释用在那些有关节毛病的老年人身上尤其明显。他们有的关节增生,关节活动不方便,于是就很容易采取我上面所说的那种方式减轻痛苦。

对于那些穿高跟鞋的女性为什么差不多90%腿都没有伸平,我就不怎么感说为什么了,因为自己从来没有真的穿过高跟鞋(小时候曾经偷偷穿妈的高跟鞋,结果肯定是被臭骂一顿,于是以后就敢了,而到现在为止,自己对高跟鞋没有半点兴趣。)。但有个很明显的“原因”我是发现了。顾名思义“高跟鞋”,显然鞋子是前面低后面高,如果是腿伸直了人很自然就脚跟着地(除非你是踢正步那样压平脚尖),那个一点点的高脚跟着地很容易发生偏移转动,然后一不小心——哎呀,脚扭了。所以那些穿高跟鞋的女士通常是走小步,跨步的时候通常要脚尖和脚跟和地相平,这显然可以减少很多“哎呀”的机会。我到现在还是不明,为什么那么不方便,她们为什么还穿?漂亮吗?我怎么不觉得,漂不漂亮我不知道,但一定很不方便。

男性穿的都是平底鞋,所以就没有了这个问题了。但有一点还是值得注意的,他们的腿都伸得好直,但很多人是把腿摔出去,就是小腿是由于惯性自动摆动到最高点和大腿垂直的,而女性走路通常都很收敛,不会那么“放”。而女性脚在空中停留然后落地的时间显然比男生要短,这就意味着男性的脚理论上要比女性的提得高。这各有个优劣点,优点是男性走路的时候通常不会拖步,就是走路的时候鞋底明显和地面有发生动摩擦的声音,而女性走路则有大概10%有拖步的习惯。但男生这个提步高也有个缺点,一些男性提步太高了,脚的滞空时间太长在加上“外八字”脚了于是就造成了“大老官出场”——廿下廿下(广州话,大概是形容有点横行霸道)的效果,显然这样子十分不雅。

100样米养100样人,我们肯定不能规定所有人都以同一个方式走路,因为我们来自不同的地区由不同的人抚养大,受到不同的教育,而不是受过十分严格的统一化军事训练。如果人人都走相同的步子的话,我今天就没有什么好观察了。生活能见的真的很多,用黑色的眼睛探索世界!!!

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress