求最小值

xxl7102 2003-08-19 10:43:10
请大家帮我改一下代码:
#include<stdio.h>
void main()
{
int a[10];
int i,temp;
for(i=0;i<10;i++)
{ printf("input a number:\n");
scanf("%d",&a[i]);
if(a[i+1]>a[i])
temp=a[i];
}
printf("%d",temp);
}
虽然求出最小值,但越界了。

#include<stdio.h>
void main()
{
int a[10];
int i,j,temp;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(j=1;j<10;j++)
{ if(a[i]<a[j])
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
printf("%d",temp);
}
别人叫我这样做,却求不出最小值。
...全文
114 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxl7102 2003-08-20
  • 打赏
  • 举报
回复
为何结不了贴,“贴子回复次数大于跟给分次数”,不明白?
ShiChao 2003-08-20
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int a[10];
int i,temp;
for(i=0;i<10;i++)
{ printf("input a number:\n");
scanf("%d",&a[i]);
if(a[i+1]>a[i]) // 这里,当i = 9的时候,比较a[10]和a[9],当然越界
temp=a[i];
}
printf("%d",temp);
}
wangshewei 2003-08-20
  • 打赏
  • 举报
回复
求最小值的注意事项是:a[0]和其他的数是不同的。因为无论如何都要给temp赋a[0]的值。然后从1循环到9比较a[i]和temp的大小,将较小的值赋给temp。temp即为最小值。
xxl7102 2003-08-20
  • 打赏
  • 举报
回复
多谢各位老兄!
bm1408 2003-08-20
  • 打赏
  • 举报
回复
上面的代码太多了!

没有看!
只帮你增加人气!
danielhf 2003-08-20
  • 打赏
  • 举报
回复
#include <iostream>
#define size 10

using std::cout;
using std::cin;
using std::endl;

int main()
{
int a[size];
int min;

for (int i=0; i<size; i++) //接受输入
{
cout<<"Enter number: ";
cin>>a[i];
}
min=a[0]; //设第一个数为最小

for ( int j=0; j<size; j++) //依次比较size次
{
if (a[j+1]<a[j])
{ min=a[j+1] ;}
}
cout<<"The min number is : "<<min<<endl;

return 0;
}
caoyun 2003-08-20
  • 打赏
  • 举报
回复
大家看看我写的,初学者,写的不好,请批评

#include "stdio.h"
int min(int array[],int length);
void main()
{
int a[10];
int i,min;
for(i=0;i<10;i++)
{
printf("input a number:");
scanf("%d",&a[i]);
}
min=min(a,10);
prinf("the min number is %d",min);
}
int min(int array[], int length)
{
int p;
p=array[0];
for(int i=0;i<length-1;i++)
{
if(p>array[i])
{
p=array[i];
}
}
return p;
}
xiaomimiya 2003-08-20
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int a[10];
int i=0,temp;
printf("input a number:\n");
scanf("%d",&a[i]);
temp=a[i];
for(i=0;i<9;i++)
{
printf("input a number:\n");
scanf("%d",&a[i+1]);
if(a[i+1]<temp)
temp=a[i+1];
}
printf("%d",temp);
getch();
}
首先给你指出你的思路就是一个错误的。
1.十个数做比较只用9次循环就可以了。
2.在这种比较中a[i+1]没有赋值。
3.这种比较只是比较了a[i]和a[i+1]并不是新赋值的数和最小的数比较.
chon81 2003-08-20
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int a[10];
int i,temp;
for(i=0;i<10;i++)
{ printf("input a number:\n");
scanf("%d",&a[i]);
if(i==0) temp=a[i];//在输入第一个时,只能选第一个了.
if(temp>a[i]) //要是新输入的比前面最小的还小
temp=a[i];
}
printf("%d",temp);
}
bmj 2003-08-20
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int a[10];
int i,j,temp;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
temp=a[0];
for(i=0;i<10;i++)
{
if(a[i]<temp)
{
temp=a[i];
}
else
continue;
}
printf("%d",temp);
}
这样应该就可以了!
idontlikenickname 2003-08-20
  • 打赏
  • 举报
回复


你的思路大概是对的,越界在于a[i+1],在你原来的程序上做点改动就成了~

#include<stdio.h>
void main()
{
int a[10];
int i, temp;

for(i = 0; i < 10; i ++)
{
// 输入.
printf("input a number:");
scanf("%d", &a[i]);

// 比较与判断.
if(!i)
{
// 如果是第一个数,不做比较,直接存储到temp.
temp = a[i];
}
else
{
// 如果不是第一个数,则与已有的最小值temp比较,并记录正确的最小值.
if(a[i] < temp) temp = a[i];
}
}
// 输出.
printf("%d",temp);
}

xdzr 2003-08-20
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int a[10];
int i,min=32767;
for(i=0;i<10;i++)
{ printf("input a number:\n");
scanf("%d",&a[i]);
if(a[i]<min)
min=a[i];
}
printf("%d",min);
}
chunhai12 2003-08-19
  • 打赏
  • 举报
回复
int FindMin(int* ai,int n)
{
int result = ai[0];
for (int i = 1;i < n;++i)
if (ai[i] < result)
result = ai[i];
return result;
}
leafxx 2003-08-19
  • 打赏
  • 举报
回复
哦,写错了,应该是
for (i=0; i<10; i++){

if (temp>a[i+1])
temp = a[i+1];
}
leafxx 2003-08-19
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int a[10];
int i,temp;
for(i=0;i<10;i++)
{ printf("input a number:\n");
scanf("%d",&a[i]);
if(a[i+1]>a[i])
temp=a[i];
}
printf("%d",temp);
}
----------------------------------------

为什么要把数组的赋值和判断放在一起?
if(a[i+1]>a[i]),a[i]已经赋值,但是a[i+1]的值是未知的
先给数组赋值,再判断
#include<stdio.h>
void main()
{
int a[10];
int i,temp;
for(i=0;i<10;i++)
{ printf("input a number:\n");
scanf("%d",&a[i]);

}
temp = a[i];
for (i=0; i<10; i++){

if (a[i]>a[i+1])
temp = a[i+1];
}
printf("%d",temp);
}
anqiangli 2003-08-19
  • 打赏
  • 举报
回复
第一步,a[0]比什么?
fireseed 2003-08-19
  • 打赏
  • 举报
回复
为何要做两重循环?
Dragon132 2003-08-19
  • 打赏
  • 举报
回复
void main()
{
int a[10];
int i,temp;
printf("input a number:\n");
scanf("%d",&a[0]);
for(i=1;i<10;i++)
{ printf("input a number:\n");
scanf("%d",&a[i]);
if(a[i]>a[i-1])
temp=a[i-1];
}
printf("%d",temp);
}
Dragon132 2003-08-19
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int a[10];
int i,j,temp;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
temp=a[0];
for(i=1;i<10;i++)
{
if(temp>a[i])
temp=a[i];
}
printf("%d",temp);
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧