平平无xi 发表于 2020-11-29 17:10:30

数组作业求助

题目:全班10个同学的成绩单已经按降序排列好并保存在一个一维数组中,先要求输入一个成绩(假设10个学生的成绩都不相同),从该成绩单中删除该成绩。
我写出来的代码:
#include "stdio.h"
#include "conio.h"
#define n 10
int main()
{
        int i,j,istu={95,90,87,85,80,75,72,70,68,65},idelete;
        printf("请输入删去的成绩\n");
        scanf("%d",&idelete);
        for(i=0;i<n;i++)
        {
                if(idelete==istu)
                {
                        for(j=i;j<n-1;j++);
                        {
                        istu=istu;
                        }
                }
                break;
        }
        printf("现在的数组排序为\n");
        for(i=0;i<n-1;i++)
                printf("%d",istu);
        getch();
        return 0;
}
但是为啥结果是这样的?

jackz007 发表于 2020-11-29 18:01:14

本帖最后由 jackz007 于 2020-11-29 18:02 编辑

                        for(j = i + 1 ; j < n ; j ++) ; // 删掉红色的分号

赫尔曼·迈耶 发表于 2020-11-29 20:17:33

本帖最后由 赫尔曼·迈耶 于 2020-11-29 20:26 编辑


#include "stdio.h"
#include "conio.h"
#define n 10
int main()
{
      int i,j,istu={95,90,87,85,80,75,72,70,68,65},idelete;
      printf("请输入删去的成绩\n");
      scanf("%d",&idelete);
      for(i=0;i<n;i++)
      {
                if(idelete==istu)        //这里没索引号
                {
                        for(j=i;j<n-1;j++);        //分号问题,楼上的老哥也说了。
                        {
                        istu=istu;
                        }
                }
                break;
      }
      printf("现在的数组排序为\n");
      for(i=0;i<n-1;i++)
                printf("%d",istu);        //这里也没索引号
      getch();
      return 0;
}

按理来说输出的应该是一串数组的内存地址,不知道你用的什么环境,竟然把值都输出来了,只能说很神奇。
建议搭个好点的开发环境,分号和索引号这种低级的问题真不值得上论坛问。

平平无xi 发表于 2020-11-30 16:14:31

赫尔曼·迈耶 发表于 2020-11-29 20:17
按理来说输出的应该是一串数组的内存地址,不知道你用的什么环境,竟然把值都输出来了,只能说很神奇。
...

害,索引号我有标啊,可是还是这个结果{:10_254:}

赫尔曼·迈耶 发表于 2020-11-30 20:54:51

平平无xi 发表于 2020-11-30 16:14
害,索引号我有标啊,可是还是这个结果

{:10_277:}……那就是分号的问题呗。
给你我改后的代码:
#include "stdio.h"
#include "conio.h"
#define n 10
int main()
{
    int i, j, istu = {95, 90, 87, 85, 80, 75, 72, 70, 68, 65}, idelete;
    printf("请输入删去的成绩\n");
    scanf("%d", &idelete);
    for (i = 0; i < n; i++)
    {
      if (idelete == istu)
      {
            for (j = i; j < n - 1; j++)
            {
                istu = istu;
            }
      }
      break;
    }
    printf("现在的数组排序为\n");
    for (i = 0; i < n - 1; i++)
      printf("%d", istu);
    getch();
    return 0;
}
输出结果:
请输入删去的成绩
95
现在的数组排序为
908785807572706865
完全没问题。
页: [1]
查看完整版本: 数组作业求助