zoukankan      html  css  js  c++  java
  • C语言博客作业05--指针

    1.本章学习总结

    1.1 思维导图

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

    1.2.1 学习体会

    本周的学习内容主要是指针和结构体,这一块内容是难度比较大的一部分,也不容易掌握,主要是指针的指向方面需要很清晰的逻辑关系。首先就是指针的定义方面了,指针的定义不可以直接把一个之赋给指针,可以定义空指针,一般赋值的话都是给指针复制一个地址,如&cp=a,这样子就把指针的地址取到跟a相同的地方,也就是这个指针指向a。指针同时也是数组的一个帮助,他可以动态申请内存,不需要像数组一样定义一个具体的内存空间导致浪费内存。只针对于函数的好处在于不需要返回很多的值给主函数进行处理,可以直接把函数外面的值修改掉,不需要再次返回值。对于字符串,指针也有很多新的数组可以进行操作,比如strlen,stremp函数等等,都是以前没有学习过的函数。现在的主要问题还是对于这种语法的不熟练,需要尽快把题目做完整,然后从中进行整理和总结,找出指针的规律。

    1.2.2 代码累计

    2.PTA总分

    3.PTA实验作业

    3.1 PTA题目1

    6-2 判断回文字符串 (20 分)

    3.1.1 算法分析

    3.1.2 代码截图

    3.1.4 PTA提交列表及说明


    ·Q1:第一个遇到的问题就是没有看题目的要求,把输出都放进函数里
    ·A1:解决的办法就是改正代码,返回值改成true和false
    ·Q2:第二个遇到的问题就是定义了两个变量,分别从两边开始循环,导致有两个点错误
    ·A2:把两个变量改成一个,循环到中间时结束,定义一个开关变量来判断返回值

    4.大作业

    题目:实现小学四则运算。
    题目要求:
    题目有3个难度级别,分别为:
    第一级是1位数的一步加减乘除计算
    第二级是2位数的2步加减运算
    第三级是3位数的2步加减运算

    4.1.改造函数介绍

    1.函数1

    ·函数伪代码

    int main()
    {
    int degree;//等级变量定义
    int g;
    printf(" ");
    printf("小盆友,准备好开始了吗(ˉ▽ˉ;) ");
    printf("请输入你需要的难度哟⊙ω⊙ ");
    printf("1:简单一位数一步运算 2:中等两位数两步运算 3:高等三位数三步运算 ");
    printf("你想做几题呢(O ^ ~ ^ O) ");
    printf("
    ");
    srand( time( NULL ) );
    int num;
    int i;
    int j;
    scanf("%d",&num);
    for(i=1;i<=num;i++)
    {
    do
    {
    scanf("%d",&degree);//输入需要的等级
    getchar();
    switch(degree)//等级分级
    {
    case 1: Degree1();break;
    case 2: Degree2();break;
    case 3: Degree3();break;
    default:printf("小盆友,乖一点不要皮!"); i--;
    }
    }while(degree1&&degree2&&degree==3);
    }
    printf("%.0f",rights);//运行函数,输出话语
    return 0;
    }
    ·函数截图

    函数2

    ·伪代码

    void Degree1()
    {
    system("cls");//清屏函数
    double x,y;
    int n;//传递的输入等级degree
    double answer;//输入自己的答案
    char op;
    double result;
    x=rand()%10;//产生随机数
    y=rand()%10;
    n=rand()%4;
    switch(n)
    {
    case 1:op='+';result=x+y;break;//加减乘除法
    case 2:op='-';result=x-y;break;
    case 3:op='';result=xy;break;
    case 0:{
    if(x>=y)//除法的情况
    {
    op='/';result=x/y;break;
    }
    else
    {
    break;
    }
    }
    }
    int intd=(int)result;
    printf("%.0f%c%.0f=",x,op,y);//输出题目
    scanf("%lf",&answer);//输入答案
    if(answer==intd)//进行判断,是否符合题目要求
    {
    RightMessage();
    rights++;
    }else
    {
    WrongMessage();
    printf("正确答案是%d ",result);
    }return;
    }
    ·函数贴图

    函数3

    ·伪代码

    void Degree2()
    {
    system("cls");//清屏函数
    int x,y,z;//三个变量
    int n1,n2;//两个符号
    int answer;//输入自己的答案
    char op;
    int result=0;
    x=rand()%100;//产生随机数
    y=rand()%100;
    z=rand()%100;
    n1=rand()%2;
    n2=rand()%2;
    switch(n1)//第一个符号的类型
    {
    case 1:op='+';printf("%d%c%d",x,op,y);result=+x+y;break;
    case 0:op='-';printf("%d%c%d",x,op,y);result=+x-y;break;
    }
    switch(n2)//第二个符号的类型
    {
    case 1:op='+';printf("%c%d=",op,z);result=result+z;break;
    case 0:op='-';printf("%c%d=",op,z);result=result-z;break;
    }
    scanf("%d",&answer);
    if(answer==result)//判断输入正确或者是错误
    {
    rights++;
    RightMessage();
    }else
    {
    WrongMessage();
    printf("正确答案是%d ",result);
    }return;
    }
    ·代码贴图

    4.2.与原有函数比较

    整体来说,屏幕的优化提升,如果要把代码改成指针形式的话,还需要同学的指导和老师助教小哥哥的帮助

    4.3 大作业总结

    ·问题:当我对插入清屏函数时,运行时正确率却消失不见;
    ·解决:首先是更换函数位置,发现依旧不管用
    上述方法无法解决,便百度屏幕冻结函数来暂停,使正确率能够输出。
    ·总结:遇到的问题可以尝试自己解决,或者可以百度更多的方法、函数。记得曹老师的一句话:“平时可以不用一定要搞懂某些东西,用到的时候能懂就行。”

  • 相关阅读:
    刷题[CISCN2019 华东南赛区]Web4
    刷题[GWCTF 2019]你的名字
    刷题[b01lers2020]Life on Mars
    刷题[SUCTF 2018]GetShell
    洛谷入门2-分支结构
    洛谷入门3-循环结构:回文质数、斐波那契数列
    洛谷入门3-循环结构:金币、最长连号
    洛谷入门3-循环结构:津津的储蓄计划
    C++类成员初始化方法
    英语听力
  • 原文地址:https://www.cnblogs.com/lw123---/p/10134310.html
Copyright © 2011-2022 走看看