今日学习任务 内容回顾辅导及测试1.完成31问的嵌入式Linux开发工具篇问题整理2.完成关于C语言的4道测试题 今日任务完成情况 今日任务按计划完成1.巩固了前几天所学的知识点2.回顾了C语言,完成了测试今日开发中出现的问题汇总 1. 在测试中写计算器的程序时,while循环放错位置,导致出现了死循环(当while 循环不包括scanf时,执行的程序会在某一算法一直死循环,导致系统崩溃);2. 单引号中的单一字符不能有空格,格式错误;3. 两个for 循环要嵌套,不能并列使用;4. 递归调用要考虑两种特殊情况:0和1的阶层都为15. 编写字符串程序时,出现了段错误 今日未解决问题 出现的段错误,可以找到提示的段错误在哪一行,但检查代码后仍然修改不出来今日开发收获1. 巩固了有关Linux和C语言知识;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] != '