鱼C论坛

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

求助

[复制链接]
发表于 2023-4-21 15:17:34 | 显示全部楼层 |阅读模式
3鱼币
C语言初学小白,问题如图,数组环节为什么结果出来是这个呢,很疑惑,而且正确的代码怎么改
#include<stdio.h>
  void main()
{
  int i,j,min,s;
  int a[10];
  for(i=0;i<9;i++)
    scanf("%d",&a[i]);
for (i=0;i<9;i++)
{ for (min=i,j=i+1;j<10;j++)
   if(a[j]<a[min])
    min=j;
   s=a[min];
   a[min]=a[i];
   a[i]=s;
}
  for(i=0;i<9;i++)
    printf("%d",a[i]);
    printf("\n");
  }
   
   
   
  
   

QQ图片20230421151641.png
QQ图片20230421151647.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-21 15:23:14 | 显示全部楼层
首先,我看到你的代码中有一些小问题。根据题目描述,你需要对10个整数进行排序,但是你的for循环只遍历到9,因此数组的最后一个整数没有被包括在内。接下来,我会为你修改代码并解释我的修改。

修改后的代码如下:
#include<stdio.h>
void main()
{
    int i, j, min, s;
    int a[10];
    for (i = 0; i < 10; i++) // 修改此处,将9改为10
        scanf("%d", &a[i]);
    for (i = 0; i < 9; i++)
    {
        for (min = i, j = i + 1; j < 10; j++)
            if (a[j] < a[min])
                min = j;
        s = a[min];
        a[min] = a[i];
        a[i] = s;
    }
    for (i = 0; i < 10; i++) // 修改此处,将9改为10
    {
        printf("%d", a[i]);
        if (i < 9) // 添加此处,用于在数字之间添加空格
            printf(" ");
    }
    printf("\n");
}

这里的修改有:

1. 在输入和输出的循环中,将9改为10,以包括数组的最后一个元素。
2. 在输出循环中,添加了一个判断语句,用于在数字之间添加空格,使输出更加清晰。

现在,当你运行这个修改后的程序并输入题目给定的测试数据时,你应该能得到正确的结果:
程序输入参数如下
1 16 5 98 23 119 18 75 65 81
程序运行结果如下
1 5 16 18 23 65 75 81 98 119
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-22 10:00:38 | 显示全部楼层
根据你提供的代码,数组的元素数量应该是10而不是9,因为你在第一个 for 循环中只输入了9个元素,如果想要输入10个元素,可以将循环条件改为 i < 10。

另外,你在输出数组元素时,缺少了最后一个元素。应该将第一个 for 循环中的循环条件改为 i < 10,将第二个 for 循环中的循环条件改为 i < 9,这样就可以输出数组的所有元素了。

修改后的代码如下:
#include <stdio.h>

int main()
{
    int i, j, min, s;
    int a[10];

    for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
    }

    for (i = 0; i < 9; i++) {
        min = i;
        for (j = i + 1; j < 10; j++) {
            if (a[j] < a[min]) {
                min = j;
            }
        }
        s = a[min];
        a[min] = a[i];
        a[i] = s;
    }

    for (i = 0; i < 10; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}
修改后的代码可以正确地输出数组的所有元素,并按从小到大的顺序进行排序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 01:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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