一个特别固执的人


私信TA

用户名:grl

访问量:18872

签 名:

泰库拉

等  级
排  名 594
经  验 4066
参赛次数 1
文章发表 13
年  龄 22
在职情况 学生
学  校 长春理工大学
专  业 电子信息工程

  自我简介:

解题思路:1.首先题目要求要用到三个自定义函数,那么首先想到的是输入(input)、处理(compel)、输出(output)。

              2.然后是因为涉及到排序问题,然后我就想到了数组,但是怎样才能输出数组,后来我也是看了“我要看题解”得知可以用 void function_name(int* a)来表示(用return好像实现不了,我也不知道咋实现,欢迎大佬以这个思路来解决问题)。

              3.输入输出自不必说太多,for循环,scanf,printf,主要是对于compel的思路:

首先在内部函数里我定义了i(给for循环计数用的),var_data,var_count过渡变量,如果符合最值就将值付给过渡变量(数据和位数),最后再用一个过渡变量t完成互换运算.

              4.关于变量var_data,在比较最大值时为了让它进入if语句,我给他赋值为0;在比较最小值时,先给它赋初值为65535,后面在往下运行就是数组内部的操作了,


注意事项:1.这个看别人的了,所以就当做是笔记了,感觉还挺好.

              2.自己犯的错误,本来想定义max和min,后来互换的时候发现不对劲,数组内没有互换而且重复了,这个错误很不应该嗷.

              3.发现越往后面用到指针的知识变多了。

参考代码:

#include void input(int* a);
void output(int* a);
void compel(int* a);
int main(void)
{
	int a[10];
	input(a);
	compel(a);
	output(a);
	return 0;
}
void input(int* a)
{
	int i;
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
}
void compel(int* a)
{
	int i,t;
	int var_data=0,var_cout=0;
//最大值与最后一位的互换 
	for(i=0;i<10;i++)
	{
		if(var_data<=a[i])
		{
			var_data=a[i];
			var_cout=i;
	    }
	}
	t=a[9];
	a[9]=a[var_cout];
	a[var_cout]=t;
	
//最小值与第一位互换 
	var_data=65535;
	var_cout=0;
	for(i=0;i=a[i])
		{
			var_data=a[i];
			var_cout=i;
		}
	}
	t=a[0];
	a[0]=a[var_cout];
	a[var_cout]=t;
}
void output(int* a)
{
	int i;
	for(i=0;i<10;i++)
	{
		printf("%d ",a[i]);
	}
}


 

0.0分

11 人评分

  评论区

确定没写错代码?
2021-05-10 20:59:38
  • «
  • 1
  • »