佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1620|回复: 17

C programming coding 问题

[复制链接]
发表于 21-5-2013 05:28 PM | 显示全部楼层 |阅读模式
我run不到,有谁可以帮我看哪里出错?




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

struct stackNode {
    int data;
    struct stackNode *nextPtr;
};
typedef struct stackNode StackNode;
typedef StackNode *StackNodePtr;

int evaluatePostfixExpression( char *expr );
int calculate( int op1, int op2, char Operator );
void push( StackNodePtr *topPtr, int value );
int pop( StackNodePtr *topPtr );
int isEmpty( StackNodePtr topPtr );
void printStack( StackNodePtr topPtr );

char postfix[50];
int answer;



void main()
{
    printf("Print an postfix expression\n");
    scanf("%s", postfix);
    evaluatePostfixExpression(postfix);
    printf("The value of the expression is: %i",answer);
}

int evaluatePostfixExpression( char *expr )
    //Evaluate the postfix expression.
{

    StackNode node;
    StackNodePtr ptrnode;
    ptrnode = &node;

    int x;
    int y;
    int z;

    strcat( expr , '\0' );/*Append the null character ('\0') to the end of the postfix expression.
    When the null character is encountered, no further processing is necessary.*/

    int i=0;
    for(i; postfix[i]!='\0'; i++){      //While '\0' has not been encountered, read the expression from left to right.
        if(isdigit(postfix[i])){           //If the current character is a digit,Push its integer value onto the stack
            push(&ptrnode, postfix[i]); //(the integer value of a digit character is its value in the computer's character
            printStack(ptrnode);                           //set minus the value of '0' in the computer's character set).
        }
        else if(postfix[i]=='+'||postfix[i]=='-'||postfix[i]=='*'||postfix[i]=='/'||postfix[i]=='^'){                   //Otherwise, if the current character is an operator, Pop the two top elements of the stack into
            x=pop(&ptrnode);    //variables x and y. Calculate y operator x.
            printStack(ptrnode);
            y=pop(&ptrnode);
            printStack(ptrnode);
            z=calculate(x,y,postfix[i]);
            push(&ptrnode, z);          /*Push the result of the calculation onto the stack.*/
            printStack(ptrnode);
        }
        if (postfix[i]=='\0'){  //When the null character is encountered in the expression, pop the top value of the
            answer = pop(&ptrnode);//stack. This is the result of the postfix expression.
            printStack(ptrnode);
        }

        }
}

int calculate( int op1, int op2, char Operator )
    //Evaluate the expression op1 operator op2.
{
    if (Operator=='+')
        return op1+op2;

    else if (Operator=='-')
        return op1-op2;

    else if (Operator=='*')
        return op1*op2;

    else if (Operator=='/')
        return op1/op2;

    else if (Operator=='^')
        return op1^op2;



    else{
    return printf("calculation error");
    }
}

void push( StackNodePtr *topPtr, int value )
    //Push a value on the stack.
{
    StackNodePtr temp; /* to create a new node */
    temp = (StackNodePtr) malloc(sizeof(value));//need Malloc because it will not remember it
    temp->data = value;
    temp->nextPtr = NULL; /* the new node points to NULL */


    if(isEmpty(*topPtr)==0) {
    temp->nextPtr = *topPtr;
    }

}

int pop( StackNodePtr *topPtr )
    //Pop a value off the stack.
{
    char Data ; /* to be used to store the data */
    StackNodePtr tmp; /* to be used for handling the node*/
                        /* that is going to be deleted */
    tmp = *topPtr; /* tmp has the address of the node */
                        /* that is going to be deleted */
    Data = tmp->data;
    *topPtr = tmp->nextPtr;

    free(tmp);
    return Data;
}

int isEmpty( StackNodePtr topPtr )
    //Determine if the stack is empty.
{
    if(topPtr->nextPtr==NULL)
        return 1;
    else
        return 0;
}

void printStack( StackNodePtr topPtr )
    //Print the stack.
{
    while ((topPtr->nextPtr)!=NULL){
        printf("%C",topPtr->data);
    }
    if ((topPtr->nextPtr)==NULL)
        printf("NULL");

    printStack(topPtr->nextPtr);
}

回复

使用道具 举报


ADVERTISEMENT

发表于 22-5-2013 02:31 PM | 显示全部楼层
你至少应该描述一下出现什么症状,有什么Error Message吧?你这样子永远得不到答案的,没人有义务给你当人肉电脑的。

还有,请善用代码模式。
回复

使用道具 举报

 楼主| 发表于 22-5-2013 06:56 PM | 显示全部楼层
geekman 发表于 22-5-2013 02:31 PM
你至少应该描述一下出现什么症状,有什么Error Message吧?你这样子永远得不到答案的,没人有义务给你当人肉 ...

这个 function 有问题 int evaluatePostfixExpression( char *expr );
代码模式去哪里弄?
回复

使用道具 举报

发表于 22-5-2013 07:05 PM | 显示全部楼层
代码模式:在发帖时注意看上面的图标,<>的就是代码模式。

有问题?我还有答案咧!将Error Message写出来啊。啊不然你想别人怎么帮你哦?没有Error Message的话就描述症状,为什么你认为那个Function有错?没有任何线索之下,照我说,每一行都有嫌疑,干脆整个Fuction拖出去砍头,删了算了。

回复

使用道具 举报

 楼主| 发表于 22-5-2013 08:37 PM | 显示全部楼层
geekman 发表于 22-5-2013 07:05 PM
代码模式:在发帖时注意看上面的图标,的就是代码模式。

有问题?我还有答案咧!将Error Message写出来啊 ...

Postfix.cpp(46) : error C2664: 'strcat' : cannot convert parameter 1 from 'struct stackNode *' to 'char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

谢谢指导,我看到那个《》了
回复

使用道具 举报

发表于 22-5-2013 09:01 PM | 显示全部楼层
哎呀呀一看到我青筋暴涨啊。

  1. char postfix[50];
  2. int answer;
复制代码
第一件事:请慎用Global Variable!能够不用Global Variable就尽量别用,要养成每个Variable都要有适当的Scope的习惯,并忠实的遵循Variable Passing,Visible Scope等规矩,不然将来你换去学C++的时候你会痛不欲生。
  1. strcat( expr , '\0' );
复制代码
这个没必要。scanf 会自动给所读取的 String 添加 null terminator。
  1. for(i; postfix[i]!='\0'; i++)
复制代码
上面还似模似样的Pass Argument expr, 现在又马上变脸去直接使用Global Variable postfix,那你pass argument来干嘛?要Pass Argument那你就从头到尾用Argument,要用Global就直接Global,你这样随意跳槽或破坏Variable tracking的统一性,接手你的Source Code的人(例如你的导师)会狠狠的诅咒你的。

  1. void push( StackNodePtr *topPtr, int value );
  2. push(&ptrnode, postfix[i]);
复制代码
push接受的是一个 StackNodePtr 和一个 int,postfix[ i ]却是一个char 而且还是一个ASCII Encoded char。。。如果postfix = '0',被推进去的不是0,而是0x30, 也就是48。。。自己想想有什么后果?
  1. StackNode node;
  2. StackNodePtr ptrnode;
  3. ptrnode = &node;
复制代码
基本不算错,但是你没有initialize你的struct,data和nextPtr都是乱数,这时候如果你呼叫printStack()的话,就精彩了。
  1. temp = (StackNodePtr) malloc(sizeof(value));
复制代码
你只是malloc一个int的空间,但是你的struct除了一个int还有一个Node Pointer 啊啊啊啊啊啊

  1. else if (Operator=='^')
  2. return op1^op2;
复制代码
你确定你要计算Op1 和 Op2 的 Bitwise XOR?在C里面 a^b 并不是 a to the power of b 哦。
  1. /* the new node points to NULL */
复制代码
Yeah, right, and where did the old nodes point to??

  1. void push( StackNodePtr *topPtr, int value ) //Push a value on the stack.
  2. {
  3.     StackNodePtr temp; /* to create a new node */
  4.     temp = (StackNodePtr) malloc(sizeof(value));//need Malloc because it will not remember it
  5.     temp->data = value;
  6.     temp->nextPtr = NULL; /* the new node points to NULL */

  7.     if(isEmpty(*topPtr)==0)
  8.     {
  9.         temp->nextPtr = *topPtr;
  10.     }
  11. }
复制代码
so, 从一开始你的Stack就已经有个node(传说也就是你后来用到的topPtr),data并不知道有些什么数据,而nextPtr也不知道指向哪里的Node。然后你就去呼叫Push(),然后你也不管topPtr的nextPtr指向哪里,就malloc了一个int的空间,把它当作StackNotePtr来用。二话不说的把隔壁那个不知道属于谁的memory space给硬当作是nextPtr的把它给整成NULL。然后你再去看看你的topPtr的nextPtr是不是NULL?如果你的topPtr的nextPtr不是NULL的话(说真的,几率也就是50/50罢了。运气好的话。或许就是这样吧。)就把新的Node的旁边属于隔壁家的pointer空间的内容改成你的topPtr的位置?每个新Node都会指向topPtr(而且还是固定的一个Node)?这不是Stack。。。勉强解释的话,应该是梵谷的太阳花,旷世巨作啊!

你自己看看是不是很晕?(说真的我看到死去活来好几次才理解你的做法,很好,很有野兽派抽象画的风格)。

  1. int pop( StackNodePtr *topPtr )    //Pop a value off the stack.
  2. {
  3.     char Data ; /* to be used to store the data */
  4.     StackNodePtr tmp; /* to be used for handling the node*/
  5.                                /* that is going to be deleted */
  6.     tmp = *topPtr; /* tmp has the address of the node */
  7.                           /* that is going to be deleted */
  8.     Data = tmp->data;
  9.     *topPtr = tmp->nextPtr;

  10.     free(tmp);
  11.     return Data;
  12. }
复制代码
错,彻头彻尾的错。我昏死过去了好几次了,不想再自找难受了。你自己去发掘错在哪里吧。
  1. printf("%C",topPtr->data);
复制代码
郑重提醒你一下:C 是 cAsE sEnSiTiVe 的。郑重提醒你二下:之前你把 char 当成 int 推进去Stack,并进行计算,虽然你现在以char来打印你的Stack,但里面已经是物是人非事事“羞”了。

  1. void printStack( StackNodePtr topPtr )  //Print the stack.
  2. {
  3.     while ((topPtr->nextPtr)!=NULL)
  4.     {
  5.         printf("%C",topPtr->data);
  6.     }
  7.     if ((topPtr->nextPtr)==NULL)
  8.         printf("NULL");

  9.     printStack(topPtr->nextPtr);
  10. }
复制代码
恭喜你,你成功的把自己困在N次元异空间里面了,希望你能够早日脱身出来。

能把Program写到如此彻头彻尾的错误,你也能算大师级了。彻底败服。 本帖最后由 geekman 于 22-5-2013 09:16 PM 编辑

评分

参与人数 1人气 +5 收起 理由
bingo520 + 5

查看全部评分

回复

使用道具 举报

Follow Us
发表于 22-5-2013 09:14 PM | 显示全部楼层
莲花 发表于 22-5-2013 08:37 PM
Postfix.cpp(46) : error C2664: 'strcat' : cannot convert parameter 1 from 'struct stackNode *' to  ...

问题出在这行:
  1. strcat( expr , '\0' );/*Append the null character ('\0') to the end of the postfix expression.
复制代码
Postfix.cpp(46) : error C2664: 'strcat' : cannot convert parameter 1 from 'struct stackNode *' to 'char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

你确定你打出来的代码是你send给Compiler的?这里说你的strcat的第一个Argument错误,strcat要的是两个char *,而你提供给它的第一个Argument 是 struct stackNode * 类型的。可是你post出来的代码的确是char *。你确定你的代码是原装货???
回复

使用道具 举报

 楼主| 发表于 22-5-2013 09:20 PM | 显示全部楼层
geekman 发表于 22-5-2013 09:01 PM
哎呀呀一看到我青筋暴涨啊。第一件事:请慎用Global Variable!能够不用Global Variable就尽量别用, ...

不止你晕,我也晕。。。
这个是功课来的,我抄朋友的,但是就是run不到,所以才厚着脸皮来问~~
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 22-5-2013 09:30 PM | 显示全部楼层
给我一天的时间思考,明晚才回你,我自己也搞不清楚状态~~
回复

使用道具 举报

发表于 22-5-2013 10:38 PM | 显示全部楼层
这是我写的,base on Single Directional Linked List 的 Stack (使用Visual C++ 2010 Express):
  1. // stack.cpp : main project file.

  2. #include "stdafx.h"
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <malloc.h>
  6. #include <memory.h>
  7. #include <stdlib.h>

  8. using namespace System;

  9. struct struct_node
  10. {
  11.         int data;
  12.         struct_node *next;
  13. };
  14. typedef struct_node Node;
  15. typedef struct_node* NodePtr;

  16. void push(int value);
  17. int  pop(void);
  18. void printstack(void);

  19. NodePtr stack_top  = NULL;
  20. NodePtr stack_base = NULL;

  21. void main(void)
  22. {
  23.         int val = 0;

  24.         system("cls");
  25.         for(int i=0; i<10; i++)
  26.         {
  27.                 push(i);
  28.                 printstack();
  29.         }
  30.         getch();

  31.         while(pop() > 0)
  32.         {               
  33.                 printstack();
  34.         }

  35.         getch();
  36. }
  37. //------------------------------------------------------
  38. void push(int value)
  39. {
  40.         // initialize base stack if it is not initialized already
  41.         if(stack_top == NULL)
  42.         {
  43.                 stack_top = (NodePtr)malloc(sizeof(Node));
  44.                 stack_top->data = value;
  45.                 stack_top->next = NULL;
  46.                
  47.                 // stack_base will be fixed to the first element of stack
  48.                 stack_base = stack_top;
  49.         }
  50.         // or add a new node if base is already initialized
  51.         else
  52.         {
  53.                 NodePtr newNode = (NodePtr)malloc(sizeof(Node));
  54.                 newNode->data = value;
  55.                 newNode->next = NULL;
  56.                
  57.                 // attach the new node to the top of stack
  58.                 stack_top->next = newNode;
  59.                 // advance the stack_top to the latest position
  60.                 stack_top = stack_top->next;
  61.         }
  62. }
  63. //--------------------------------------------------------
  64. int pop(void)
  65. {
  66.         int value;

  67.         // first check if stack_top is NULL, if so, stack is empty,
  68.         // nothing will be popped.
  69.         if(stack_top == NULL)
  70.                 return NULL;

  71.         // then check if stack_top same as stack_base, if so, stack
  72.         // will be empty after pop, be prepared for emptying stack
  73.         if(stack_top == stack_base)
  74.         {
  75.                 value = stack_top->data;
  76.                 free(stack_top);
  77.                 stack_top  = NULL;
  78.                 stack_base = NULL;
  79.         }
  80.         else
  81.         {
  82.                 value = stack_top->data;
  83.                 // walk from stack_base till stack_top -1
  84.                 NodePtr walker = stack_base;
  85.                 while(walker->next != stack_top)
  86.                 {
  87.                         // advance walker to the next node
  88.                         walker = walker->next;
  89.                 }
  90.                 // now walker is at stack_top -1
  91.                 // severe the link between walker and stack_top
  92.                 walker->next = NULL;
  93.                 // free the popped node
  94.                 free(stack_top);
  95.                 // move stack_top to the new top
  96.                 stack_top = walker;
  97.         }
  98.         return value;
  99. }
  100. //--------------------------------------------------------
  101. void printstack(void)
  102. {
  103.         NodePtr walker = stack_base;
  104.         
  105.         while(walker != NULL)
  106.         {
  107.                 printf("%d->", walker->data);
  108.                 walker = walker->next;
  109.         }
  110.         printf("END_OF_STACK\n");
  111. }
  112. //--------------------------------------------------------
复制代码
Stack并不是那么简单的。 本帖最后由 geekman 于 22-5-2013 10:40 PM 编辑

回复

使用道具 举报

 楼主| 发表于 24-5-2013 12:07 AM | 显示全部楼层
geekman 发表于 22-5-2013 10:38 PM
这是我写的,base on Single Directional Linked List 的 Stack (使用Visual C++ 2010 Express):Stack并 ...

谢了~不过这功课有指定用的function~就是这些指定的~它只给这些function name~剩下的要自己加进去~
  1. struct stackNode {
  2.     int data;
  3.     struct stackNode *nextPtr;
  4. };
  5. typedef struct stackNode StackNode;
  6. typedef StackNode *StackNodePtr;

  7. int evaluatePostfixExpression( char *expr );
  8. int calculate( int op1, int op2, char Operator );
  9. void push( StackNodePtr *topPtr, int value );
  10. int pop( StackNodePtr *topPtr );
  11. int isEmpty( StackNodePtr topPtr );
  12. void printStack( StackNodePtr topPtr );
复制代码
回复

使用道具 举报

发表于 24-5-2013 07:28 AM | 显示全部楼层
莲花 发表于 24-5-2013 12:07 AM
谢了~不过这功课有指定用的function~就是这些指定的~它只给这些function name~剩下的要自己加进去~


我只是告诉你stack该怎么做,功课还是得你自己做的。这次做文抄公,抄出个大头佛来,应该得到教训了吧?要抄也该找个懂的人来抄啊。
回复

使用道具 举报

发表于 24-5-2013 08:39 AM | 显示全部楼层
其实,仔细想想,Stack应该反过来做才有效率,Node里面的Pointer应该Point to Previous Node 才是更有效率的做法。固有观念害死人啊。
回复

使用道具 举报

 楼主| 发表于 31-5-2013 02:12 AM | 显示全部楼层
  1. #include <stdlib.h>        //malloc()
  2. #include <stdio.h>        //for printf(), scanf()
  3. #include <string.h>        //for strlen()
  4. #include <ctype.h>        //for toupper()
  5. #include <io.h>                //for fflush()
  6. #include <math.h>        //for mathematical function               
  7. #define MAX 30//set a global variable for maximum


  8. ////////////Prototypes////////////
  9. int evaluatePostfixExpression (char expr[], struct stackNode **topPtr); //////////////////////////////////
  10. int calculate (struct stackNode **topPtr, char Operator); //////////////////////////////////
  11. void push (struct stackNode **topPtr, int); //////////////////////////////////
  12. int pop (struct stackNode **topPtr);//////////////////////////////////
  13. int is_empty (struct stackNode *topPtr); //////////////////////////////////


  14. struct stackNode {                                              //structure use
  15. int data;
  16. struct stackNode *nextPtr;
  17. };

  18. int status = 1;

  19. void main (void)
  20. {
  21. struct stackNode *stack = NULL;                         //pointer to node for stacking
  22. char postfix[MAX];                                            //array for input
  23. int answer;                                                      //answer to be displayed

  24. printf("\n\n\nEnter a less than %d character postfix expression without spacing>>\n", MAX); //display message to ask user key in postfix expression
  25. gets(postfix);                                                  //input string
  26. answer = evaluatePostfixExpression(postfix, &stack);//evaluate expression & return answer
  27. if(status==1)
  28. {
  29. printf("\nThe answer to the postfix expression is:\n"); //display message for user
  30. printf("%s = %.1d\n", postfix, answer);                    //print output
  31. }
  32. }
  33. /////////// end main() ////////////////


  34. int evaluatePostfixExpression (char expr[], struct stackNode **topPtr) //function
  35. {
  36. int val, answer;                                                     //variables to be pushed onto stack
  37. int length, i;                                                        //misc variables
  38. length = strlen(expr);                                          //find size of string
  39. for (i = 0; i < length && status > 0; ++i)
  40. {
  41. if (isdigit(expr[i]))                                               //if operand push onto stack
  42.          {
  43.          val = (int)(expr[i] - '0');                             //cast character as float
  44.          push(topPtr, val);                                     //push onto stack
  45.          }
  46. else if(expr[i] =='+'||expr[i] =='-'||expr[i] =='*'||expr[i] =='/'||expr[i] =='%'||expr[i] =='^')   //if math crunch out answer
  47.          {
  48.          answer = calculate(topPtr, expr[i]);              //call func to evaluate math expr
  49.          push(topPtr, answer);                                //push answer back on stack
  50.          }
  51. else                                                                   //if bad set ok_so_far = 0
  52.          {
  53.          printf("\nWrong value or operator entered in postfix expression.");
  54.          status = 0;                                               //if bad value clear status
  55.          }
  56. }
  57. if(status == 0)
  58. printf("\nPlease restart program\n");
  59. return (answer);
  60. }
  61. ////////////end evaluatePostfixExpression/////////////



  62. void push(struct stackNode **topPtr, int pushval)
  63. {
  64. struct stackNode *ptr;                                 //pointer for new struct
  65. ptr = (struct stackNode *) malloc(sizeof(struct stackNode));  //ptr is pointer to memory designated for a struct node
  66. if(ptr == (struct stackNode *) NULL)                                 //if malloc returns NULL
  67. {
  68. printf("ERROR! Unable to allocate memory\n");
  69. free(ptr);                                 //return 0 so calling function knows error occurred
  70. }                                         //end if
  71. else
  72. {
  73. ptr->nextPtr = *topPtr;                                 //point new item's link to previous node
  74. ptr->data = pushval;                                    //assign new value into new node
  75. *topPtr = ptr;                                              //point nodeptr to new item in list
  76. }                //end else
  77. }
  78. ////////////end push/////////////////


  79. int pop (struct stackNode **topPtr)
  80. {
  81. int ans;                                                                                       
  82. struct stackNode *temp;
  83. if (is_empty(*topPtr)== 1)                           //if stack is empty display error message
  84. {
  85. printf("\nERROR! Attempt to pop an empty stack quiting program");
  86. exit(1);
  87. }                        //end if
  88. else
  89. {
  90. ans = (*topPtr)->data;
  91. temp = *topPtr;
  92. *topPtr = (*topPtr)->nextPtr;
  93. free(temp);                                              //release popped node's memory back to OS
  94. }                        //end else
  95. return(ans);                                            //return the answer
  96. }
  97. ////////////end pop/////////////


  98. int is_empty (struct stackNode *topPtr )
  99. {
  100. if (topPtr  == NULL)                               //if stack points to NULL there are no nodes
  101. return(1);
  102. return(0);
  103. }
  104. /////////////end is_empty//////////


  105. int calculate (struct stackNode **topPtr, char Operator)
  106. {
  107. int op1, op2;                                            //operands 1 and 2
  108. int answer;                                               //answer
  109. op2 = pop(topPtr);                                   //pop operand 2 from stack
  110. if(op2 == -1)
  111. exit(1);
  112. op1 = pop(topPtr);                                   //pop operand 1 from stack
  113. switch(Operator)                                      //begin switch section
  114. {
  115. case '+':                                                  //if operator is PLUS
  116.          answer = (op1 + op2);
  117.          break;

  118. case '-':                                                   //if operator is MINUS
  119.          answer = (op1 - op2);
  120.          break;
  121. case '*':                                                   //if operator is MUTLIPLE
  122.          answer = (op1 * op2);
  123.          break;
  124. case '/':                                                   //if operator is DIVIDE
  125.          if (op2 == 0)                                  //if op2 is 0 display the error message
  126.         {
  127.         printf("ERROR! Attempt to divide by zero");
  128.         exit(1);
  129.         }
  130.          else answer = (op1 / op2);
  131.          break;
  132. case '%':                                                  //if the operator is MODULUS
  133.          answer = (op1 % op2);
  134.          break;
  135. case '^':                                                   //if the operator is POWER
  136.          answer = (pow(op1,op2));
  137.          break;

  138. }                //end switch section
  139. return (answer);                                       //return answer to calling function
  140. }
  141. ////////////end calculate///////////
复制代码
本帖最后由 莲花 于 1-6-2013 11:13 AM 编辑

回复

使用道具 举报

发表于 31-5-2013 10:17 AM | 显示全部楼层
莲花 发表于 31-5-2013 02:12 AM

How may I help you?

回复

使用道具 举报

 楼主| 发表于 1-6-2013 11:04 AM | 显示全部楼层
geekman 发表于 31-5-2013 10:17 AM
How may I help you?

只是想要跟你讲我解决了,谢谢你一直回复我~~
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 1-6-2013 11:05 AM | 显示全部楼层
SotongJiang 发表于 31-5-2013 10:58 PM
geekman的耐心真好,循循善诱,希望莲花能明白你的好意。

我学校的老师都没有他酱好心咯~~
回复

使用道具 举报

发表于 1-6-2013 12:00 PM | 显示全部楼层
我以前求学时也曾被不负责任的Programming老师深深地伤害过单纯幼嫩的心灵,所以并不想让现在的幼苗们受到我曾遭遇的无助的困境。

只是我的言论有时会尖酸刻薄了点,希望大家别介意啊哈,毕竟本性难移啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-9-2025 05:56 AM , Processed in 0.119167 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表