第二次作业(代码片段)

邓吃鱼 邓吃鱼     2022-11-01     479

关键词:

第二次作业(2)

7-1 计算职工工资

1.设计思路

(1)题目算法

第一步:输入员工数N,定义结构体数组
第二步:对结构体进行初始化,输入值
第三步:用for循环算出每组结构体实发工资tsalary
第四步:进行调试,针对个别细节问题进行修改

(2)流程图

2.实验代码

#include<stdio.h>
int main()

	int N,i;
	scanf("%d",&N);
	struct staff
		char name[10];
		float bsalary;
		float fsalary;
		float expend;
	staff[N];
	for(i=0;i<N;i++)
		scanf("%s %f %f %f",&staff[i].name,&staff[i].bsalary,&staff[i].fsalary,&staff[i].expend);
	
	float tsalary[N];		
	for(i=0;i<N;i++)
    tsalary[i]=staff[i].bsalary+staff[i].fsalary-staff[i].expend;
		printf("%s %.2f\\n",staff[i].name,tsalary[i]);
	
	return 0;
  	

3.调试问题及解决方法


7-2 计算平均成绩

1.设计思路

(1)题目算法

第一步:输入学生数N,定义学生结构数组
第二步:用for循环依次输入每组学生结构变量的值
第三步:求出所有学生的总成绩sum,再求出并输出平均成绩average,保留两位小数
第四步:将每位学生的成绩student[i].grade与平均成绩average进行比较,将低于平均成绩的学生的name num输出
第五步:调试,针对细节性错误进行修改

(2)流程图

2.实验代码

#include<stdio.h>
int main()

	int N,i;
	float sum=0,average;
	scanf("%d",&N);
	struct student
		int num;
		char name[10];
		float grade;
	student[N];
	for(i=0;i<N;i++)
		scanf("%d %s %f",&student[i].num,&student[i].name,&student[i].grade);
		sum=sum+student[i].grade;
	
	average=sum/N*1.0;
	printf("%.2f\\n",average);
	for(i=0;i<N;i++)
		if(student[i].grade<average)
			printf("%s %05d\\n",student[i].name,student[i].num);
		
	
	return 0;
  

3.调试问题及解决方法

错误信息:
错误原因:%d输出时,默认前面的0不输出
改正方法:%05d 需要固定输出几位数,就在d前加上数字几


第二次作业(3)

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

1.设计思路

(1)题目算法

第一步:找到需要调用的函数,及明确函数目的
第二步:用if将grade进行分类
第三步:当等级为D时,将不及格人数+1,以此类推
第四步:返回不及格人数
第五步:进行调试,对个别问题再进行修改

(2)流程图

2.实验代码

int set_grade( struct student *p, int n )

	int i,count=0;
	for(i=0;i<n;i++)
		if((p+i)->score>=85&&(p+i)->score<=100)
			(p+i)->grade=\'A\';
		
		if((p+i)->score>=70&&(p+i)->score<=84)
			(p+i)->grade=\'B\';
		
		if((p+i)->score>=60&&(p+i)->score<=69)
			(p+i)->grade=\'C\';
		
		if((p+i)->score>=0&&(p+i)->score<=59)
			(p+i)->grade=\'D\';
		
		if((p+i)->grade==\'D\')
			count ++;
		
	
	return count;

3.调试问题及解决方法

错误信息:The count for failed (<60): 为乱序数字
错误原因:没有给count定义初始值
改正方法:在count++前,定义count的值为0


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

1.设计思路

(1)题目算法

第一步:找到需要调用的两个函数,明确calc函数是用来统计结构变量中sum的值,sort函数主要是解决排序及交换问题
第二步:用循环算出sum的值,大致完成calc函数
第三步:用冒泡排序法根据sum的大小进行排序,注意替换过程中是每一位学生的所有相关数据都会随着sum的排序而发生改变
第四步:进行调试,解决相应的细节问题

(2)流程图

2.实验代码

void calc(struct student *p,int n)

	int i,j;

	for(i=0;i<n;i++)
		(p+i)->sum=0;
		for(j=0;j<3;j++)
		
			(p+i)->sum=(p+i)->sum+(p+i)->score[j];
		
	
    


void sort(struct student *p,int n)

	int i,j;
	struct student t;
	for(i=0;i<n-1;i++)
		for(j=0;j<(n-1-i);j++)
			if(p[j].sum<p[j+1].sum)
				t=p[j];
				p[j]=p[j+1];
				p[j+1]=t;
			
		
	

3.调试问题及解决方法

错误信息1:编译错误
错误原因:对t的定义错误,将t单纯地视为一个浮点数sum的过程替换值
改正方法:t也应该视为与sum类型相同的结构变量,将float t改为struct student t

错误信息2:输出结果只是对sum进行了重新排序,而其它信息没有发生变化
错误原因:在sort函数中,交换的时候只是对p[j].sum进行交换没有将整个p[j]结构体直接进行整体交换
改正方法:将p[j].sum后的.sum去掉,使之整体交换

错误信息3:calc函数存在问题,sum的求值出现错误
错误原因:将(p+i)->sum=0的初始赋值放在for循环外,但实际上,每次i的for循环代表算完一位同学的总成绩sum,因此每次i的for循环后都要使sum的值再次清零
改正方法:将(p+i)->sum=0放在第一次的循环后面,使每次i++后,(p+i)->sum的最初值也能重新归零

在修改过程中,学习到同学@马钰娟调用calc函数的方法:

运用一个for循环,思路简洁,让代码也更加简洁

1.学习总结和进度

(1)学习了字符串和结构体,及运用指针来表示字符串和结构体
(2)掌握如何定义一个字符串,字符串的初始化,字符串的引用,字符串的应用
(3)掌握如何定义一个结构体,结构体的初始化,结构体的引用,结构体的应用
(4)对博客园这项作业不能老是抱以消极的态度,尽量别拖欠。比如说今晚,虽然是踩着点只完成近期的几道题目,但是在这种归纳总结的过程中,状态会情不自禁地投入,回忆自己在调试过程时,是如何一步一步地进行修正,逐步靠近最终需要输出的结果。在独自完成每一题的小结后,不是累而是感受到自己在提出问题分析问题解决问题后的满足感。在以后的博客作业中,我想我会以更加积极的态度面对,每完成一次PTA作业,趁着记忆犹新将自己的思路及解题过程记录下来,高效率地完成好作业,而不是像现在这样踩点补作业。

2.git地址 the secend homework

3.评论

马钰娟
李伍壹
焦瑞君

第二次作业(代码片段)

第二次作业(3)6-1按等级统计学生成绩1.设计思路(1)题目算法第一步:找到需要调用的函数,及明确函数目的第二步:用if将grade进行分类第三步:当等级为D时,将不及格人数+1,以此类推第四步:返回不及格人数第五步:进... 查看详情

第二次作业(代码片段)

第二次作业提交列表第一题设计思路1.因为要删除所有数字,那么在输出字符时,当数组内的元素等于数字时,数组输出零2.用循环,把输出出来的新数组整合,就能得到想要的结果流程图代码voiddelnum(char*s)inti=0,j=0;for(;s[i]!=‘\0... 查看详情

第二次作业(代码片段)

6-7删除字符串中数字字符(1)第一步:读懂题意第二步:在草纸上模拟草图第三步:整理步骤并编译(2)实现代码#include"stdio.h"voiddelnum(char*s);intmain()charitem[80];gets(item);delnum(item);printf("%s\n",item);return0;delnum(char*s)chara[80]=0;intm= 查看详情

第二次作业(代码片段)

...一步:阅读题目要求及所给部分。     第二步:根据题意补全相应函数。(2)流程图:2.实验代码:#include"stdio.h"voiddelnum(char*s);intmain()charitem[80];gets(item);delnum(item);printf("%s\n",item); 查看详情

第二次作业(代码片段)

...串中数字字符1.设计思路(1)第一步:了解指针的用法;第二步:根据题意编写函数;第三步:用两个指针,遇到数字字符不动,遇到非数字字符存入。(2)流程图无2.实验代码#include"stdio.h"voiddelnum(char*s);intmain()charitem[80];gets(ite... 查看详情

第二次作业(代码片段)

一、开发软件选择之前安装过这次题目要求的VS和Eclipse,本次作业选择了使用不太熟练的Eclipse。下面截图为该软件图标二、编写一个Java程序1.建立项目:具体步骤:File->New->javaProject->Projectname->Next->Finish。2.导入Junit:... 查看详情

第二次作业(代码片段)

...中数字字符设计思路:第一步:审题,读懂题中参数意义第二步:理清思路,将函数补全流程图:实验代码:#include"stdio.h"voiddelnum(char*s);intmain()charitem[80];gets(item);delnum(item);printf("%s\n",item);return0;voiddelnum(char*s)inti,j;for(i= 查看详情

第二次作业(代码片段)

...步:观察题意了解各个参数与所需函数在题目中的意义;第二步:设计算法编写函数,让函数的功能实现题目中所需的功能;第三步:运行程序检测是否错误。(2)流程图无2.实验代码...include"stdio.h"voiddelnum(chars);intmain()charitem[80... 查看详情

第二次作业(代码片段)

...程序,了解题中各个参数的意义。     第二步:设计函数,执行题中所需功能。     第三步:运行,检查程序对错,加以补充。(2)流程图:2.实验代码#include"stdio.h"voiddelnum(char*s);intm 查看详情

第二次pta作业(代码片段)

...中数字字符设计思路:第一步:审题,读懂题中参数意义第二步:理清思路,将函数补全流程图:实验代码:#include"stdio.h"voiddelnum(char*s);intmain()charitem[80];gets(item);delnum(item);printf("%s\n",item);return0;voiddelnum(char*s)inti,j; 查看详情

第二次作业(代码片段)

...步:观察题意了解各个参数与所需函数在题目中的意义;第二步:设计算法编写函数,让函数的功能实现题目中所需的功能;第三步:运行程序检测是否错误。(2)流程图无2.实验代码#include<stdio.h>voidsplitfloat(floatx,int*intpart,... 查看详情

第二次作业(代码片段)

...步:观察题意了解各个参数与所需函数在题目中的意义;第二步:设计算法编写函数,让函数的功能实现题目中所需的功能;第三步:运行程序检测是否错误。(2)流程图无2.实验代码#include<stdio.h>voidsplitfloat(floatx,int*intpart,... 查看详情

第二次作业(代码片段)

...步:观察题意了解各个参数与所需函数在题目中的意义;第二步:设计算法编写函数,让函数的功能实现题目中所需的功能;第三步:运行程序检测是否错误。(2)流程图无2.实验代码#include<stdio.h>voidsplitfloat(floatx,int*intpart,... 查看详情

第二次作业(代码片段)

...步:观察题意了解各个参数与所需函数在题目中的意义;第二步:设计算法编写函数,让函数的功能实现题目中所需的功能;第三步:运行程序检测是否错误。(2)流程图无2.实验代码#include<stdio.h>voidsplitfloat(floatx,int*intpart,... 查看详情

第二次作业(代码片段)

...步:观察题意了解各个参数与所需函数在题目中的意义;第二步:设计算法编写函数,让函数的功能实现题目中所需的功能;第三步:运行程序检测是否错误。(2)流程图无2.实验代码#include<stdio.h>voidsplitfloat(floatx,int*intpart,... 查看详情

第二次作业(代码片段)

...步:观察题意了解各个参数与所需函数在题目中的意义;第二步:设计算法编写函数,让函数的功能实现题目中所需的功能;第三步:运行程序检测是否错误。(2)流程图无2.实验代码#include<stdio.h>voidsplitfloat(floatx,int*intpart,... 查看详情

第二次作业(代码片段)

...第一步:定义一个新的字符数组a等于要修改的字符数组s第二步:修改字符数组s,把a中不是数字的元素赋给s,完成字符串的删除。(2).流程图无2.实验代码voiddelnum(char*s)inti;char*a=s;for(i=0;*(a+i)!=‘\0‘;i++)if((*(a+ 查看详情

软件工程第二次作业(代码片段)

软件工程第二次作业一、选择开发工具因为我对java比较感兴趣,所以我选择了Eclipse,刚开始安装时忘记截图了,之后快装完时才想起来截图。二、使用Eclipse1.运行Eclipse2.需要测试的java类packagecaculator;publicclasscaculatorpublicintadd(inta... 查看详情