namecnedifnoc
2017-01-22 18:38
int high (int score[10])
{
int s,flag;
for(s=0;s<10;s++)
{
if(score[s]>score[s+1])
{
flag=score[s+1];
score[s+1]=score[s];
score[s]=flag;
}
return score[s+1];
}
}
int low (int score[10])
{
int q,lag;
for(q=0;q<10;q++)
{
if(score[q]<score[q+1])
{
lag=score[q+1];
score[q+1]=score[q];
score[q]=lag;
}
return score[q+1];
}
}
我试了一下,两个都是错的。。
score的下标应为0~9,但程序运行中涉及到了score[10](好吧但是因为另一个错误没有涉及)
return一句应该放在for循环的外面,否则循环只会执行一次
我不知道题主的思路有没有问题,我还是说一下吧。一般的求最大值的思路(求a[0]~a[9]中的最大值):
定义一个变量m,初始化为a[0]
将a[1]与m比较,如果a[1]>m,则把m的值改为a[1]的值。此时m的值为a[0]~a[1]中的最大值
将a[2]与m比较,如果a[2]>m,则把m的值改为a[2]的值。此时m的值为a[0]~a[2]中的最大值
依次类推,直到比较a[9]与m,最后使得m的值为a[0]~a[9]的最大值
给段代码参考:
int high(int score[10]) { int m, i; m = a[0]; for (i=1; i<10; i++) { if (a[i] > m) { m = a[i]; } } return m; }
最小值类似,把大小比较修改一下即可。不懂请追问。
C语言入门
926210 学习 · 20797 问题
相似问题