鱼C论坛

 找回密码
 立即注册
查看: 2458|回复: 2

亲们 我这道题哪里有问题,,为什么编译通过运行就显示停止运行

[复制链接]
发表于 2018-6-6 20:08:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/* 不知道哪里错了*/


# include<stdio.h>

void main(){
    void max(int x[],int n);
    void min(int x[],int n);
    void scan(int *p,int n);
    void print(int *p,int n);

    int a[10];

    scan(a,10);
    max(a,10);
    min(a,10);
    print(a,10);

        }


  void scan(int *p,int n){
   
    printf("请输入10个整数:\n");
        for(int i=0;i<n;i++){

           scanf("%d",*(p+i));
       



  }

  }


void max(int x[],int n){
    int i;
        int max=x[0];
    for(i=1;i<10;i++){
           if(max<x[i])
                   max=x[i];
       
        }
         int y;
         y=x[9];
         x[9]=max;
     x[i]=x[9];
       
        }

   
void min(int x[],int n){
       
  int i;
        int min=x[0];
    for(i=1;i<10;i++){
           if(min>x[i])
                   min=x[i];
       
        }
         int y;
         y=x[0];
         x[0]=min;
     x[i]=x[0];




}







void print(int *p,int n){

  int i=0;
  for(;i<10;i++){
  
    printf("%d  ",*(p+i));
  
  
  }



}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-7 09:53:11 | 显示全部楼层
看这个代码风格,估计是看了谭教授的巨著吧。
#include<stdio.h>

// 函数声明
void max(int x[], int n);
void min(int x[], int n);
void scan(int *p, int n);
void print(int *p, int n);

int main(void) {

        int a[10];

        scan(a, 10);
        max(a, 10);
        min(a, 10);
        print(a, 10);

        system("pause");
        return 0;
}


void scan(int *p, int n) {
        printf("请输入10个整数:\n");
        for (int i = 0; i<n; i++) {
                scanf("%d", &*(p + i));
        }
}


void max(int x[], int n) {
        int i;
        int max = x[0];
        for (i = 0; i < 10; i++) {
                if (max < x[i])
                        max = x[i];
        }
        int y;
        y = x[9];
        x[9] = max;
        // 这一步什么意思,i循环完必定等于10
        // 而数组里面不存在第10号元素。
        //  如果控制在数组内,i-1 也就是9号元素,这样赋值也没意义
         // 如果这里不改,又会越界。
        x[i-1] = x[9];
}


void min(int x[], int n) {
        int i;
        int min = x[0];
        for (i = 0; i<10; i++) {
                if (min > x[i])
                        min = x[i];
        }
        int y;
        y = x[0];
        x[0] = min;
        x[i-1] = x[0];
}

void print(int *p, int n) {
        int i = 0;
        for (; i<10; i++) {
                printf("%d  ", *(p + i));
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-7 10:05:19 | 显示全部楼层
输入的时候 scanf("%d", (p + i));
而且max,min函数里面的i循环完之后永远为10,你写x[i]=x[9]不对哈要越界
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-24 03:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表