C语言编程出现运行错误,为什么,应该怎么改?
题目是输入数字用任意标志结束输入,输出最大值和次大值(用数组实现)我的代码用codeblocks写的,出现运行错误#include<stdio.h>#include<st...
题目是输入数字用任意标志结束输入,输出最大值和次大值(用数组实现)我的代码用codeblocks写的,出现运行错误#include <stdio.h>#include <stdlib.h>int compare(int a[],int);int main(){ int *p,a[100],i=0; *p=a[100]; printf("Please enter the integer you want to enter, and the end of the file is finished with the end of the file. \n"); //文件结束即为 在Windows下,输入完毕后先按回车,再按下Ctrl+Z,最后再按回车 while(scanf("%d",&a[i])!=EOF) i++; compare(*p,i); return 0;}int compare(int *p,int n){ int t=0,b=0,i,a[100]; *p=a[100]; for(i=0;i<n;i++)//比较大小输出最大值 t=a[i]>t? a[i]:t; printf("the largest number is %d\n",t); for(i=0;i<n;i++)//比较大小输出次大值 { if(a[i]<t) b=a[i]>b? a[i]:b; } printf("the number of the second largest is %d\n",b); return 0;}
老师的要求是用指针实现,我的代码里应该有指针错误的写法吧,望指正 展开
老师的要求是用指针实现,我的代码里应该有指针错误的写法吧,望指正 展开
2个回答
展开全部
删除第18行
把第17行改成: int t=0,b=0,i;
第15行的*p改成*a
第12行的*p改成a
删除第7行
把第17行改成: int t=0,b=0,i;
第15行的*p改成*a
第12行的*p改成a
删除第7行
追答
#include
#include
int compare(int *p,int);
int main()
{
int *p,a[100],i=0;
p=a; //让指针p指向数组a的起始地址
printf("Please enter the integer you want to enter, and the end of the file is finished with the end of the file. \n");
//文件结束即为 在Windows下,输入完毕后先按回车,再按下Ctrl+Z,最后再按回车
while(scanf("%d",p+i)!=EOF)
i++;
compare(p,i); //传递指针类型不需要加*符号
return 0;
}
int compare(int *p,int n)
{
int t=0,b=0,i;
for(i=0;it? *(p+i):t; //用指针p进行实现,不使用数组
printf("the largest number is %d\n",t);
for(i=0;ib?*(p+i):b; //用指针p进行实现,不使用数组
}
printf("the number of the second largest is %d\n",b);
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第七行改成p=a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询