lisalisa12311 2019-11-16 22:16 采纳率: 83.3%
浏览 105
已采纳

求教这串代码哪里有bug?

题意是输入十个整数,将这十个数中的最小值与第一位对调,
最大值与最后一位对调,然后输出这十个数。
但是这串代码输出的是第一位数依次加上4,求教问题出在哪?
谢谢!
#include
void input(int*);
void fun(int*);
void print(int*);
int main()
{
int a[10];
int *p=a;
input(p);
fun(p);
print(p);
return 0;
}
void input(int *p)
{
int i;
for (i=0;i {
scanf("%d",p+i);
}
}
void fun(int *q)
{
int i,t=0;
int *p=q;
int *pmin=p;
int *pmax=p;
for (i=0;i {
if (*p>*pmax)
{
pmax=p;
}
if (*p<*pmin)
{
pmin=p;
}
}
t=*pmax;
*pmax=*p;
*p=t;
t=*pmin;
*pmin=*p;
*p=t;
}
void print(int *p)
{
int i;
for(i=0;i<10;i++)
{
printf("%d ",p+i);
}
printf("\n");
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-11-17 09:17
    关注
    // Q950613.cpp : Defines the entry point for the console application.
    //
    
    #include <stdio.h>
    
    void input(int*);
    void fun(int*);
    void print(int*);
    
    int main() 
    {
    int a[10];
    int *p=a;
    input(p);
    fun(p);
    print(p);
    return 0; 
    }
    void input(int *p) 
    {
    int i;
    for (i=0;i < 10; i++) {
    scanf("%d",p+i);
    }
    }
    void fun(int *q) 
    {
    int i,t=0;
    int *p=q;
    int *pmin=p;
    int *pmax=p;
    for (i=0;i < 10; i++) {
    p = q + i;
    if (*p>*pmax) 
    {
    pmax=p;
    }
    if (*p<*pmin) 
    {
    pmin=p;
    }
    }
    t=*pmax;
    *pmax=*(q+9);
    *(q+9)=t;
    t=*pmin;
    *pmin=*q;
    *q=t;
    }
    void print(int *p) 
    {
    int i;
    for(i=0;i<10;i++)
    {
    printf("%d ",*(p+i));
    }
    printf("\n");
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集