鱼C论坛

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

为什么这段代码运行不了

[复制链接]
发表于 2023-11-11 16:49:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main(void)
{
    /*********Begin*********/
    int a[10],n,m;
    for(n=0;n<10;n++){
        scanf("%d",&a[n]);
    }
    for(n=0;n<9;n++){
        if(a[n]<a[n+1])
        m = a[n+1];
        a[n+1] = a[n];
        a[n] = m;
        n = 0;
    }
        for(n=0;n<10;n++){
        printf("%d ",a[n]);
    }

    /*********End**********/
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-11 16:52:08 | 显示全部楼层
这段代码无法正常运行的原因是在第二个for循环中存在逻辑错误。在这个循环中,使用了n=0来重置循环,这样会导致循环条件n<9失效。同时,还存在m未初始化的问题。以下是修改后的代码:

  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.     /*******[color=Red]Begin[/color]*******/
  5.     int a[10],n,m;
  6.     for(n=0;n<10;n++){
  7.         scanf("%d",&a[n]);
  8.     }
  9.     for(n=0;n<9;n++){
  10.         for(int i=0;i<9-n;i++){
  11.             if(a[ i]<a[i+1]){
  12.                 m = a[i+1];
  13.                 a[i+1] = a[ i];
  14.                 a[ i] = m;
  15.             }
  16.         }
  17.     }
  18.     for(n=0;n<10;n++){
  19.         printf("%d ",a[n]);
  20.     }

  21.     /*******[color=Red]End[/color]********/
  22.     return 0;
  23. }
复制代码


在修改后的代码中,我们使用了嵌套的for循环来进行冒泡排序,同时修复了变量m未初始化和重置循环计数器n的问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-11 19:40:22 | 显示全部楼层
#include<stdio.h>
#include<iostream>
#pragma warning(disable:4996)
#include<stdio.h>
int main(void)
{
    int a[10], n, m;
    int x=0;
    printf("请输入10个数:");
    for (n = 0;n < 10;n++) {
        x=scanf("%d", &a[n]);
        if (x == 0)
        {
            printf("输入的数据错误,请重新输入。");
            n=n>0?n-1:n;
            getchar();
        }
    }
    for (n = 0;n < 9;n++)
    {
        for (int i = 0;i < 9 - n;i++)
        {
            if (a[i] < a[i + 1])
            {
                m = a[i + 1];
                a[i + 1] = a[i];
                a[i] = m;
            }
        }
    }
    printf("从大到小排序后结果如下:\n");
    for (n = 0;n < 10;n++)
    {
        printf("%d", a[n]);
    }
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 00:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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