苏嵌//赵妍//2018.7.12

2019-07-13 07:51发布

   今日学习任务  内容回顾辅导及测试1.完成31问的嵌入式Linux开发工具篇问题整理2.完成关于C语言的4道测试题  日任务完成情况  今日任务按计划完成1.巩固了前几天所学的知识点2.回顾了C语言,完成了测试日开发中出现的问题汇总 1. 在测试中写计算器的程序时,while循环放错位置,导致出现了死循环(当while 循环不包括scanf时,执行的程序会在某一算法一直死循环,导致系统崩溃);2. 单引号中的单一字符不能有空格,格式错误;3. 两个for 循环要嵌套,不能并列使用;4. 递归调用要考虑两种特殊情况:01的阶层都为15. 编写字符串程序时,出现了段错误 日未解决问题 出现的段错误,可以找到提示的段错误在哪一行,但检查代码后仍然修改不出来日开发收获1. 巩固了有关LinuxC语言知识;2. 理清了while 循环和算法的逻辑关系,解决了while循环放错位置导致的死循环;3. 单个字符在单引号内不能出现空格;4. 两个for循环不能并列执行,要进行嵌套;5. 段错误的解决:学会了如何查找程序的错误在哪里。步骤:step1:gcc -g            Step2:ulimit -a            Step3:ulimit -c 10240            Step4:ls            Step5:gdb a.out core.6113最后可以看见提示的错误在哪一行,按q退出调试模式,对代码进行修改。6.vim 中消除着 {MOD}标记用:noh 自我评   1. 今天通过整理嵌入式Linux开发工具篇问题巩固了知识点,但有些仍然不熟练,后期需加强理解和记忆;2. 通过4道编程题认识到自己对C语言知识掌握的不牢固,加深了对C的语法的学习,编程也需要不断加强其他   1. C语言打印出杨辉三角 #include  int main()  {      int i;      int j;      int n;      int a[17][17];                          //定义一个二维数组的长度      printf("Please enter line of length: "); //输入想要显示的行数      scanf("%d",&n);      for(i = 1;i <= n;i++)                      //二维数组的行循环      {          for(j = 1;j <= i;j++)                 //二维数组的列循环          if(i == j || j == 1)       //行和列相等的位置或者第一列都为1          a[i][j] = 1;          else          a[i][j] = a[i-1][j-1] + a[i-1][j]; //每一个数是上一行里相邻两个数之和      }          for(i = 1;i <= n;i++)                  //二维数组的行循环          {              for(j = 1;j <= i;j++)              //二维数组的列循环              {               printf("%5d",a[i][j]);             //输出杨辉三角形               }               printf(" ");           }           return 0;  }2.C语言实现简单的计算器(加、减、乘、除) #include  int add(int a, int b)                           //加法运算  {      int c;      c = a + b;      return c;  }    int sub(int a, int b)                          //减法运算  {      int d;      d = a - b;      return d;  }   int mul(int a, int b)                         //乘法运算  {      int e;      e = a * b;      return e;      }    int div(int a, int b)                        //除法运算  {      int f;      f = a / b;      return f;  }  int main() {      int i;                                    //定义数值      int j;                                    //定义数值      char k;                                   //定义+-*/      int c;                                    //加法运算结果      int d;                                    //减法运算结果      int e;                                    //乘法运算结果      int f;                                    //除法运算结果      while(1)      {          scanf("%d %c %d",&i,&k,&j);           //输入想要的运算          c = add(i,j);          d = sub(i,j);          e = mul(i,j);          f = div(i,j);          switch(k)          {              case '+': printf("%d ",c);break; //若为加法,输出结果              case '-': printf("%d ",d);break; //若为减法,输出结果              case '*': printf("%d ",e);break; //若为乘法,输出结果              case '/': printf("%d ",f);break; //若为除法,输出结果              default:  printf("error ");break; //若不是四种运算,输出错误          }      }      return 0;  }3.利用递归方法实现一个函数,该函数能够实现n的阶乘,n! = n*(n-1)**3*2*1;#include  int fac(int n)                                   //递归函数  {      float f;      if(n < 0)                                   //若n小于0      {          printf("n < 0, data error!");           //则输出数据错误      }      else          if(n == 0 || n == 1)                    //若n为0或者n为1,结果等于1          f =1;      else          f=fac(n - 1) * n;                      //结果为n*(n-1)!      return(f);                                 //返回结果  }   int main()  {      int n;      float y;      printf("input an integer number:");       //输入想要的阶层      scanf("%d",&n);      y = fac(n);      printf("%d! = %10.0f ",n,y);            //输出结果  } 4.输入一个字符串,计算字符串中子串出现的次数  #include  int main()  {      char str1[50];                               //定义字符串长度      char str2[10];                               //定义子串长度      int i = 0;      int j = 0;      int num = 0;                                 //定义次数为0      printf("Please enter two lines of string:");      scanf("%s %s",str1,str2);                    //输入字符串和子串      while(str1[i] != '