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

    1 删除字符串中数字字符

    1.设计思路

    (1)主要描述题目算法
    第一步:先用for循环比较每个数是否符合删除条件。
    第二步:如果符合就把这个数利用交换把这个数提前一位。

    2.实验代码

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

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

    无错误.

    2 统计子串在母串出现的次数

    1.设计思路

    (1)主要描述题目算法
    第一步:定义一个sum作为返回值。
    第二步:用循环和条件语句判断这个数是否等于'a','s','d'。等于就使sum加一。
    第三步:返回sum。
    (2)流程图

    2.实验代码

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

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

    无问题.

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

    1.设计思路

    (1)主要描述题目算法
    第一步:通过定义初值来空开最前和最后两个数值。
    第二步:根据循环和判断来判断大小交换选出最大值排在前面。
    第三步:然后不符合条件就一直返回函数不断循环。

    2.实验代码

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

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

    无。

    4输出学生成绩

    1.设计思路

    (1)主要描述题目算法
    第一步:定义一个数组来储存所给的数。
    第二步:根据条件找出最大值,最小值和平均值。
    第三步:最后再保留两位小数输出。

    2.实验代码

    #include <stdio.h>
    #include <math.h>
    #define N 1000 
    int main()
    {
      int n,i=0;
      float average=0,max=0,sum=0;
      int a[n];
      scanf("%d",&n);
      for(i=0;i<n;i++)
      {
        scanf("%d",&a[i]);
      }
      float min=a[0];
      for(i=0;i<n;i++)
      {
        if(max<a[i])
        max=a[i];
        if(min>a[i])
        min=a[i];
        sum=a[i]+sum;
      }
        printf("average = %.2lf
    ",sum/n);
        printf("max = %.2lf
    ",max);
        printf("min = %.2lf",min);
      return 0;
    }
    

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

    错误原因:输出格式有问题。
    改正方法:把%lf换成%.2lf就正确了。

    5计算职工工资

    1.设计思路

    (1)主要描述题目算法
    第一步:定义一个结构体,利用数组储存所给的数值。
    第二步:根据for循环求出最后的总工资。
    第三步:最后按所给的格式保留两位小数输出。

    2.实验代码

    #include<stdio.h>
    struct wages
      {
        char name[10];
        float  Basic;
      float floating;
        float  expenditure;
      };
      int main()
    {
      
      int N,i=0,n=0;
      scanf("%d",&N);
      struct wages a[N];
      for(n=0;n<N;n++)
      {
      	scanf("%s ",a[n].name);
        scanf("%f %f %f",&a[n].Basic,&a[n].floating,&a[n].expenditure);
      }
      for(n=0;n<N;n++)
      {
      	printf("%s ",a[n].name);
        printf("%.2f
    ",a[n].Basic+a[n].floating-a[n].expenditure);
      }
      return 0;
    }
    

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

    错误原因:结构体运用不熟练,结构体数组定义错误.
    改正方法:在主函数内定义struct wages a[N]即可。

    6计算平均成绩

    1.设计思路

    (1)主要描述题目算法
    第一步:利用结构体把数值存入数组,把编号定义成字符方便最后输出。
    第二步:把分数相加除以人数求平均值。
    第三步:判断低于平均线的人再进行输出。
    (2)流程图

    2.实验代码

    #include<stdio.h>
    struct T
      {
        float  num[6];
        char name[10];
        float  ach;
      };
    int main()
    {
    	float sum=0;
      int N,i=0;
      scanf("%d",&N);
      struct T a[N];
    for(i=0;i<N;i++)
      {
        scanf("%s ",&a[i].num);
      	scanf("%s ",&a[i].name);
        scanf("%f",&a[i].ach);
      }
     for(i=0;i<N;i++)
     {
      sum=sum+a[i].ach;
     }
     float avger=sum/N;
     printf("%.2f
    ",avger);
     for(i=0;i<N;i++)
      {
        if(avger>a[i].ach)
        {
          printf("%s %s
    ",a[i].name,a[i].num);
        }
      }
      return 0;
    }
    

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

    (无)

    7 判断回文字符串

    1.设计思路

    (1)主要描述题目算法
    第一步:利用指针根据分数用不同的条件进行赋值。
    第二步:定义一个初值为0的数作为不及格人数,没有一个'D'就加一。
    第三步:返回不及格的人数。
    (2)流程图

    2.实验代码

    int set_grade( struct student *p, int n )
    {
      int i=0,t=0;
      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';
           t++;
        }
      }
      return t;
    }
    

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

    7结构体数组按总分排序

    1.设计思路

    (1)主要描述题目算法
    第一步:先求出每个人成绩的总和,再进行比较。
    第二步:把成绩高的人往前排。
    第三步:然后一直循环这个函数知道符合条件。

    2.实验代码

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

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

    无。

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

    这两周我学会了结构的概念,结构变量的定义和初始化结构变量的使用。

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


    https://git.coding.net/yangzhiqun/cfsafa.git

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

    徐伟业http://www.cnblogs.com/xuweiye/p/8747209.html
    徐铭博http://www.cnblogs.com/xmb1547828350/p/8657376.html于耀淞http://www.cnblogs.com/jsjyys/p/8672972.html###4、请用表格和折线图呈现你本周(3/12 8:00~3/26 8:00)的代码行数和时间、博客字数和时间(3分)。

  • 相关阅读:
    curl post请求
    c++/c字符串操作汇集
    CCClippingNode bug
    处理Google Play的相关方法
    libcurl断点下载
    c pvr转存pvr.ccz格式
    ios 设备震动
    cocos2d-x android项目引用so库编译
    cocos2d-x CCEditBox 字符不能显示完全的bug
    Android增量更新
  • 原文地址:https://www.cnblogs.com/12138-/p/8710478.html
Copyright © 2011-2022 走看看