为什么这段代码运行不了
#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;
} 这段代码无法正常运行的原因是在第二个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的问题。 #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]