学习阶段总结2

最近刚好把C语言的基础部分学完,作为一个初学者,而且是一个自学者,就准备写个简单的东西看看自己学的再怎么样,于是就准备写一个最简的成绩管理的程序,正好下午没课,就背了包去了图书馆泡着,准备什么时候写完,什么时候回宿舍。

最开始部分很简单,就写的很顺利,但写到将成绩排序时就开始遇到了问题。由于为了方便以后学到东西增加后修改这个程序让其功能更加丰满时方便一些,最开始储存学生数据时就没有使用结构体数组,而是直接使用链表的。然而正是因为这样,然排序部分的困难增加了许多。最开始我对排序的想法是通过冒泡排序,一步步的将储存的数据最大的那个节点移到链表的最前面,由于现在学到的只是链表的创建部分,对于链表的操作并没有学到,于是我就开始想怎么用代码实现这个交换过程,最开始只是按照心里的想法将代码敲出来,然后点了编译,没有意外,直接宣告失败,于是我就开始想是哪个部分除了问题,这时我就将自己想像计算机模拟它实现这些代码的过程,将数字写在纸上一步一步的试数,果然,是中间节点的处理出了问题,为了找到节点处理的正确代码,我就写了一组数据,把自己当成计算机,如果我想完成排序,我需要哪些步骤,一点一点的将处理过程推出来。按照这个思路,一段时间之后,我终于把中间的实现过程找了出来,当我再次编译时也并没有报错,但是在运行时却整个崩溃了,这时我就开始反思,我是哪里的处理除了问题。我想到,一般在初学这个阶段,运行崩溃的主要原因一般是指针问题,或者输入时没有取地址符,我将整个代码检查了一遍,但并没有找到出错的地方,这个时候的感觉是特别崩溃的,但是我想越是着急越不可能将错误找出来,于是我就开始静下来想代码在那个地方容易出现这种错误,最终我想到在处理节点时是不是将最后一个节点的指向改变了,使它部位NULL,于是我再次修改了排序时节点处理部分的代码,果然,再次运行时程序并没有崩溃,但是结果还是出错了。这让我十分崩溃,因为实在找不出到底是哪里出错了。于是我就准备等下次再找错在哪里,于是就回到了宿舍,在宿舍休息的时候突然脑海里闪现了一个想法,我为什么就非要执着于将节点的位置交换,交换节点的数据不是也有一样的效果吗。而且省去了节点处理的部分,会使代码简单很多。于是我就马上将这个想法尝试了一下,最终终于实现了我想要的效果。

最后终结:

这个虽然只是一个简单的程序,但现这个程序的过程和以后需要学习的更多更加困难的程序是一样的,都需要通过各种步骤设计,错误查找,心态变化这些过程,我认为比起这程序的代码,让我收获更多的是实现程序功能的过程,我认为试数,将各个函数分开查错,想办法从另一个思路实现同一个功能等这些想法会在我以后学习过程中带给我更多帮助。

/*
    学生管理系统
        程序要求:不能使用结构体数组储存学生总体信息
  功能要求:能够统计能源专业四个班期末考试(数学 英语 C语言)
            的各班均分,并将各班成绩按照总分从高到低分别打印。     
      能源专业共有 4 个班 每个班 30 人
*/
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
# include <string.h>
# define N 4

// 定义储存学生个人信息的数组
typedef struct student
{
 char name[20];
 int math;
 int English;
 int C;
 int amount;
 struct student * pNext;
}None, * pNone;

// 系统菜单
void Menu(void);
// 链表的创建
pNone Create_List();
// 交换两个节点的内容
void Exchange(pNone, pNone);
// 按总分从高到低排序
void Seq_List(pNone);
// 学生成绩的输入。
void Input(pNone);
// 成绩统计输出
void Output(pNone);
// 均分
void Average(pNone);

int main(void)
{
 // 定义链表的头地址
 pNone pHead1, pHead2, pHead3, pHead4;
 // 分别储存每个班级的学生成绩信息
 pHead1 = Create_List();
 pHead2 = Create_List();
 pHead3 = Create_List();
 pHead4 = Create_List();
 while (1)
 {
  // 菜单
  Menu();
  int i, j;
  // 输入所需服务序号
  scanf("%d", &i);
  switch (i)
  {
   case 1:
   {
       printf("请输入您的班级:");
    scanf("%d", &j);
    printf("\n");
    switch (j)
    {
     case 1:
      Input(pHead1);
      break;
     case 2:
      Input(pHead2);
      break;
     case 3:
      Input(pHead3);
      break;
     case 4:
      Input(pHead4);
      break;
     default:
      printf("输入错误!\n");
      break;
    }
    break;
   }
   case 2:
   {
    printf("请输入您的班级:");
    scanf("%d", &j);
    printf("\n");
    switch (j)
    {
     case 1:
      Output(pHead1);
      break;
     case 2:
      Output(pHead2);
      break;
     case 3:
      Output(pHead3);
      break;
     case 4:
      Output(pHead4);
      break;
     default:
      printf("输入错误!\n");
      break;
    }
    break;
   }
   case 3:
   {
    printf("请输入您的班级:");
    scanf("%d", &j);
    printf("\n");
    switch (j)
    {
     case 1:
      Average(pHead1);
      break;
     case 2:
      Average(pHead2);
      break;
     case 3:
      Average(pHead3);
      break;
     case 4:
      Average(pHead4);
      break;
     default:
      printf("输入错误!\n");
      break;
    }
    break;
   }
   case 4:
   {
    printf("欢迎下次下来!\n");
    break;
   }
   default:
       printf("输入错误!\n"); 
  }
  if (4 == i)
      break;
 }
 
 return 0;
}

pNone Create_List(void)
{
 pNone pHead, pTemp, pNew;
 pHead = (pNone)malloc(sizeof(None));
 if (NULL == pHead)
 {
  puts("内存分配失败!");
  exit(1);
 }
 pTemp = pHead;
 pHead->pNext = NULL;
 int j;
 for (j = 0; j < N; ++j)
 {
  pNew = (pNone)malloc(sizeof(None));
  if (NULL == pNew)
     {
      puts("内存分配失败!");
      exit(1);
     }
  pTemp->pNext = pNew;
  pNew->pNext = NULL;
  pTemp = pNew;
 }
 
 return pHead;
}

void Menu(void)
{
 printf("******************************************************\n");
 printf("              欢迎登陆学生管理系统                    \n");
 printf("(1)学生成绩录入:\n");
 printf("(2)班级总体考试得分情况:\n");
 printf("(3)班级均分:\n");
 printf("(4)退出系统!\n");
 printf("请输入您想要执行的项目编号:\n");
 printf("*******************************************************\n");
 
 return;
}

void Exchange(pNone p, pNone q)
{
 pNone pTemp;
 pTemp = (pNone)malloc(sizeof(None));
 if (NULL == pTemp)
 {
  puts("内存分配失败!");
  exit(1);
 }
 strcpy(pTemp->name, p->name);
 strcpy(p->name, q->name);
 strcpy(q->name, pTemp->name);
 pTemp->math = p->math;
 p->math = q->math;
 q->math = pTemp->math;
 pTemp->English = p->English;
 p->English = q->English;
 q->English = pTemp->English;
 pTemp->C = p->C;
 p->C = q->C;
 q->C = pTemp->C;
 pTemp->amount = p->amount;
 p->amount = q->amount;
 q->amount = pTemp->amount;
 
 
 return;
}

void Seq_List(pNone pHead)
{
 pNone pTemp1, pTemp2, pTemp;;
 while (NULL != pHead->pNext)
 {
     pTemp1 = pHead->pNext;
     pTemp = pTemp1;
  while (NULL != pTemp->pNext)
  {
   pTemp2 = pTemp->pNext;
   if (pTemp1->amount < pTemp2->amount)
       Exchange(pTemp1, pTemp2);
   pTemp = pTemp->pNext;
  }
  pHead = pHead->pNext;
 }
 
 return;
}

void Input(pNone pHead)
{
 int i = 1;
 pNone pTemp;
 while (pHead->pNext != NULL)
 {
  pTemp = pHead->pNext;
  printf("请输入第%d个学生的姓名:", i);
  scanf("%s", pTemp->name);
  printf("\n");
  printf("请输入第%d个学生的数学成绩:", i);
  scanf("%d", &pTemp->math);
  printf("\n");
  printf("请输入第%d个学生的英语成绩:", i);
  scanf("%d", &pTemp->English);
  printf("\n");
  printf("请输入第%d个学生的C语言成绩:", i);
  scanf("%d", &pTemp->C);
  pTemp->amount = pTemp->math + pTemp->English + pTemp->C;
  printf("\n");
  ++i;
  pHead = pHead->pNext;
 }
 
 return;
}

void Output(pNone pHead)
{
 Seq_List(pHead);
 int i = 1;
 pNone pTemp;
 while (NULL != pHead->pNext)
 {
  pTemp = pHead->pNext;
  printf("No.%d 姓名: %s 数学:%-5d 英语:%-5d C语言:%-5d 总分:%-5d\n", i++, pTemp->name, pTemp->math, pTemp->English, pTemp->C, pTemp->amount);
  pHead = pHead->pNext;
 }
 
 return;
}

void Average(pNone pHead)
{
 int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
 int ave1, ave2, ave3, ave4;
 pNone pTemp;
 while (pHead->pNext != NULL)
 {
  pTemp = pHead->pNext;
  sum1 += pTemp->math;
  sum2 += pTemp->English;
  sum3 += pTemp->C;
  sum4 += pTemp->amount;
  pHead = pHead->pNext;
 }
 ave1 = sum1/N;
 ave2 = sum2/N;
 ave3 = sum3/N;
 ave4 = sum4/N;
 printf("班级各科均分分别为:\n");
 printf("数学:%d\n", ave1);
 printf("英语:%d\n", ave2);
 printf("C语言:%d\n", ave3);
 printf("总均分为:%d\n", ave3);
 
 return;
}

错误及修改尝试过程

// 此过程修改思路为将链表节点位置互换

void Seq_List(pNone pHead)
{
 pNone pTemp, pMax, pTemp1, pTemp2, pBefore, pAfter;
 pTemp = pHead;
 int i, j;
 for (i = 0; i < N-1; ++i)
 {
  pTemp1 = pTemp->pNext;
     pTemp2 = pTemp1->pNext;
        pMax = pTemp1;
        pBefore = pTemp;
        // 记录此时正在用于判定的节点的地址
  pAfter = pTemp->pNext;
  for (j = 0; j < N-1-i; ++j)
  {
   if (pMax->amount < pTemp2->amount)
   {
    pMax = pTemp2;
    // 记录最大值的前一个节点的地址。
    pBefore = pTemp1;
   }
   pTemp1 = pTemp2;
   pTemp2 = pTemp2->pNext;
  }
  // 链表中将节点交换位置
  pBefore->pNext = pMax->pNext;
  pTemp->pNext = pMax;
  pMax->pNext = pAfter;
  pTemp = pMax;
 }
 
 return;
}

void Seq_List(pNone pHead)
{
 pNone pTemp, pMax, pTemp1, pTemp2, pBefore, pAfter, pB1, pA1;
 pTemp = pHead;
 int i, j;
 for (i = 0; i < 4; ++i)
 {
  pB1 = pTemp;
  pTemp1 = pB1->pNext;
     pTemp2 = pTemp1->pNext;
     pA1 = pTemp1->pNext;
        pMax = pTemp1;
        pBefore = pTemp;
        // 记录此时正在用于判定的节点的地址
  pAfter = pMax->pNext;
  for (j = 0; j < 4-i; ++j)
  {
   if (pMax->amount < pTemp2->amount)
   {
    pMax = pTemp2;
    // 记录最大值的前一个节点的地址。
    pBefore = pTemp1;
    pAfter = pMax->pNext;
   }
   pTemp2 = pTemp2->pNext;
  }
  // 链表中将节点交换位置
  pB1->pNext = pMax;
  pMax->pNext = pTemp1;
  pBefore->pNext = pAfter;
  pTemp = pMax;
 }
 
 return;
}

void Seq_List(pNone pHead)
{
 // pTemp 为中间值 pMax 为最大值的地址  pBefore, pAfter 为最大值前一个和后一个节点的地址
 pNone pTemp, pMax, pTemp1, pTemp2, pBefore, pAfter, pB1, pA1;
 pTemp = pHead;
 int i, j;
 for (i = 0; i < 4; ++i)
 {
  pB1 = pTemp;
  pTemp1 = pB1->pNext;
     pTemp2 = pTemp1->pNext;
     pA1 = pTemp1->pNext;
        pMax = pTemp1;
        pBefore = pTemp;
        // 记录此时正在用于判定的节点的地址
  pAfter = pMax->pNext;
  for (j = 0; j < 4-i; ++j)
  {
   if (pMax->amount < pTemp2->amount)
   {
    pMax = pTemp2;
    // 记录最大值的前一个节点的地址。
    pBefore = pTemp1;
    pAfter = pMax->pNext;
   }
   pTemp2 = pTemp2->pNext;
   if (j = 4-i-1)
        pTemp2 = NULL;
  }
  // 链表中将节点交换位置
  pB1->pNext = pMax;
  pMax->pNext = pTemp1;
  pBefore->pNext = pAfter;
  pTemp = pMax;
 }
 
 return;
}

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

typedef struct student
{
 int amount;
 struct student * pNext;
}None, * pNone;

pNone Create_List(void)
{
 pNone pHead, pTemp, pNew;
 pHead = (pNone)malloc(sizeof(None));
 if (NULL == pHead)
 {
  puts("内存分配失败!");
  exit(1);
 }
 pTemp = pHead;
 pHead->pNext = NULL;
 int j;
 for (j = 0; j < 5; ++j)
 {
  pNew = (pNone)malloc(sizeof(None));
  if (NULL == pNew)
     {
      puts("内存分配失败!");
      exit(1);
     }
  pTemp->pNext = pNew;
  pNew->pNext = NULL;
  pTemp = pNew;
 }
 
 return pHead;
}

void Seq_List(pNone pHead)
{
 // pTemp 为中间值 pMax 为最大值的地址  pBefore, pAfter 为最大值前一个和后一个节点的地址
 pNone pTemp, pMax, pTemp1, pTemp2, pBefore, pAfter, pB1, pA1;
 pTemp = pHead;
 int i, j;
 for (i = 0; i < 4; ++i)
 {
  pB1 = pTemp;
  pTemp1 = pB1->pNext;
     pTemp2 = pTemp1->pNext;
     pA1 = pTemp1->pNext;
        pMax = pTemp1;
        pBefore = pTemp;
        // 记录此时正在用于判定的节点的地址
  pAfter = pMax->pNext;
  for (j = 0; j < 4-i; ++j)
  {
   if (pMax->amount < pTemp2->amount)
   {
    pMax = pTemp2;
    // 记录最大值的前一个节点的地址。
    pBefore = pTemp1;
    pAfter = pMax->pNext;
   }
   pTemp2 = pTemp2->pNext;
   if (j = 4-i-1)
        pTemp2 = NULL;
  }
  // 链表中将节点交换位置
  if (pMax != pTemp1)
  {
   pB1->pNext = pMax;
   pMax->pNext = pTemp1;
      pBefore->pNext = pAfter;
  }
  pTemp = pMax;
 }
 
 return;
}

void Input(pNone pHead)
{
 int i = 1;
 pNone pTemp;
 while (pHead->pNext != NULL)
 {
  pTemp = pHead->pNext;
  printf("请输入第%d个学生的成绩:", i);
  scanf("%d", &pTemp->amount);
  ++i;
  pHead = pHead->pNext;
 }
 
 return;
}

void Output(pNone pHead)
{
 int i = 1;
 pNone pTemp;
 while (pHead->pNext != NULL)
 {
  pTemp = pHead->pNext;
  printf("第%d个学生的成绩位:%d\n", i, pTemp->amount);
  ++i;
  pHead = pHead->pNext;
 }
 
 return;
}

int main(void)
{
 pNone pHead1;
 pHead1 = Create_List();
 Input(pHead1);
 Seq_List(pHead1);
 Output(pHead1);
 
 return 0;
}

/*
请输入第1个学生的成绩:12
请输入第2个学生的成绩:32
请输入第3个学生的成绩:11
请输入第4个学生的成绩:6
请输入第5个学生的成绩:3
第1个学生的成绩位:32
第2个学生的成绩位:11
第3个学生的成绩位:6
第4个学生的成绩位:3

--------------------------------
Process exited after 5.753 seconds with return value 0
请按任意键继续. . .

请输入第1个学生的成绩:16
请输入第2个学生的成绩:15
请输入第3个学生的成绩:14
请输入第4个学生的成绩:13
请输入第5个学生的成绩:12
第1个学生的成绩位:15
第2个学生的成绩位:14
第3个学生的成绩位:13
第4个学生的成绩位:12

--------------------------------
Process exited after 6.714 seconds with return value 0
请按任意键继续. . .

请输入第1个学生的成绩:11
请输入第2个学生的成绩:12
请输入第3个学生的成绩:13
请输入第4个学生的成绩:14
请输入第5个学生的成绩:15
第1个学生的成绩位:12
第2个学生的成绩位:13
第3个学生的成绩位:14
第4个学生的成绩位:15
第5个学生的成绩位:11

--------------------------------
Process exited after 6.978 seconds with return value 0
请按任意键继续. . .

请输入第1个学生的成绩:12
请输入第2个学生的成绩:32
请输入第3个学生的成绩:14
请输入第4个学生的成绩:52
请输入第5个学生的成绩:11
第1个学生的成绩位:32
第2个学生的成绩位:14
第3个学生的成绩位:52
第4个学生的成绩位:12
第5个学生的成绩位:11

--------------------------------
Process exited after 7.34 seconds with return value 0
请按任意键继续. . .
*/

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

typedef struct student
{
 int amount;
 struct student * pNext;
}None, * pNone;

pNone Create_List(void)
{
 pNone pHead, pTemp, pNew;
 pHead = (pNone)malloc(sizeof(None));
 if (NULL == pHead)
 {
  puts("内存分配失败!");
  exit(1);
 }
 pTemp = pHead;
 pHead->pNext = NULL;
 int j;
 for (j = 0; j < 5; ++j)
 {
  pNew = (pNone)malloc(sizeof(None));
  if (NULL == pNew)
     {
      puts("内存分配失败!");
      exit(1);
     }
  pTemp->pNext = pNew;
  pNew->pNext = NULL;
  pTemp = pNew;
 }
 
 return pHead;
}

void Exchange(pNone p, pNone q)
{
 pNone pTemp;
 pTemp = (pNone)malloc(sizeof(None));
 if (NULL == pTemp)
 {
  puts("内存分配失败!");
  exit(1);
 }
 pTemp->amount = p->amount;
 p->amount = q->amount;
 q->amount = pTemp->amount;
 
 
 return;
}

void Seq_List(pNone pHead)
{
 pNone pTemp1, pTemp2, pTemp;;
 while (NULL != pHead->pNext)
 {
     pTemp1 = pHead->pNext;
     pTemp = pTemp1;
  while (NULL != pTemp->pNext)
  {
   pTemp2 = pTemp->pNext;
   if (pTemp1->amount < pTemp2->amount)
       Exchange(pTemp1, pTemp2);
   pTemp = pTemp->pNext;
  }
  pHead = pHead->pNext;
 }
 
 return;
}

void Input(pNone pHead)
{
 int i = 1;
 pNone pTemp;
 while (pHead->pNext != NULL)
 {
  pTemp = pHead->pNext;
  printf("请输入第%d个学生的成绩:", i);
  scanf("%d", &pTemp->amount);
  ++i;
  pHead = pHead->pNext;
 }
 
 return;
}

void Output(pNone pHead)
{
 int i = 1;
 pNone pTemp;
 while (pHead->pNext != NULL)
 {
  pTemp = pHead->pNext;
  printf("第%d个学生的成绩位:%d\n", i, pTemp->amount);
  ++i;
  pHead = pHead->pNext;
 }
 
 return;
}

int main(void)
{
 pNone pHead;
 pHead = Create_List();
 Input(pHead);
 Seq_List(pHead);
 Output(pHead);
 
 return 0;
}

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

typedef struct student
{
 int amount;
 // struct student * pNext;
}None, * pNone;

void Exchange(pNone p, pNone q)
{
 pNone pTemp;
 pTemp = (pNone)malloc(sizeof(None));
 if (NULL == pTemp)
 {
  puts("内存分配失败!");
  exit(1);
 }
 pTemp->amount = p->amount;
 p->amount = q->amount;
 q->amount = pTemp->amount;
 
 
 return;
}

int main(void)
{
 pNone s1, s2;
 s1 = (pNone)malloc(sizeof(None));
 s2 = (pNone)malloc(sizeof(None));
 s1->amount = 13;
 s2->amount = 15;
 Exchange(s1, s2);
 printf("%d, %d\n", s1->amount, s2->amount);
 
 return 0;
}

时间: 2024-10-29 19:11:49

学习阶段总结2的相关文章

百度前端技术学院第一学习阶段总结

第一学习阶段已经结束了,针对HTML/CSS的训练,收获很多,现在对于CSS开始熟练,也享受一个漂亮的网页在手下诞生的满足感.今天再回过头去看看排行榜第一的各组的代码,继续学习. 任务一:使用了一些知道但很少用到的标签(可能也是因为以前练得太少了) 1.<figure>标签运用在在文档中插入图片,文档的内容与图片有关,是html5的新标签.使用<figcaption>元素为figure添加标题: 2.选择框<form><label>性别:</label

[liusy.api-SMJ]-创建工程范例 MAVEN archetype 学习阶段(一)

由于这个架构需要好多不同能力的工程,为了创建方便减少冗余,创建工程范例尤为重要 学习阶段: 参考资料 http://maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.html 1.将service maven工程作为基础代码 进入工程目录执行 mvn archetype:create-from-project 如果运行出错试试在POM中加入 <plugin>                <groupId&g

Jsp+Servlet+JavaBean学习阶段案例-留言板(MessageBoard)

Jsp+Servlet+JavaBean学习阶段的一个案例总结 名称:留言板(MessageBoard) 开发技术:Jsp+Servlet+JavaBean 数据库:Mysql 开发工具:IntelliJ IDEA 2016.1.3 服务器:Tomcat 8.0.36 功能说明 普通用户:增加删除修改留言信息 管理员:增加删除修改留言信息.管理用户.设置用户发帖留言权限 数据库结构 tb_user表 字段 类型 名称 说明 id int id name nvarchar 姓名 password

HoloLens开发手记 - 入门学习阶段总结

伴随着数月的期待,终于拿到了预订的HoloLens开发者版本套件.随着VR/AR/MR技术的热潮,国内外均对它们的应用与盈利前景持有积极的预期,这也直接导致了国内外当前投资VR/AR/MR技术的热潮.无论是融资数十亿美元的Magic Leap,还是Facebook.微软等科技巨头布局VR/AR市场,这股热潮不仅出现在风险投资领域,还席卷了消费者市场和智能硬件市场,这无疑引领了下一波互联网产业的爆发,而我们作为技术核心的开发者更不能落下.正如乔帮主所说:“Stay foolish,Stay Hun

[liusy.api-SMJ]-SMJ 介绍 学习阶段(二)

我选择的是  Spring + Mybatis + Jesery 无状态架构方案. JAVA 比较常用的架构 SSH spring struts2 hibernate流行一阶段后, SSM   spring struts2 mybatis 开始流行. 几个月前接触了一个电商项目,考虑架构采用什么样的组合比较合适呢? 对一些框架进行了分析,首先是spring ,spring的融合能力比较看好,也符合当前人员学习成本. Jesery 在restful 协议方面速度和规范比较有优势. 实际严格来说sp

汇道科技:经历这五个学习阶段 成为Java技术大牛妥妥的!

互联网大数据时代飞速发展,IT行业的薪资待遇水涨船高,不少人都心生羡慕,纷纷选择向IT行业进军,其中特别活得就是JAVA大军,每年都有数以万计的各行各业的人转行学习JAVA,那么,一个零基础的人要怎么学习JAVA蜕变成技术大牛呢?我们看看汇道科技JAVA技术总监怎么说. 学习JAVA要分阶段学习,不同资历的人要根据本身实际情况去学习,主要分为这几个阶段: 第一阶段:基础阶段(Java基础) 你将要在这个阶段学会的技能: 软件行业信息了解. java的魅力和安装. 变量. 常量. 算术. 关系.

IT大佬总结大数据个学习阶段,每天两小时,年薪百万不是梦

本阶段不需要编程,很多人听过大数据,听过人工智能,听过数据挖掘.但是几乎都有疑问:什么是大数据?什么是人工智能?大数据和人工智能能做什么?等等.这一阶段主要是答疑解惑,让大家明白这些概念,至少在和高端人士茶余饭后谈论大数据和人工智能的时候可以不需要"一脸懵逼". 如果已经对大数据和人工智能了解很透彻,可以跳过直接进入第一阶段. 第一阶段:linux 系统这章是基础课程,帮大家进入大数据领域打好 Linux 基础,以便更好地学习 Hadoop, NOSQL, Oracle, MYSQL,

java学习阶段三:运算符和结构学习

import java.util.Scanner;/* * JAVA中运算符的学习: * 算术运算符:+.-.*./ 和 %,两个整数相除,结果还是整数. * 赋值运算符:=.+=.-=.*=./=.%=.&=.|=.~=.^=.<<=.>>= . >>>=.++ 和 --. * 比较运算符:==.!=.<.<=.> 和 >=. * 逻辑运算符:&&.|| 和 !. * 位运算符:&.|.~.^.<&l

Python学习 —— 阶段综合练习二

综合之前的类的学习,做以下实例练习:(建议先不要看代码,自己先试着写:代码仅供参考,有多种实现方法) 1. Triangle  & Equilateral 1). 创建class Triangle 表示三角形,包含三个属性值:angle1.angle2.angle3: 类方法 check_angles():若三个角相加 == 180,return True:若不是,return False 1 class Triangle(object): 2 def __init__(self,angle1,