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

    作业要求一

    提交记录

    1)C高级第二次PTA作业(1)

    2)C高级第二次PTA作业(2)

    3)C高级第二次PTA作业(3)

    作业要求二

    1)C高级第二次PTA作业(1)

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

    1.设计思路:

    主要描述题目算法:

    第一步:调用函数
    第二步:定义两个变量构成两个字符串
    第三步:利用循环判断该删除字节
    第四步:该删除字节利用另一个字符串的下一个补上
    第五步:返回主函数

    2.实验代码:

    `void delnum(char *s){
      int i,j=0;
      for(i=0;*(s+i)!='';i++)
      {
        if(*(s+i)<'0'||*(s+i)>'9')
        {
          *(s+j)=*(s+i);
          j++;
        }
      }*(s+j)='';
      return *(s+j);
    }`
    

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

    1.设计思路:

    主要描述题目算法:

    第一步:调用函数
    第二步:利用第一个循环实现字符串挨个查询
    第三步:利用第二个循环确定是否有相同的字符
    第四步:n返回主函数

    2.实验代码:

    `int fun(char *str,char *substr)
        {
          int i,j=0,n=0,a;
          for(i=0;*(str+i)!='';i++)
          {
            for (a=0;a<3;a++)
            {
    	    if*(str+i+a)==*(substr+j+a);
    	    else break;
            }	
    	    n++;
          }return n;
        }`
    

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

    1.设计思路:

    主要描述题目算法:

    第一步:调用主函数
    第二步:第一个循环确定字符串挨个字符查询
    第三步:利用判断排除第一个和最后一个
    第四步:利用循环进行降序排列
    第五步:返回主函数

    2.实验代码:

    `int fun(char *s,int num)
    {
      int i,j;
      for(i=0;i<num-1;i++)
      {
        if(i!=0||i!=num-2)
        {
          for(i=1;*(s+i)!='';i++)
          {
            for(j = i+1;j < num-1;j++)  
            {  
                  if(*(s+i)<*(s+j))  
                {  
                    int temp;  
                    temp = *(s+i);  
                    *(s+i) = *(s+j);  
                    *(s+j) = temp;  
                }  
           }
          
         }
       }
      }return *(s+i);
    }`
    

    7-1 输出学生成绩

    1.设计思路:

    主要描述题目算法:

    第一步:创立动态内存定义平均成绩、最高成绩和最低成绩
    第二步:输入学生的成绩
    第三步:找出最低成绩最高成绩并求出成绩之和
    第四步:利用成绩之和求出平均成绩
    第五步:输出平均成绩、最高成绩和最低成绩并清除动态内存

    2.实验代码:

    `#include<stdio.h>
    #include<stdlib.h> 
    int main(void)
    {
      int sum=0,*p,i,N;
      double max,min;
      double average;
      scanf("%d",&N);
      if((p=(int*)calloc(N,sizeof(int))) == NULL){
        printf("Not able to allocate memory.
    ");
        exit(1);
      }
      for(i=0;i<N;i++){
        scanf("%d",&*(p+i));
      }
      min = *p,max=*p;
      for(i=0;i<N;i++){
        sum = sum + *(p+i);
        if(*(p+i)>max){
          max = *(p+i);
        }
        if(*(p+i)<min){
          min = *(p+i);
        }
      }
      average = (double)sum / (double)N;
      printf("average = %.2f
    max = %.2f
    min = %.2f",average,max,min);
      free(p);
      return 0;`
    

    3.流程图:

    错误信息

    错误原因:第一次把`average = (double)sum / (double)N;`放在了` sum = sum + *(p+i);`下面,导致求了多个平均值。
    

    2)C高级第二次PTA作业(2)

    7-1 计算职工工资

    1.设计思路:

    主要描述题目算法:

    第一步:建立结构包括姓名、基本工资、浮动工资、支出、实发工资
    第二步:输入一共有几个职员
    第三步:利用循环输入姓名、基本工资、浮动工资、支出
    第四步:利用循环求出每个人的实发工资
    第五步:输出姓名和实发工资

    2.实验代码:

    `#include<stdio.h>
    struct nest_yuangong{
      char name[10];
      double jiben;
      double fudong;
      double zhichu;
      double shifa;
    };
    int main(void)
    {
      int i,n;
      struct nest_yuangong s[n];
      scanf("%d",&n);
      for (i=1;i<=n;i++){
        scanf("%s%lf%lf%lf",&s[i].name,&s[i].jiben,&s[i].fudong,&s[i].zhichu);
        s[i].shifa = s[i].jiben+s[i].fudong-s[i].zhichu;
      }
      for (i=1;i<=n;i++){
      	printf("%s %.2lf
    ",s[i].name,s[i].shifa);
      }
      return 0;
    }`
    

    7-2 计算平均成绩

    1.设计思路:

    主要描述题目算法:

    第一步:建立结构包括学生的学号、姓名和成绩
    第二步:输入一共有几个学生
    第三步:利用循环输入学生的学号、姓名和成绩
    第四步:利用循环求出成绩总和
    第五步:求出平均成绩并输出
    第六步:挑选出平均成绩以下的学生并输出

    2.实验代码:

    `#include<stdio.h>
    struct nest_student{
      char name[10];
      char number[5];
      int grade;
    };
    int main(){
      int i,n,sum=0;
      float average;
      scanf("%d
    ",&n);
      struct nest_student s[n];
      for(i=1;i<=n;i++){
        scanf("%s %s %d",s[i].number,s[i].name,s[i].grade);
        sum = sum + s[i].grade;
      }
      average=(float)(sum*1.0/n*1.0);
      printf("%.2f
    ",average);
      for(i=1;i<=n;i++){
        if((float)(s[i].grade) < average){
          printf("%s %s
    ",s[i].name,s[i].number);
        }
      }
      return 0;
    }`
    

    3.流程图:

    错误信息

    错误原因:输入的时候强制改变数字类型。
    

    3)C高级第二次PTA作业(3)

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

    1.设计思路:

    主要描述题目算法:

    第一步:调用函数
    第二步:利用循环求出不及格数目
    第三步:利用循环决定每个学生等级
    第四步:返回主函数

    2.实验代码:

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

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

    1.设计思路:

    主要描述题目算法:

    第一步:调用主函数
    第二步:利用循环求出每个学生总成绩
    第三步:利用循环给每个学生的总分从高到低排序
    第四步:返回主函数

    2.实验代码:

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

    3.流程图:

    错误信息

    错误原因:用指针的时候与用数组弄混,忘记了`(p)->`这种指示方式。
    

    作业要求三

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

    这两周主要学习了结构还有动态内存这两方面,我觉得掌握的还可以,但是对于结构中的函数掌握的还是不够熟练。

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

    git地址:https://git.coding.net/wuyaole/dayixiaxueqidiercizuoye.git
    图片:

    3、点评3个同学的本周作业

    1.胡景文:http://www.cnblogs.com/wshjw/p/8710431.html
    2.高立彬:http://www.cnblogs.com/gao628526/p/8665187.html
    3.丰大为:http://www.cnblogs.com/DavidPark/p/8664273.html

    4、表格和折线图

  • 相关阅读:
    【OPENGL】第二篇 HELLO OPENGL(续)
    【转载】关于在vs2013中配置opengl红宝书第八版环境
    【OpenGL】 第一篇 OpenGL概览
    【OpenGL】第二篇 Hello OpenGL
    【OpenGL】VAO与VBO
    面试题五 数组中出现次数超过一半的数字 时间为O(n)
    intellij idea激活,免费激活方式分享
    使用接口还是使用抽象类
    CRM(Customer Relationship Management)
    java提高篇-----字符串
  • 原文地址:https://www.cnblogs.com/wsbqz/p/8746704.html
Copyright © 2011-2022 走看看