第二次作业

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

主要描述题目算法

第一步:定义指针函数void delnum(char *s)
第二步:利用for循环判断指针元素是否'\0'
第三步:利用if判断袁术是否在是'0'到'9'间
第四步:按要求输出

流程图

第二次作业_第1张图片

实验代码

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

错误信息

错误原因:(s+i)=(s+k)导致的段错误
改正方法:将i与k调换

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

主要描述题目算法

第一步:定义指针函数int fun(char str,char substr)
第二步:利用双层for循环判断字符串出现的次数
第三步:将最后的n值返回主函数

流程图

第二次作业_第2张图片

实验代码

int fun(char *str,char *substr)
{
  int i,j,k,n;
  for(i=0;str[i]!='\0';i++)
  {
    for(j=i,k=0;substr[k]==str[j];k++,j++)
    {
      if(substr[k+1]=='\0')
      {
        n++;
        break;
      }
    }
  }
  return n;
}

错误信息

错误原因:无法编译
改正方法:将k负初值0
错误原因:无法停止
改正方法:在n++后加brake

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

主要描述题目算法

第一步:定义指针函数un(char *s,int num)
第二步:利用双层for循环(冒泡排序法)找到字符串的首尾字符的位置
第三步:将除首尾外的字符降序排序

流程图

实验代码

int fun(char *s,int num){
         int i,j,k,t;
         for(i=1;i

错误信息

错误原因:排序混乱 冒泡排序时超出范围
改正方法:规定范围

7-1 输出学生成绩

主要描述题目算法

第一步:定义个数变量n,以及各个变量sum=0,max,min,average,*p,i;
第二步:输入n
第三步:利用for循环计算n次sum的总和
第四步:利用for循环将最大和最小数负给max,min
第五步:计算平均值并输出

流程图

实验代码

#include
int main()
{
    int N;
    double sum=0,max,min,average,*p;
    int i;
    scanf("%d",&N);
    if((p=(double *)calloc(N,sizeof(double)))==NULL)
    {
        printf("Not able to allocate memory.\n");
        exit(1);
    }
    for(i=0;imax)
        max=*(p+i);
        if(*(p+i)

错误信息

错误原因:答案错误
改正方法:在计算平均值时用sum*1.0/n
错误原因:交换错误
改正方法:调换位置

7-1 计算职工工资

主要描述题目算法

第一步:定义结构数组
第二步:在主函数中引用此函数 输入N
第三步:利用for循环多次输入数据并计算实发工资
第四步:再循环中输出name和s

流程图

第二次作业_第3张图片

实验代码

#include
struct work{
    char name[10];
    float a,b,c;/*基本工资,浮动工资,支出*/
    float s;/*实发工资*/ 
}; 
int main()
{
    struct work s;
    int i,N;
    scanf("%d",&N);
    for(i=0;i

错误信息

错误原因:编译错误
改正方法:将s.c对应的改为%s

7-2 计算平均成绩

主要描述题目算法

第一步:定义结构函数
第二步:定义结构数组长度[10] 并sum赋初值0 输入N
第三步:利用for循环输入数据并计算sum
第四步:计算平均值并输出
第五步:利用for循环判断并输出小于平均值的人的name和num

流程图

实验代码

#include
struct student{
    char name[10];
    char num[10];
    float grade;
}; 
int main()
{
    int i,N;
    double average;
    struct student s[10];
    scanf("%d",&N);
    int sum=0;
    for(i=0;i

错误信息

错误原因:答案错误
改正方法:sum负初值0
错误原因:答案错误
改正方法:计算平均值数加1.0

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

主要描述题目算法

第一步:定义循环变量i和次数count
第二步:利用for循环判断元素中score的范围
第三步:在各个范围内输出grade的范围 凑那他加一
第四步:返回count

流程图

第二次作业_第4张图片

实验代码

    if(((p+i)->score)>=85)
    {
     (p+i)->grade='A';
int set_grade( struct student *p, int n )
{
  int i,coun(i=0;igrade='C';

     (p+i)->grade='B';
    }else if(((p+i)->score)>=60)

    }else
    {
      (p+i)->grade='D';    }else if(((p+i)->score)>=70)t=0;

      count++;
    }
  }
  return count;
}

错误信息

错误原因:编译错误
改正方法:将结构函数中的'.'改为'->'

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

主要描述题目算法

第一步:在第一个函数中,利用for循环计算所有sum的和
第二步:在第二个函数中引入结构函数
第三步:利用双层for循环将sum排序

流程图

实验代码

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

错误信息

错误原因:交换中错误
改正方法:将(p+i+1)放在(p+i)后

学习总结和进度

1、总结两周里所学的知识点有哪些学会了?(可记录每道作业题目所用的知识点)哪些还没有学会?

学会了指针,结构函数,在这些知识点中,在结构函数中将指针和结构函数组合还有些不不太熟悉。

我的git代码

[我的Git]https://coding.net/u/baisongtao/p/baisongtao/git/tree/master/?public=true
第二次作业_第5张图片
第二次作业_第6张图片

我点评的同学

http://www.cnblogs.com/lh991014/p/8667145.html [林昊]
http://www.cnblogs.com/qw123/p/8665906.html [李春杨]
http://www.cnblogs.com/wwb986187/p/8727528.html [王文博]

表格和折线图

第二次作业_第7张图片

你可能感兴趣的:(第二次作业)