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]);
}
}
浙公网安备 33010602011771号