C语言博客05--指针

1.本章学习总结

1.1 思惟导图

1.2 本章学习体会及代码量学习体会

1.2.1 学习体会

  • 指针的概念和地址有关,有点抽象,刚接触时理解起来有点困难。懂得它的指向后能够理解。
  • 指针在使用时需搞清楚何时加*,何时不加*。注意传进去的是地址,在适当的地方加上取地址符&
  • 经过指针能改变原有所指向的值,利用此点能够在函数中运用,没必要考虑返回值。
  • 作指针题时最好把关系图画出来,这样能够思路清晰一点。

1.2.2 代码累计

 

 

2.PTA总分

2.1截图PTA中函数题目集的排名得分

 

 

2.2 个人总分:

  • 总分:110分

3.PTA实验做业

3.1 PTA题目1

说反话-增强版:

给定一句英语,要求你编写程序,将句中全部单词的顺序颠倒输出。算法

3.1.1 算法分析

  • char a;
    每一个单词长度word=0
    gets(a);
    句子长度len=strlen(a)
    for(i=len-1;i>=0;i--)
    {
      if(a[i]!=空格)word++
      else if(word!=0) {
      for(i+1<=j<=i+word) printf(a[j])
       word初始为0     } end for
    } end for
    for循环结束后,以输入空格为参照,开始时未输入空格,再单独输出第一个单词
    for(j=0;j<word;j++) printf(a[j]); end for

     

3.1.2 代码截图

 

3.1.4 PTA提交列表及说明

 

  • 刚开始采用字符数组的方法来作,因未设置好多个空格的状况,致使输出错误。
  • 后改用二维数组的方法作,把每一个单词的位置做为行,长度做为列,但循环设置出现问题,输出错误
  • 改进二维数组,发现此方法不合适。
  • 又改成字符数组来作,充分考虑多空格状况后,答案正确

4.大做业

4.1.改造函数介绍

1.函数1

  • 构造字符数组存放算术表达式:数组

    无论哪一个级别的算式,请都生成一个字符数组存放函数

     

CreateExp(char *exp,int level) 传入算式与选择的难度 定义运算符:char op1,op2,op3(op2与op3做为难度二三的运算符,op1为难度一的) int i=rand()%4;控制随机生成运算符 int a,b;做为随机数 switch(i) { case 0:op= case 1:op= case 2:op= case 3:op= }end switch switch(level) { case 1:生成一位数一步加减乘除运算,存入exp; case 2:生成两位数两步加减乘除运算,存入exp; case 3:生成三位数两步加减乘除运算,存入exp; } end switch;学习

  • 代码截图:
  •  

  •  

2.函数2

  • ComputeExp(char *exp)传入运算式
    定义m存放每一个数,sum求和.
    char c,oldc;c每次为运算式每一个元素,oldc做为运算符
    int j=0;
    do
    {
       c=exp[j];
    
        if( c<='9'&&c>='0' ) 
               m = 10*m + c - '0';
        else {
        oldc=+, sum+=m
          oldc=-, sum-=m
         oldc=*, sum*=m
        oldc=/, sum/=m
        }
    }while(c=='=') end do;
     return sum;

     

  • 截图函数代码:
  •  

3.函数3,4

输出正确、错误信息,并统计正确的题数,错误的题数:
void correct()
{
   正确次数+1switch(rand()%3)
{

   case 0:printf("回答正确!good\n");break;
   case 1:printf("答案正确!!\n");break;
   case 2:printf("对了,good\n");break;
}
} end;
void wrong(void)
{
    错误次数+1
    printf("回答错了啊!\n");
} 
  • 代码截图:

4.函数5

  • 退出后计算正确率。
  •  double rate;
     rate=1.000*正确次数/总次数;  //计算正确率
  • 代码截图:

5.运行截图

 

4.3 与原有函数代码比较

  •  函数1:

  • 这一次的函数1按照老师给的要求:无论哪一个级别的算式,都生成一个字符数组存放。根据选择难度的不一样,生成对应的运算式;原来的函数是按照不一样的等级来分装,每一次都从新生成一个运算式,比较麻烦.
  • 函数2:

  • 这一次的函数2是把运算式传入此函数中,经过这个函数的运算,来计算运算式的结果,并把结果返回主函数;原来的函数是在每一等级中计算结果,并判断用户所输入的结果是否正确,计算次数较多,比较麻烦。
  • 函数3,4,5

  • 这一次输出正确信息、错误信息以及正确率时,经过多个函数来分别分装,减小了主函数中的内容,使主函数更加简洁。之前的大做业中没有设置这些函数,而是在每一个等级的函数中直接运算出来并输出。

4.4 改进大做业总结

  • 此次的大做业改进了很多,函数基本全都换掉了,但其中的一些思想:好比生成随机数与随机运算符、计算正确率、退出与否,仍是按照原来的方法。第一次按照等级来分装函数,思路简单,但代码量大;这一次按照运算式和计算来分装,显的简洁一些。
  • 问题:在函数的传入与返回之间有的仍是有些疑惑,编写中在一个函数中调用了另外一个函数的值,发现根本调用不了。在判断计算式是否正确的函数中碰到许多问题,就没有编写判断运算式是否合法这个函数。
相关文章
相关标签/搜索