zoukankan      html  css  js  c++  java
  • 第2次作业

    作业要求一

    请将pta作业编程题目的解题思路和调试过程记录在博客中,每道题目的具体格式如下:

    6-7 删除字符串中数字字符

    1.设计思路

         (1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
             第一步:定义指针变量p并将s赋值
             第二步:利用for循环遍历数组,if语句完成删除数字指令

             第三步:当赋值为结束字符''时,循环结束

          (2)流程图

    2.实验代码

    void delnum(char *s)
    {
        char *p=s;
        for(;*s;s++)
       {
            if(*s>'9'||*s<'0')
            *p++=*s;
       }
       *p='';
    }

    3.本题调试过程碰到问题及解决办法

          错误信息:
           错误原因:字符数组元素未用单引号‘’括起。
           改正方法:询问同学及查询课本后,进一步熟悉了字符数组的运用。

    6-8 统计子串在母串出现的次数

    1.设计思路
         (1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
             第一步:定义i,n
             第二步:创建一个for循环遍历数组,并在其中利用if语句判断前三个字符值

    2.实验代码

    int fun(char *str,char *substr)
    {
        int n=0,i;
        for(i=0;*(str+i)!='';i++){
            if(*(str+i)=='a'&&*(str+i+1)=='s'&&*(str+i+2)=='d')
            {
                n++;
            }
        }
        return n;
    }

    3.本题调试过程碰到问题及解决办法
          错误信息:
           错误原因:语句后缺少‘;’,并且返回值应该是n。
           改正方法:低级错误,通过编译器提示发现并改正。


       

     

     6-9 字符串中除首尾字符外的其余字符按降序排列

    1.设计思路
         (1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
             第一步:定义整形变量i,j,字符型变量t
             第二步:套用两个for循环进行排序
             第三步:用if语句比较大小并进行交换

    2.实验代码

    int fun(char *s,int num)
    {
        int i,j;
        char t;
        for(j=0;j<num-3;j++)
      for(i=1;i<num-j-2;i++)
      if(s[i]<s[i+1])
      {
        t=s[i]; 
        s[i]=s[i+1]; 
        s[i+1]=t;
      }
    }

    3.本题调试过程碰到问题及解决办法

          错误信息:无

       7-1 输出学生成绩

    1.设计思路
         (1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
             第一步:定义所需变量并按要求执行输入指令
             第二步:调用函数,将p中首地址赋最大最小值,之后判断大小并重新赋值,并用for循环进行数据计算
             第三步:使用if语句进行比较大小并输出

    2.实验代码

    #include <stdio.h>
    int main()
    {
        int i,n;
        float sum=0,average,max,min;
        scanf("%d",&n);
        float *p=(float *)malloc(n);
        for(i=0;i<n;i++)
        {
            scanf("%f",(p+i));
            sum+=*(p+i);
        }
        min=*(p+0);
        max=*(p+0);
        for(i=0;i<n;i++){
            if(min>*(p+i))
            {
                min=*(p+i);
            }
            if(max<*(p+i))
            {
                max=*(p+i);
            }
        }
        printf("average = %.2f
    ",sum/n);
        printf("max = %.2f
    ",max);
        printf("min = %.2f
    ",min);
        return 0;
    }

    3.本题调试过程碰到问题及解决办法
          错误信息:
           错误原因:缺少函数定义 float *p=(float *)malloc(n);
           改正方法:通过与同学交流并查询书籍得知

    7-1 计算职工工资

    1.设计思路
         (1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
             第一步:使用结构来表示职员信息
             第二步:使用嵌套的结构类型进行结构变量操作
          (2)流程图

     

    2.实验代码

     # include <stdio.h>
    struct salary {           
       int num;                      
       char name[10];                 
       float a,b,c;   
       double sum;                
    }; 
     int main(void)
    {   int i, n;
      struct salary s1;       
    
      scanf ("%d", &n);
    
      for (i = 1; i <= n; i++){
    
         scanf ("%s %f %f %f",s1.name,&s1.a,&s1.b,&s1.c);
        s1.sum = s1.a + s1.b - s1.c;
       printf("%s %.2lf
    ", s1.name,s1.sum);
       }
    
    return 0;
    }

    3.本题调试过程碰到问题及解决办法

          错误信息1:
           错误原因:输出指令中sum格式不正确
           改正方法:通过编译器输出框提示及观察改正
          错误信息2:
           错误原因:printf应在上一个括号内,未知错误导致输出结果错误
           改正方法:
    同学帮助并指出

    7-2 计算平均成绩

    1.设计思路
         (1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
             第一步:使用结构来表示学生基本信息
             第二步:使用嵌套的结构类型进行结构变量操作

    2.实验代码

    #include<stdio.h>
    struct student{
        char num[6];
        char name[10];
        int grade;
    }student1[10];
    int main()
    {
        int n,i;
        double average=0,sum=0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            
            scanf("%s %s %d",student1[i].num,student1[i].name,&student1[i].grade);
            sum=sum+student1[i].grade;
               
        }average=sum/n;
        printf("%.2f
    ",average);
         for(i=0;i<n;i++)
        {
            if(student1[i].grade<average)
            printf("%s %s
    ",student1[i].name,student1[i].num);
        }
        return 0;
    }

     3.本题调试过程碰到问题及解决办法

          错误信息:
           错误原因:
    num定义时未设置字节长度
           改正方法:
    对基本概念认知不清淅,询问室友了解


     6-1 按等级统计学生成绩

    1.设计思路
         (1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
             第一步:用else-if条件句分类讨论,设定i,j=0进行人数计算

             第二步:用指向运算符"->"访问指针指向的结构成员
          (2)流程图

     

    2.实验代码

    int set_grade( struct student *p, int n )
    {
      int i,j=0;
      for(i=0;i<n;i++,p++)
      {
        if(p->score <60)
        {
          j++;
        }
        if((p->score >=85)&&(p->score <=100))
        {
          p->grade = 'A';
        }
        else if((p->score >=70)&&(p->score <=84))
        {
          p->grade = 'B';
        }
        else if((p->score >=60)&&(p->score <=69))
        {
          p->grade = 'C';
        }else if((p->score >=0)&&(p->score <=59))
        {
          p->grade = 'D';
        }
        }
      return j;
    }

    3.本题调试过程碰到问题及解决办法

          错误信息1:
           错误原因:
    字符未用 ' ' 括起无法编译
           改正方法:
    通过Dev-c++编译器提示改正

          错误信息2:
           错误原因:
    if-else条件句不完整
           改正方法:
    用else隔离每一个新的条件句使情况分离

    6-2 结构体数组按总分排序

    1.设计思路
         (1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
             第一步:引用主函数中结构体,并用两个for循环和calc函数进行计算及输入输出
             第二步:用冒泡法排序,并按大小顺序进行交换

    2.实验代码

    void calc(struct student *p,int n)
    {
        struct student sum;
      int i,j=0;
      for(i=0;i<n;i++)
      {
        for(j=0;j<3;j++)
        {
          (p+i)->sum =(p+i)->sum + (p+i)->score[j];
        }
      }
    
    }
    
    void sort(struct student *p,int n)
    {
        int i,j,k;
        struct student t;
        for(i=0;i<n-1;i++)
        {
            k=i;
            for(j=i;j<n;j++)
            {
                if(((p+k)->sum)<((p+j)->sum))
                {
                    k=j;
                }
            }
            if(k!=i)
            {
                t=*(p+i);
                *(p+i)=*(p+k);
                *(p+k)=t;
            }
        }
    }

    3.本题调试过程碰到问题及解决办法

          错误信息:定义t时用了int型发现无法编译
           改正方法:
    改用结构体定义t

    要求三、学习总结和进度

    1、总结两周里所学的知识点有哪些学会了?哪些还没有学会?

          本章学习了结构、结构类型的一般定义以及如何嵌套使用,结构指针由于接触时间较短所以还并未完全熟练掌握,还需要再以后的作业及练习中继续努力。

    2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。

          我的git链接: https://git.coding.net/Downager/180408.git

    3、点评3个同学的本周作业(在作业中给出被点评同学博客的链接),并邀请3名同学点评你的作业,无点评作业(你的作业未被3人点评)/或者没有回复同学或老师的点评都倒扣该题分数。

          丰大为:https://home.cnblogs.com/u/DavidPark/

          孙铭婧:http://www.cnblogs.com/sun031915/

          吴晓明:https://home.cnblogs.com/u/gu-an-cheng-wxm/

    4、请用表格和折线图呈现你本周(3/26 8:00~4/9 8:00)的代码行数和所用时间、博客字数和所用时间

  • 相关阅读:
    5 TensorFlow入门笔记之RNN实现手写数字识别
    用python简便地抓取刘昊然的写真(17行代码)
    MFC实现简单飞机大战(含游戏声音)
    4 TensorFlow入门之dropout解决overfitting问题
    3 TensorFlow入门之识别手写数字
    2 TensorFlow入门笔记之建造神经网络并将结果可视化
    1 TensorFlow入门笔记之基础架构
    用python的turtle画分形树
    win10下安装TensorFlow(CPU only)
    python中math常用函数
  • 原文地址:https://www.cnblogs.com/zxy980612/p/8696690.html
Copyright © 2011-2022 走看看