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;}
老师的要求是用指针实现,我的代码里应该有指针错误的写法吧,望指正
展开
 我来答
wenqing8585
2018-02-27 · TA获得超过8252个赞
知道大有可为答主
回答量:8078
采纳率:70%
帮助的人:3872万
展开全部
删除第18行
把第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;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
筽晓雾
2018-02-27 · TA获得超过155个赞
知道答主
回答量:124
采纳率:68%
帮助的人:41.7万
展开全部
第七行改成p=a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式