算法
void findMin(int A[],int &i) //用i来保存最小值
{
i=A[0]; //i先保存存入A[0]的值
while(i/10 <= N-1) //取i的十位上的数字作为循环变量,与N-1作比较
{
if(i%10 > A[i/10])
{
i = i-i%10; //如果i的个位上的数字大于A[i/10]中
i = i+A[i/10]; //的数字,则将个位上的数字换成A[i/10]
}
i = i+10; //i的十位上的数字加1,即循环变量+1
}
i = i%10; //循环结束后,i的个位上的数字保存了A[]中的最小值,将i更新为i的个位上的数字
}
测试环境
#include<stdio.h>
#define N 10
void findMin(int A[],int &i) //用i来保存最小值
{
i=A[0]; //i先保存存入A[0]的值
while(i/10 <= N-1) //取i的十位上的数字作为循环变量,与N-1作比较
{
if(i%10 > A[i/10])
{
i = i-i%10; //如果i的个位上的数字大于A[i/10]中
i = i+A[i/10]; //的数字,则将个位上的数字换成A[i/10]
}
i = i+10; //i的十位上的数字加1,即循环变量+1
}
i = i%10; //循环结束后,i的个位上的数字保存了A[]中的最小值,将i更新为i的个位上的数字
}
int main(){
int a[10] = {3,5,7,2,8,1,4,5,2,7};
int i;
findMin(a, i);
printf("%d i",i);
}