Description
找出数组中最大的元素的下标。
Input
多组测试(!!!!),每组先输入一个不大于10的整数n 然后是n个整数
Output
输出这n个整数中最大的元素及下标值
Sample Input
4
1 4 5 6
Sample Output
6 3
#include<stdio.h>
#include<math.h>
int main()
{
int n,a[10];
int i,max,loc;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=a[0];loc=0;
for(i=1;i<=n;i++)
if(a[i]>max) {
max=a[i];
loc=i;
}
}
printf("%d %d\n",max,loc);
return 0;
}
不使用“while(scanf()!=EOF)“时能正常运行,这个程序可以运行但是不能达到题目的要求。请问错在哪里?
小小修改即可,scanf()!=EOF并不能达到你想要的目的 ,改成上面用getchar即可。
运行结果如下:
噢~~刚又研究了下scanf
例如:
scanf("%d,%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
scanf执行成功时返回的是参数数目。
所以你这个也行,改为下面这样就行 运行结果一样
#include<stdio.h>我知道错在哪了,第二个for()语句后面的复合语句没有{}起来。不过你说的第一个改动我不太懂。getchar()和putchar()怎么用我都不知道……
追答 for(i=1; i<n; i++)