1215787625 发表于 2023-11-11 16:49:26

为什么这段代码运行不了

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

    /*********End**********/
    return 0;
}

isdkz 发表于 2023-11-11 16:52:08

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

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

    /*******End********/
    return 0;
}


在修改后的代码中,我们使用了嵌套的for循环来进行冒泡排序,同时修复了变量m未初始化和重置循环计数器n的问题。

lianzbing 发表于 2023-11-11 19:40:22

#include<stdio.h>
#include<iostream>
#pragma warning(disable:4996)
#include<stdio.h>
int main(void)
{
    int a, n, m;
    int x=0;
    printf("请输入10个数:");
    for (n = 0;n < 10;n++) {
      x=scanf("%d", &a);
      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 < a)
            {
                m = a;
                a = a;
                a = m;
            }
      }
    }
    printf("从大到小排序后结果如下:\n");
    for (n = 0;n < 10;n++)
    {
      printf("%d", a);
    }
    return 0;
}
页: [1]
查看完整版本: 为什么这段代码运行不了