• 第二次作业(第二学期)


    作业要求一 (20分)

    完成下列编程题目,每次上完课都会增加2-3道题目,并将编程过程记录在博客里,一次PTA作业任选一道题目给出设计思路、流程图、源代码和错误记录,其他题目可只给出设计思路、源代码和错误记录:

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

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

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

    4)C高级第一次PTA作业(4)

    作业要求二(65分)

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

    1.设计思路(6分)
    (1)主要描述题目算法(2分)。
    第一步:将所给字符串的每个字符的值进行比较,看其是否在0到9内。
    第二步:如果不在0到9内则输入至另一字符数组,否则略过,比较下一字符。
    第三步:将新数组的字符串复制到原数组。
    (2)流程图(4分)

    2.实验代码(2分)

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

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

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

    1.设计思路(6分)
    (1)主要描述题目算法(2分)。
    第一步:以每个字母为起点进行比较看其与其后的2个字符是否为asd。
    第二步:如是,则count进行一次计数。
    第三步:返回count的值。
    (2)流程图(4分)

    2.实验代码(2分)

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

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

    题目6-9 字符串中除首尾字符外的其余字符按降序排列
    1.设计思路(6分)
    (1)主要描述题目算法(2分)。
    第一步:在略过第一个字符和最后一个字符的基础上,利用选择排序的方法。
    第二步:从第二个字符开始,每一轮选出最大值放在最前面。
    第三步:之后每次循环略过已排好的字符,从还未排序的第一个字符进行如上排序操作。
    (2)流程图(4分)

    2.实验代码(2分)

    int fun(char *s,int num)
    {   char max,c;
    	int i,j,mark;
    	for(i=1;i<num-1;i++)
    	{max=*(s+i);
    	mark=i;
    	for(j=i;j<num-1;j++)
    	{
    	if(*(s+j)>max)
    	{   mark=j;
    		max=*(s+j);	
    	}
    		
    	}
    	c=max;
    	*(s+mark)=*(s+i);
    	*(s+i)=c;
    	}
    }
    

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

    题目7-1 输出学生成绩
    1.设计思路(6分)
    (1)主要描述题目算法(2分)。
    第一步:输入学生成绩数,并依次输出其成绩。
    第二步:进行求和运算,求平均值运算,并选出其最值。
    第三步:输出均值,最值。
    (2)流程图(4分)

    2.实验代码(2分)

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {int *p;
      int n;
      int i;
      double ave=0,max=0,min=0,sum=0;
      scanf("%d",&n);
      p=(int*)calloc(n,sizeof(int));	
        for(i=0;i<n;i++)
        {scanf("%d",(p+i));
    	}
    	min=*(p+0);
    	max=*(p+0);
    	for(i=0;i<n;i++)
    	{sum=sum+*(p+i);
    	if(*(p+i)<min)
    	{min=*(p+i);
    	 } 
    	 if(*(p+i)>max)
    	 {max=*(p+i);
    	 }
    	}
    	ave=sum/n*1.0;
    	printf("average = %.2lf
    max = %.2lf
    min = %.2lf",ave,max,min);
    	free(p);	
    	return 0;
    }
    

    3.本题调试过程碰到问题及解决办法(4分)
    错误原因:忽略了int除以double乘1.0的括号导致错误

    提交列表

    题目7-1 计算职工工资

    1.设计思路(6分)
    (1)主要描述题目算法(2分)。
    第一步:涉及输入多种类型数据,故先定义结构体
    第二步:输入人数,依次输入其各项数据,同时进行求和计算
    第三步:按输入顺序 输出其姓名 及数据
    (2)流程图(4分)

    2.实验代码(2分)

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

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

    7-2 计算平均成绩

    1.设计思路(6分)
    (1)主要描述题目算法(2分)。
    第一步:涉及多个类型数据,定义结构体
    第二步:输入人数,并依次输入各项数据,同时进行求和计算
    第三步:求出均值,并将每组的great值与其比较,输出比其小的姓名及数值。
    (2)流程图(4分)

    2.实验代码(2分)

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

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

    提交列表

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

    1.设计思路(6分)
    (1)主要描述题目算法(2分)。
    第一步:根据每个人分数,给低于60的计一次数。
    第二步:根据每个人的分数所在层次给其grade赋值。
    第三步:返回所计次数。
    (2)流程图(4分)

    2.实验代码(2分)

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

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

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

    1.设计思路(6分)
    (1)主要描述题目算法(2分)。
    第一步:根据每一个结构体内各数据求和。
    第二步:根据其和的值按照选择排序法对结构体数组各元素排序。
    第三步:输出结构体数组各元素。
    (2)流程图(4分)

    2.实验代码(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,mark;
         float max;
         struct student t;
    	for(i=0;i<n;i++)
    	{   mark=i;
    		max=(p+i)->sum;
    	for(j=i;j<n;j++)
    	{
    		if((p+j)->sum>max)
    		{
    			max=(p+j)->sum;
    			mark=j;
    		}
    	}
    	t=*(p+i);
    	*(p+i)=*(p+mark);
    	*(p+mark)=t;
    	}
    }
    

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

    提交列表


    要求三、学习总结和进度(15分)

    1、总结两周里所学的知识点有哪些学会了?(可记录每道作业题目所用的知识点)哪些还没有学会?
    学会了:1.结构数组的使用
    2.结构体作为函数参数
    3.结构体的定义与初始化
    2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。
    地址:https://git.coding.net/Donahue_Xu/The-Second-Homework2.git

    截图:

    3、点评3个同学的本周作业(在作业中给出被点评同学博客的链接),并邀请3名同学点评你的作业,无点评作业(你的作业未被3人点评)/或者没有回复同学或老师的点评都倒扣该题分数。(4分)
    刘炜旗:http://www.cnblogs.com/ryo-/p/8746826.html
    赵寅胜:http://www.cnblogs.com/2017023960ZYS/p/8653086.html
    史泽文:http://www.cnblogs.com/shilcz/p/8696341.html

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

    折线图:

  • 相关阅读:
    牛客小白月赛6 G 指纹锁 set的自动排序 模板
    牛客小白月赛6 E 对弈 思维
    牛客小白月赛6 F 发电 树状数组单点更新 求区间乘积 模板
    杭电多校第九场 hdu6424 Rikka with Time Complexity 数学
    杭电多校第十场 hdu6432 Cyclic 打表找规律
    杭电多校第十场 hdu6435 CSGO 二进制枚举子集
    二进制枚举子集模板
    C# DataTable删除行Delete与Remove的问题
    java.io.NotSerializableException错误解决方法
    Git使用gitignore建立项目过滤规则
  • 原文地址:https://www.cnblogs.com/xmb1547828350/p/8657376.html
Copyright © 2020-2023  润新知