第一次作业

题目6-1 计算两数的和与差。

1.设计思路。

(1)主要描述题目算法。

第一步:仔细阅读题目与主函数,读懂题意,得知函数中参数的意义。
第二步:输入调用函数函数接口。
第三步:将题中提到的op1和op2相加并且赋值于指针psum使其返回给主函数。
第四步:将题中提到的op1和op2相减并且赋值于指针pdiff使其返回给主函数。

(2)流程图。

2.实验代码。

void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
  *psum=op1+op2;
  *pdiff=op1-op2;
}

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

错误信息1:编译错误。(重新定义了指针。)

错误原因:基础掌握不熟。

改正方法:删除定义内容。

题目6-2 拆分实数的整数与小数部分

1.设计思路。

(1)主要描述题目算法。

第一步:仔细阅读题目与主函数,读懂题意,得知函数中参数的意义。
第二步:输入调用函数函数接口。
第三步:定义实数 t;(用来储存记录 x 除以 1 取整的整数部分。)
第四步:将之前提到的 t (x 的整数部分)赋值于指针 intpart 使其返回给主函数。
第五步:将之前提到的 t 和 x 相减得到 x 的小数部分并且赋值于指针 fracpart 使其返回给主函数。

(2)流程图。

2.实验代码。

void splitfloat( float x, int *intpart, float *fracpart )
{
  int t;
  t=x/1;
  *intpart=t;
  *fracpart=x-t;
}

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

错误信息1:编译错误。(符号错误。)

错误原因:过于粗心。

改正方法:仔细检查,找到了错误。

=============================================================================================

题目6-1 在数组中查找指定元素

1.设计思路。

(1)主要描述题目算法。

第一步:仔细阅读题目与主函数,读懂题意,得知函数中参数的意义。
第二步:输入调用函数函数接口。
第三步:定义返回元素 index 以及循环变量 j (用于循环。)。
第四步:创建循环,使其当数组中有元素等于查找元素时,返回下角标 j 到主函数并结束循环。
第五步:将 index 赋值为 -1 ;使循环结束后如果没有找到查找元素,则返回 index 为-1;结束调用函数。

(2)流程图。

2.实验代码。

int search( int list[], int n, int x )
{
	int index;
	int j;
	for(j=0;j<=n;j++){
		if(list[j]==x){
			return j;
			break;
		}
	}
	index=-1;
	return index;
}

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

错误信息1:无。

错误原因:无。

改正方法:无。


题目6-2 找最大值及其下标

1.设计思路。

(1)主要描述题目算法。

第一步:仔细阅读题目与主函数,读懂题意,得知函数中参数的意义。
第二步:输入调用函数函数接口。
第三步:定义指针 p (用于接下来的循环。)以及最大值 max(用于储存最大值,并将其记录循环比较。)。
第四步:创建循环,利用指针 p 在数组a中使每个元素和最大值比较,如果大于最大值,将元素赋值与最大值,并利用指针 b 记录其下标。
第五步:返回最大值max。

(2)流程图。

2.实验代码。

int fun(int *a,int *b,int n)
{
	int *p;
	int max;
	max=*a;
	for(p=a+1;p<a+n;p++){
	    if(max<*p){
	    	max=*p;
	    	*b=p-a;
		}
	}return max;
}

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

错误信息1:无。

错误原因:无。

改正方法:无。

===========================================================================================

题目6-1 最小数放前最大数放后

1.设计思路。

(1)主要描述题目算法。

第一步:仔细阅读题目与主函数,读懂题意,得知函数中参数的意义。
第二步:输入调用函数函数接口。
第三步:在第一个函数接口后定义实数 i;之后创建循环使其输入数组中每个元素;循环后返回数组到主函数。
第四步:在第二个函数接口后定义最小值 min ,以及最大值 max ,并将数值中第一个元素 arr[0] 分别赋值给他们;同时定义接下来要用的实数变量 x , t1 , t2 , y1 , y2 用于接下来的循环等过程。
第五步:创建两个循环将数组中的每个元素与最大值以及最小值比较;大于最大值将其赋值与 max 并记录其下标给 t1;同理小于最小值将其赋值与 min 并记录其下标给 t2;利用y1 y2 使函数中 t1 ,t2 位置的元素分别与数组中最后一个元素和最前一个元素互换。
第六步:在第三个函数接口后定义实数 j ;之后创建循环使其输出数组中每个元素。(注意:要用%3d ;意味着输出元素占3个字节,使其得到想要的输出格式。)

(2)流程图。

2.实验代码。

void input(int *arr,int n)
{
	int i;
	for(i=0;i<10;i++){
		scanf("%d",&arr[i]);
	}
	return arr[10];
}
void max_min(int *arr,int n){
	int min;
	min=arr[0];
	int max;
	max=arr[0];
	int x,t1,t2,y1,y2;
	for(x=0;x<10;x++){
	if(max<arr[x]){
		max=arr[x];
		t1=x;
	}
	if(min>arr[x]){
		min=arr[x];
		t2=x;
	}
}
  	y1=arr[t1];arr[t1]=arr[9];arr[9]=y1;
  	y2=arr[t2];arr[t2]=arr[0];arr[0]=y2;
}
void output(int *arr,int n){
	int j;
	for(j=0;j<10;j++){
		printf("%3d",arr[j]);
	}
	
}

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

错误信息1:格式错误(忘记打%3d使得输出格式与题目不符。)

错误原因:过于粗心;以及基础掌握不熟,不知道如何达到题目所要求的格式标准。

改正方法:仔细检查,找到了错误;并且向同学询问,使得错误得以改正。


posted @ 2018-03-25 20:35  好听的名字*  阅读(171)  评论(0编辑  收藏  举报