本题要求编写程序,找出给定一系列整数中的最小值。
输入格式:
输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。
输出格式:
在一行中按照“min = 最小值”的格式输出n个整数中的最小值。
输入样例:
4 -2 -123 100 0
输出样例:
min = -123
在解题过程中遇到了一个问题,就是如果只有1个数字,我的两种解题方法就没法比较,所以我都加上了一个n=1的条件语句。
方法1:每输入一个一个数,都判断是否是最小值,是的话就用一个变量储存替换。
#include <stdio.h>
int main()
{
int a,n;
int i=0;
int min=0;
scanf("%d",&n);
if(n==1){
scanf("%d",&a);
printf("min = %d",a);
}//n=1直接输出min=a,防止特殊情况
else{//否则进入正常运行的循环,判断最小值min并输出
for(i=0;i<n;i++){
scanf("%d",&a);
min=(min<a)?min:a;//三目操作符,用于判断大小,并将较小的数字赋值给min,我的账号以前有讲过
}//此for循环共输入n个数字,每输入一个数,就判断与min的关系
printf("min = %d",min);
}
return 0;
}
方法2:用数组储存所有输入值,找出最小值
#include <stdio.h>
int main()
{
int i,n;
int a[20]={0};//储存每一个输入值
scanf("%d",&n);
if(n==1){
scanf("%d",&a[0]);
printf("min = %d",a[0]);
}//n=1直接输出min=a,防止特殊情况
else{
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
//使用循环判断并储存最小值到min
int min=0;
for(i=0;i<n;i++){
min=(min<a[i])?min:a[i];
}
printf("min = %d",min);
}
return 0;
}
如果不理解三目操作符,可以用如下
if(min<a[i])
min=a[i];
代码替代: