鱼C论坛

 找回密码
 立即注册
查看: 2291|回复: 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 | 显示全部楼层
看这个代码风格,估计是看了谭教授的巨著吧。

  1. #include<stdio.h>

  2. // 函数声明
  3. void max(int x[], int n);
  4. void min(int x[], int n);
  5. void scan(int *p, int n);
  6. void print(int *p, int n);

  7. int main(void) {

  8.         int a[10];

  9.         scan(a, 10);
  10.         max(a, 10);
  11.         min(a, 10);
  12.         print(a, 10);

  13.         system("pause");
  14.         return 0;
  15. }


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


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


  38. void min(int x[], int n) {
  39.         int i;
  40.         int min = x[0];
  41.         for (i = 0; i<10; i++) {
  42.                 if (min > x[i])
  43.                         min = x[i];
  44.         }
  45.         int y;
  46.         y = x[0];
  47.         x[0] = min;
  48.         x[i-1] = x[0];
  49. }

  50. void print(int *p, int n) {
  51.         int i = 0;
  52.         for (; i<10; i++) {
  53.                 printf("%d  ", *(p + i));
  54.         }
  55. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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-4-23 14:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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