m0_51577686 2020-11-21 15:07 采纳率: 0%
浏览 61

麻烦大佬帮忙看看萌新写的这个程序,运行后出黑框了,但是输入数据后无输出,请问是怎么回事?

题目要求如下:

用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用scanf 输入,输入的成绩在[0,100]之间。排序完成后,输入一个成绩,要求用逐个比较查找的方式找出该成绩是该组中第几个元素的值(即第几名)。如果该成绩不在数组中,则输出“no this score!”。 要求: 1、把排序算法写成函数形式,在主函数中输入N个数据,然后调用排序函数排序。 2、在排序过程中尽量减少数据的交换和移动。 3、把查找算法写成函数形式,在主函数中输入1个数据,然后调用查找函数查找

我的代码如下:

#include<stdio.h>
void arrange(int arr[],int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(arr[i]<arr[j])
                arr[i]=arr[j];
        }
    }
}
void search(int arr[],int input,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(input==arr[i])
        {
            printf("%d\n",i+1);
            break;
        }
    }
    if(i==n)
        printf("no this score!\n");
}
int main()
{
    int i=0,n,score[100],j,m;
    scanf("%d",&n);
    while(i<n)
        scanf("%d",score);
        i++;
    arrange(score,n);
    for(j=0;j<n;j++)
    {
        if(j==n-1)
            printf("%d\n",score[j]);
        else
            printf("%d ",score[j]);
    }
    scanf("%d",&m);
    search(score,m,n);

    return 0;
}
  • 写回答

1条回答

  • paldier 2020-11-21 19:07
    关注
        while(i<n)
            scanf("%d",score);
            i++;

    你的大括号呢,而且你直接给整个数组赋值?

    你的循环呢,你数组里的元素赋值过程呢,退出赋值过程呢

    给你个思路吧

    开始循环->输入->给数组元素赋值->退出命令->退出循环->开始循环->排序->退出循环->开始循环->输入->查找->输出->?等待退出命令或输入

    评论

报告相同问题?

悬赏问题

  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)
  • ¥15 第一个已完成,求第二个做法
  • ¥20 搭建awx,试了很多版本都有错
  • ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
  • ¥15 activiti工作流问题,求解答
  • ¥15 有人写过RPA后台管理系统么?
  • ¥15 Bioage计算生物学年龄
  • ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?