//#define i 9
#include
float compa(float num[],int i)
{
/* float temp=num[i];
for(i--;i>=0;i--)
temp=(temp>num[i])?temp:num[i];
*/
/* float temp=*num;
for(i--;i>=1;i--)
{
num++;
temp=(temp>*num)?temp:*num;
}
*/
/* float temp=num[0];
for(int j=1;j<=i;j++)
if(temp
*/
float temp=num[0];
for(int j=1;j temp=(temp>num[j])?temp:num[j];
//上面几种方法,结果都是一样,内存出错
return temp;
}
void input(float num[],int i)
{
int j = i - 1;
printf("请输入10个数,每输入一个数按一次回车键:\n");
for(;j>=0;j--)
scanf("%f",num+j);
}
int main()
{
/* float num[9],temp;
int i;
printf("请输入10个数,每输入一个数按一次回车键:\n");
for(i=0;i<=9;i++)
scanf("%f",&num[i]);
for(i=1;i<=9;i++)
temp=temp>num[i]?temp:num[i];
printf("The max of ten is: %.2f\n",temp);
*/ //全部放在main中实现没出现问题
const int i=10;
float num[i];
input(num,i);
/* for(int j=1;j<=9;j++)
*num=(*num>num[j])?*num:num[j];
*/ // 1 比较函数放在main中实现没问题
*num=compa(num,i); //注释掉这个,换成上面的“1”就没问题。
printf("The max of ten is: %.2f\n",*num);
return 0;
}
这是改动后的程序,你自己认真研究一下。
问题不少,主要有:要想输入10个数,i应该定义成10,即double a[10];
还有不要int num[10]; 输入的时候用num++,num是个固定地址,是不能变的。
再就是for(int j=1;j<=i;j++) 不对,因为i=9则你定义的是double a[9],但实际上只到a[8],j==i时 a[9]是错误的。
其余改动的地方你自己看一下吧。祝好运。另外学会调试,比如断点,但不运行什么的是学编程很重要的,有空自己研究一下。能花一上午来想问题不简单,祝学习愉快。
我试了下,完全没有问题啊。不知道你到底遇到什么问题?