第二次作业(代码片段)

王文博 王文博     2022-10-31     631

关键词:

作业要求一


PS:提交答案正确后的再次提交是尝试不同的方法

作业要求二

题目1 删除字符串中数字字符

1. 设计思路

(1). 算法

第一步:定义一个新的字符数组a等于要修改的字符数组s

第二步:修改字符数组s,把a中不是数字的元素赋给s,完成字符串的删除。

(2). 流程图

2. 实验代码

void delnum(char *s)

	int i;
	char *a=s;
	for(i=0;*(a+i)!=\'\\0\';i++)
	
		if((*(a+i)<\'0\')||(*(a+i)>\'9\'))
		
			*s=*(a+i);
			s++; 
		
	
	*s=\'\\0\'; 


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

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

1. 设计思路

(1). 算法

第一步:从母串第i个元素开始与字串比较,母串子串依次加一,如果存在不相等的,则flag=0,如果flag=1,则count++,

第二步:然后从母串第i=i+1个元素开始比较,直到满足*(str+i+j)==\'\\0\'结束

第三步:返回count

这个题思路我不知道怎么描述好,可能描述的不是很清楚,不行就看看流程图吧

(2). 流程图

2. 实验代码

int fun(char *str,char *substr)

	int count=0,i,j=0,flag=1;
	for(i=0;*(str+i+j)!=\'\\0\';i++,flag=1)
	
		for(j=0;*(substr+j)!=\'\\0\';j++)
		
			if(*(str+i+j)!=*(substr+j))
			
				flag=0;
			 
		
		if(flag==1)
		
			count++;
		
	
	return count;


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

第一次做的时候没有考虑到通用性的问题,只是根据题目要求做。

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

1. 设计思路

(1). 算法

第一步:把字符串的首尾字符排除,剩余的字符按照从大到小的顺序冒泡排列

第二步:思路就是这样啊,我不是把题目复述了一遍,具体操作看代码

(2). 流程图

2. 实验代码

int fun(char *s,int num)

	int i,j,t;
	for(i=1;i<num-1;i++)
	
		for(j=1;j<num-i-1;j++)
		
			if(s[j]<s[j+1])
			
				t=s[j];s[j]=s[j+1];s[j+1]=t;
			
		
	 


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

题目4 输出学生成绩

1. 设计思路

(1). 算法

第一步:输入数据并计算平均值

第二步:再求最大值和最小值

第三步:输出数据

(2). 流程图

2. 实验代码

#include<stdio.h>
int main()

	int n,i;
	int *p;
	float max,min,average=0;
	scanf("%d",&n);
	if ((p = (int *) calloc (n, sizeof(int))) == NULL) 
	
        printf ("Not able to allocate memory. \\n");
	    exit(1);
	
	for(i=0;i<n;i++)
	
		scanf("%d",p+i);
		average=average+*(p+i);
    
    average=average/n;
    max=*p,min=*p;
    for(i=0;i<n;i++)
    
    	if(max<*(p+i))
    	
    		max=*(p+i);
		
		if(min>*(p+i))
    	
    		min=*(p+i);
		
	
	printf("average = %.2f\\n",average);
	printf("max = %.2f\\n",max);
	printf("min = %.2f\\n",min);


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

题目5 计算职工工资

1. 设计思路

(1). 算法

第一步:创建结构

第二步:输入数据

第三步:计算职工工资

第四步:输出数据

(2). 流程图

2. 实验代码

#include<stdio.h>
struct message 
	char name[10];
	float jibengz;
	float fudonggz; 
	float zhichu;
	float sum;
;
int main()

	int n;
	scanf("%d",&n);
	struct message m1;
	while(n--)
	
		scanf("%s%f%f%f",m1.name,&m1.jibengz,&m1.fudonggz,&m1.zhichu);
		m1.sum=m1.jibengz+m1.fudonggz-m1.zhichu;
		printf("%s %.2f\\n",m1.name,m1.sum);
	
 

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

错误原因:结构定义时如果把变量类型定义为int型则会出现错误

改正:改成float或double型即可

题目6 计算平均成绩

1. 设计思路

(1). 算法

第一步:创建结构,输入数据

第二步:计算平均成绩并输出

第三步:如果学生成绩在平均成绩下,输出其信息

(2). 流程图

2. 实验代码

#include<stdio.h>
struct student
	char id[6];
	char name[10];
	int score;
;
int main()

	int n;
	int i;
	float avg=0;
	struct student s[10];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	
		scanf("%s%s%d",s[i].id,s[i].name,&s[i].score);
		avg=avg+s[i].score;
	
	avg=avg/n;
	printf("%.2f\\n",avg);
    for(i=0;i<n;i++)
    
    	if(s[i].score<avg)
    	
    		printf("%s %s\\n",s[i].name,s[i].id);
		
	

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

错误原因:定义id时只给出5个空间,即char id[5]

改正:应为最后会有\\0,只要定义空间为6以上即可

题目7 按等级统计学生成绩

1. 设计思路

(1). 算法

第一步:判断学生成绩的等级,并赋给结构里统计等级的变量

第二步:在判断等级时,如果等级为D,则count加1,最后返回count

(2). 流程图

2. 实验代码

int set_grade( struct student *p, int n )

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


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

题目8 结构体数组按总分排序

1. 设计思路

(1). 算法

第一步:计算学生的总成绩

第二步:用冒泡排序按成绩降序把学生排列

(2). 流程图

2. 实验代码

void calc(struct student *p,int n)

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

void sort(struct student *p,int n)

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


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

作业要求三

1. 知识的总结

复习了指针,学习了结构。

都学会了。

2. 代码管理

Git地址

3. 点评

辛静瑶

李伍壹

陈天胤

4. 图表

不想弄了

第二次作业(代码片段)

第二次作业(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... 查看详情