输入一个正整数n (1<n≤10),再输入n个整数,将它们存入数组a中。

要求:1)输出最小值和它对应的下标。 2)将最小值与第1个数交换,输出交换后的n个数

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int n = 0, i;
int min = 0,minpos = 0;
int* a = NULL;
printf("请输入你要输入多少整数\n");
scanf("%d",&n);

a = (int*)malloc(n*sizeof(int));

if(a == NULL) return -1;

printf("请输入这%d个整数\n",n);
for(i=0; i<n;)
{
scanf("%d",a+i);
if(*(a+i)<2 || *(a+i)>10)
{
printf("重新输入\n");
}else{
i++;
}
}

min = *a;
for(i=0; i<n; i++)
{
if(*(a+i) < min)
{
min = *(a+i);
minpos = i;
}

}

printf("最小数%d,位置%d\n",min, minpos+1);

*(a+minpos) = *a;
*a = min;

for(i=0; i<n; i++)
{
printf("%d\t",*(a+i));
}
return 0;
}

//当输入的数可以重复的时候,暂时没考虑这个,需要的话,直接修改存储变量的代码即可
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-25
#include <stdio.h>
#include <stdio.h>
#define MAX 10

int main()
{
int num[MAX], n, min_index;
int i;

//输入并判断n
while(1)
{
printf("请输入n的值(1 < n <= 10):");
scanf("%d", &n);
if(n > 1 && n <= 10)
{
break;
}
else
{
printf("n的值不符合条件,请重输\n");
}
}

//给数组赋值
for(i = 0; i < n; i ++)
{
printf("请输入第 %d 个整数:");
scanf("%d", &num[i]);
}

//找出最小数并记录下标
min_index = 0;
for(i = 1; i < n; i ++)
{
if(mun[i] < num[min_index])
{
min_index = i;
}
}

//输出最小值和对应下标
printf("最小值是:%d,它对应的下标是:%d", mun[min_index], min_index);

//最小值与第一个数交换
i = num[0];
num[0] = num[index];
num[index] = i;

//输出交换后的结果
printf("交换后的数:");
for(i = 0; i < n; i ++)
{
printf("%d\t", num[i]);
}

return 0;
}
相似回答