zoukankan      html  css  js  c++  java
  • 2018上C语言程序设计(高级)作业- 第2次作业

    第二次作业

    2-1 删除字符串中数字字符

    1.设计思路

    第一步:遍历指针s所指的s数组。
    第二步:把不在0到9之间的s[i]赋予s[j++]。
    第三步:把'/0'赋给字符串最后一项。

    2.实验代码

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

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

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

    1.设计思路

    第一步:遍历数组,定义n=0。
    第二步:如果str[i]中连续三个字符分别与substr[]中三个字符串相等,则n++。
    第三步:返回n。

    2.实验代码

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

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

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

    1.设计思路

    第一步:遍历数组,去掉首尾两项。
    第二步:把中间的字符进行排序。

    2.实验代码

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

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

    2-4输出学生成绩

    1.设计思路

    第一步:输入数字个数n。
    第二步:建立for语句输入数据,计算和。
    第三步:遍历所有数据,并在其中用两个if语句判断出最大值和最小值并记录,计算平均值。
    第四步:输出最大最小值和平均数。

    2.实验代码

    #include<stdio.h>
    float max_a(float x,float y);
    float min_a(float x,float y);
    int main()
    {
    	int N,flag=1,D;
    	float average,max,min,sum=0.0;
    	scanf("%d",&N);
    	int i=0;
    	for(;i<N;i++){
    		scanf("%d",&D);
    		sum=sum+D;
    	if (flag==1)
       { 
        max=D;
        min=D;
        flag--;
       }
        max=max_a(max,D);
        min=min_a(min,D);
       }
        average=sum/N;
        printf("average = %.2f
    max = %.2f
    min = %.2f",average,max,min);
        
    }
    
    float max_a(float x,float y)
    {
     float z;
     if(x>y)
     z=x;
     else
     z=y;
     return(z);
    }
    float min_a(float x,float y)
    {
     float z;
     if(x<y)
     z=x;
     else
     z=y;
     return(z);
    }
    

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

    2-5计算职工工资

    1.设计思路

    第一步:定义职工的名字,基本工资,浮动工资和支出工资。
    第二步:建立for语句计算出所对于的实际工资并输出。

    2.实验代码

    #include<stdio.h>
    struct
    {
    	char name[10];
    	double a;
    	double b;
    	double c;
    }p; 
    int main()
    {
    	int N,i;
    	float d;
    	scanf("%d",&N);
    	for(i = 0;i<N;i++)
    	{
    		scanf("%s %lf %lf %lf",&p.name,&p.a,&p.b,&p.c);
    		d = (p.a + p.b - p.c)*1.00;
    		printf("%s %.2f
    ",p.name,d);
    	}
    	return 0;
    }
    

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

    2-6计算平均成绩

    1.设计思路

    第一步:定义学生的学号姓名成绩。
    第二步:输入学生个数N。
    第三步:把每个学生的成绩进行求和操作。
    第四步:求出平均值。
    第五步:进行遍历操作,找出在平均值以下的学生,输出。

    2.实验代码

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

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

    2-7按等级统计学生成绩

    1.设计思路

    第一步:建立for语句把每个人的分数所对应的等级赋给等级数组。
    第二步:在不及格的if语句里计数。
    第三步:输出。

    2.实验代码

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

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

    2-8

    1.设计思路

    第一步:在定义的第一个函数里进行定义循环变量k,之后通过遍历数组来计算出总分;
    第二步:根据总成绩进行排名。

    2.实验代码

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

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

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

    这两周我学习了关于字符串的应用,进行了指针方面的练习,还学了有关结构的定义。这两周的课上知识点自己感觉学的还可以,但有的时候还是不太会,我会在接下来的学习生活中多多努力的。

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

    git地址
    上传截图:

    3、点评3个同学的本周作业(在作业中给出被点评同学博客的链接),并邀请3名同学点评你的作业。

    http://www.cnblogs.com/kimhae/p/8659720.html
    http://www.cnblogs.com/jz19990201/p/8747094.html
    http://www.cnblogs.com/572453251asd/p/8746822.html

  • 相关阅读:
    JavaScript中的闭包
    正则表达式(括号)、[中括号]、{大括号}的区别
    写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
    正则替换实现字符串链接每4位用“-”连接成新的字符串
    memcache搭建
    MySQL优化
    网络优化
    JDK配置及tomcat部署
    oracle中增加pga和sga
    sudo用法
  • 原文地址:https://www.cnblogs.com/hgr123/p/8747239.html
Copyright © 2011-2022 走看看