2006-01
4

失败有因

By xrspook @ 18:41:18 归类于: 烂日记

曾经写过申请spymac邮箱全攻略,但如今1GB主页空间可以说已经不复存在。


看是觉得有1GB的空间的,但那个认证过程如果你在中国看来你要免费就永远都认证不成功了。不想给钱你只能选第一个——手机认证。但要知道中国的代码是86,城市的代码以广州为例是020,再加上个11位的手机号码,你认为Spymac真的能把用SMS的确认短信发到你哪里吗?我已经试了好多次了,但确认短信从来就没有收过。

http://www.3322.com.cn/试过用86020XXXXXXXXXXX对自己发送短信,结果是不行的。根本就发不出去,你怎么可能收到外国的确认短信呢?而且我们普通人的手机可没有调教“漫游”啊!所以,Spymac提供的这个主页空间我们是绝对不可能免费收到的。外国的手机是实行实名制的,而中国的手机则是随便找个卡来就可以,Spymac只所以要身份认证就是要用户和用户的身份匹配,可以想像,它到底向不向中国这些没有实名制的国家发送确认短信也是个问题。二重的原因下,我们是绝对不能期望我们会有这个主页空间了:(

但Spymac抹杀了我们的主页空间却给了些地方给我们放自己的东西。它把原来只能放图片的Galleries扩展到能够放很多形式的文件,而且空间扩大到1GB:http://www.spymac.com/news/article.php?contentid=3842,也就是说它变相把我们1GB的主页空间和以前100MB的相册空间压缩成1GB了,虽然不是件好事。刚刚试验了一下Go_Together_inversion速度很一般,但总比什么都没有好。还没有试验过最大的文件能放多少,以前是单个文件2MB,现在也应该差不多。但http://www.spymac.com/galleries/show_photo.php?picid=453267显示文件足有5,878.81 kB这么大,但我也试过,但却是上传不成功的,难道那个用户RainH2O是付费的?

Spymac,一个对我来说既豪爽又吝啬,既出名,又陌生的东东。

2005-12
27

钱到手了

By xrspook @ 19:16:29 归类于: 烂日记

千盼万盼,钱终于到手了!!!上一个学年的奖学金这个学期都快要考试了才发放。真是……

今天下午的行程真够“丰富”。首先要到东区实验楼的422,冒着要被那个C语言老师责备的危险问她问题。我知道,她对学生问一些很“弱智”的问题很烦躁,如果你是问些上课她有说但你又不知道的那你就死定了!!去到的时候“傻婆”正在那里,加上我一共有3个同学在问。站在那里,老师正和一个同学解释着,不是向我望来。我感觉很奇怪。当轮到傻婆的时候情况更是好笑,首先她是问了2道指针的选择题,到了第三道的时候老师简直是坚持不住了,压抑不住要骂人了,有是那句“我已经在课上说过N次了,数组名就代表数组的首地址!你问的我上课都说过了!你就拿着那个准则去判断就好了……”与此同时,她还不停地向我望来,好像要我响应她一样,我知道,如果我响应的话她一定会很爽的,但我没有这么做,毕竟问问题的是我的同学。然后,老师干脆把傻婆的书盖起来然后塞到傻婆的手里。然后老师对我说:“你有什么问题要问?”我看着就觉得好笑,但我不敢。然后就开始问问题。

每次问到有关教材的问题老师就会好像要开始发脾气的样子,她会反问我她上课时是怎么说的,然后说她上课演示的不是书本上的原题,然后叫我不要拿书本问她,叫我到我上课的那个教室把课件那走去研究。但我的问题又怎么是书本那么简单,课本只是个开始。然后我就开始问那个实验教程的题目,开始的时候她似乎是毫不费劲,但随着页数的后移,她不能那么爽了,终于,我问到这个题目:

输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

#include"stdio.h"
main()
{
  char c;
  int letters=0,space=0,digit=0,others=0;
  clrscr();
  printf("Input a line char:\n");
  while((c=getchar())!=’\n’)
  {
    if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)
      letters++;
    else if(c==0x20)
      space++;
    else if(c>=’0’&&c<=’9′)
      digit++;
    else
      others++;
  }
  printf("letter:%d space:%d digit:%d others%d\n",letters, space,digit, others);
  getch();
}

能否输入一行字符超过128个字符?上机测试之,并解释原因。

的时候她终于迟疑了,我说当我输入到127个字符的时候如果我继续输入电脑就会发出警告,我无法再输入了。她开始有在说“我上课已经说过‘\7’就是代表电脑发出警告,只要不换行应该是可以继续输入的”,但我坚持的确不能再输入了,再输入就会出错。于是她开始变“软”了,然后说这个要查一下书……我第一赢了!在和她的“交锋”当中她一直是主导地位,我一向只能俯首称臣,我不是有意找她不懂或不太肯定的东西来下她的面子,但这次,我的实践终于有点超过了她的“常识”范围了。在后面的问题当中,我觉得她对我“软”了,还记得我刚开始问的时候她的态度很“强硬”,我知道,在她心目中,我就是那个上课老爱说话阻止她讲课的坏孩子,我知道她看了我就觉得讨厌。但我问的问题其实也可以向她证明我是有有用脑袋去思考C语言的学生,我问的问题除了那些指出书上的错误显示我对她的课不是100%认真以外其余问的问题还是有那么一点水平的,所以我问问题的过程中并没有被她打断,被她“推”在一边。

问完问题我们就开始向学院进发,要去拿我们的钱!!!但时间不多了,开始从钟楼进发的时候已经是3:05PM,而我们在4:15PM有课。乱七八糟,乱七八糟地从“唐老鸭”手中那过15张100元,然后向工商银行进发,当时已经是3:50PM了,时间无多。然后这次是我第一次知道用一般的ATM机是无法存款的,那钱就熟,存钱对我和同学都是第一次。那个该死的存款机还有很多限制,比如说它对“钱”的要求挺高,有点皱或者折了角的它都无法识别,于是15张我一共用了3次才全部存进去,于是就打印了3张纸条。当和同学完成存款以后已经是4:10PM,马上到门口找的士,该死的,居然红灯,看着空的的士就在那里却不能进发。

上的士的时候还有个好笑的,上一手的客人居然落下了3个硬币,我们就叫他过来把钱拿走。我们其中的一个男同学就对着那个人不停地喊“钱,钱,钱”,好不容易那个人终于回头,一脸茫然,然后当他知道是他掉了钱以后,终于笑了。虽然只是3块钱,我们做了好事,他也高兴。

接着我们的的士就直冲我们的教学楼,四周已经没人已经上课了,我们始终是迟了那么一点。

想不到我的班居然有人拿国家奖学金,一个学院就只有5人,04级就那么一个,而他本来只是个拿1500元二等奖学金的如今却去拿4000元的国家奖学金,想不到那些似乎不可能的事情居然就发生在我身边。原来,原来国家奖学金是这样的!里面有好多好多说不出的原因,一切尽在不言中。而那些拿国家奖学金的居然在学校和学院都没有公开宣布,若不是拿钱的那个人自己说我们就什么外人都不知道了。即使是普通的三等奖学金也要公布起码一个星期接受大家的“检阅”和祝贺,更何况是国家奖学金。但为什么SCAU要避而不说呢?搞不懂,不懂。

无论怎样,搞好自己的事就好,其他人的事,祝贺是要的,但绝对不能强求,能过自己的关就好了,觉得自己做得好就好了,其他的,就让命运去做那个决定吧!

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
19

坏孩子

By xrspook @ 21:53:03 归类于: 烂日记

我这个坏孩子今天居然逃课了,这是我这辈子第一次做这勾当,觉得自己真的好坏,恶魔的自己今天战胜了善良的自己。其实今天就逃了那么一节“跨文化交际”,但我知道恶魔自己下个星期也不会去上了,尽管下个星期老师说会找个外教来给我们亲身交流,但即使那个外教会西班牙语,即使那个外教是来自南美,我也不会去了,自己也说不上为什么,难道每个星期一冒着寒风披星戴月地赶去主校区很难吗?但我真的不想去了。无论谁来,即使是巨星驾临我也不会去了。因为那个课程的老师从来不点名,就是说平时成绩无从说起,而最后占80%的论文我今天已经交了,所以我觉得我已经没有什么好牵挂的,于是套课的念头就由此而生。

调这个选修课的时候我真的满怀激情,真的以为自己能够能什么很好的收获,但当课程过半的时候发觉自己知道的还是那么一点点,而不知道的还是那么宽广,可以说好像没有什么进展似的。直到最后的论文之前,强迫自己在2个星期之内看完一本关于它的英语专业教材才算学这个课程赚了什么。赚了好多好多的阅读量啊!但回过头来仔细想想,原来赚回来的无论是我去不去上那个课都可以得到,真的说不上为什么要费那么多的时间去上那个“艰苦”的课。

快要期末考试了,但自己还是不是怎么“抓紧”,自己也为自己担心啊!其他人都进入了备战状态了而自己却仍然懒散,实在太说不过去了!!!!

除了C语言现在自己是懂得比较多一点以外,其余的科目自己就像个白痴一样。但最骄傲的科目其实有时也有好棘手的问题的。比如说前几天做那些往年的试卷的时候做到了要求最大公约数:

main()
{
  int x,y,temp;
  clrscr();
  scanf("%d,%d",&x,&y);
  if(x  {
    temp=x;
    x=y;
    y=temp;
  }
  while(y!=0)
  {
    temp=x%y;
    x=y;
    y=temp;
  }
  printf("Gongyueshu:%d",x);
  getch();
}

红色部分就是填空题需要填入的内容,但那么简单就想了我好久好久。因为如果求出x和y的公约数temp就必然等于0,而要退出那个while的循环y最终也必然等于0,所以最后一个空就必然只能填x,但上面的怎么办呢?根据自己最初的推断肯定有一句是y=temp;这样就可以把是0的temp的值赋给y,但那句x=y;就想了我好段时间,而且x=y; y=temp;的位置也绝对不能掉转。题目其实有个叫我们用辗转相除的方法计算公约数,但也想了我好久。如果不是题目有其他的部分我一定不会这道叫人求公约数的题目。总的来说自己分析题目的时候还不够冷静,我应该从最基本的方面看出端倪,我应该一开始就看出最后一个格只能填x,但事实上我开始只是在顺序地思维,我抓住细节分析的能力不强啊!所以,千万不要叫我去搞什么刑侦工作,在发掘细节方面我的智商真的好有限。但这不是借口,任何人都不是出生就是天才,我需要更多更多的练习武装自己,“自知自己无知”,所以我就要更加努力!

坏孩子,应该拖出去打!!!!!

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