WEEK SIX

 

   1、 函数的定义可以嵌套,但函数的调用不可以嵌套。

   2、 函数调用可以出现在执行语句中,但不能出现在表达式中。

   3、 定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用static 作为存储类别。

   4、 将一个函数定义为static后,该函数----只能被同一源文件中的函数调用,不能被其他源文件中的函数调用。

   5、 递归程序都能用非递归算法实现。

   6、 对于continue 语句,可以通过改变程序的结构而不改变它。

   7、 程序中各函数之间即允许直接直接递归调用也可简介递归调用。   

 

SAMPLE 

 solve

#include<stdio.h>
int main()
{
	int n;
	int i,a[10],min;                      //min表示存放的最小值的下标
	scanf("%d",&n);                     
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	min=0;                                //假设a[ 0]是最小值,及下标为0的值最小
	for(i=1;i<n;i++){ 
		if(a[i]<a[min]){              //再假设a[ I ]比上面假设的最小值的值还小
			min=i;
		}
	}printf("%d %d",a[min],min);
}

 

 

SAMPLE 2  

 

此题为上题的改进,需要添加赋值再输出;

代码:只需在上述for循环后面添加下述代码

       

int x=a[min];             //把最小的数赋值给新的量x

a[min]=a[0];             //把第一个数赋值给最小的数

       a[0]=x;             //把x赋值给数组中的第一个数,即最小数和第一个数位置调换

       for(i=0;i<n;i++){

              printf("%d ",a[i]);

  

完整代码:

#include<stdio.h>
int main()
{
	int n;
	int i,a[10],min;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	min=0;
	for(i=1;i<n;i++){
		if(a[i]<a[min]){
			min=i;
		}
	}
	int x=a[min];
	a[min]=a[0];
	a[0]=x;
	for(i=0;i<n;i++){
		printf("%d ",a[i]);
	}
	
}

  

相似题目,找出最大最小值,转换规定位置

 

 整代码:

#include <stdio.h>
int main()
{
	int i,x,n,max,min,MAX,MIN;
	int a[10];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	min=a[0];              //假设最小值为0下标的数 
	MIN=0;
	for(i=0;i<n;i++)
	{
		if(min>=a[i])      //若存在比第一个假设还小的数 
		{
			min=a[i];     //最小数重新赋值 
			MIN=i;        //记录最小数所在下标 
		}
	}
	x=a[MIN];
	a[MIN]=a[0];
	a[0]=x;          //多次赋值将最小值与第一个数转换位置 
	
	max=a[0];
	MAX=0;
	for(i=0;i<n;i++)
	{
		if(max<=a[i])
		{
			max=a[i];         
			MAX=i;           //假设最大值与上述最小值的方法相同 
		}
	}
x=a[MAX]; a[MAX]=a[n-1]; a[n-1]=x;
for(i=0;i<n;i++){ printf("%d ",a[i]); } }

  

posted @ 2021-10-31 23:12  这个士兵有点逗  阅读(45)  评论(0编辑  收藏  举报