输入n个整数,找出最小的正整数并输出。
输入格式:
第一行输入一个正整数n(n<1000),第二行输入n个整数,用空格隔开。
输出格式:
输出一个整数为n个输入的整数中最小的正整数,如果没有找到,输出"not found"
输入样例:
3
8 5 9
输出样例:
5
#include <stdio.h>
int main(void)
{
int n,min,flag=0,m,i;
scanf("%d%d",&n,&min);
for(i=1; i<n; i++)
{
scanf("%d",&m);
if(m<min&&m>0)
{
flag=1;
min=m;
}
}
if(flag==0)
printf("not found");
else
printf("%d",min);
return 0;
}
- 开始以为最小数是负数,输出not found。原来是找不出正整数才输出not found,导致扣了4分。(:з」∠)
-
----------分割线-----------
- 以上代码写错了
- 不能以第一个数进行比较
- 例如:
3
-1 2 5
第一个数为负数,没有比它更小的数了应该是第一个大于零的数
没想到这里还有一个坑,重做的时候没对附上正确代码
#include <stdio.h>
int main(void)
{
int n,min,flag=0,a[1001],i,num=0;
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
for(i=0; i<n; i++)
if(a[i]>0)
{
min=a[i];
flag=1;
break;
}
if(flag==0)
{
printf("not found");
return 0;
}
for(i=0; i<n; i++)
if(a[i]<=min&&a[i]>0)
min=a[i];
printf("%d",min);
return 0;
}
- 我还是太菜了qwq