111222233333 发表于 2018-6-6 20:08:01

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

/* 不知道哪里错了*/


# 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;

    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;
    for(i=1;i<10;i++){
           if(max<x)
                   max=x;
       
        }
       int y;
       y=x;
       x=max;
   x=x;
       
        }

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




}







void print(int *p,int n){

int i=0;
for(;i<10;i++){

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


}



}

风过无痕丶 发表于 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;

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


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

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

paranoia_ck 发表于 2018-6-7 10:05:19

输入的时候 scanf("%d", (p + i));
而且max,min函数里面的i循环完之后永远为10,你写x=x不对哈要越界
页: [1]
查看完整版本: 亲们 我这道题哪里有问题,,为什么编译通过运行就显示停止运行