我刚刚开始编程。 我刚刚编写了这段代码,但它不起作用。 你能告诉我为什么吗?
code =
int main(int argc, const char *argv[])
{
int a, b, c, d, e, f, g, h, i, j;
int s;
printf("enter 10 numbers: ");
scanf("%d%d%d%d%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f, &g, &h, &i, &j);
int numbers[10] = {a, b, c, d, e, f, g, h, i, j};
//%d %d %d %d %d %d %d %d %d %d a, b, c, d, e, f, g, h, i, j
printf("before \n %d %d %d %d %d %d %d %d %d %d\n", a, b, c, d, e, f, g, h, i, j);
for (int k = 0; k == 10; k++) {
if (numbers[k] <= numbers[k + 1]) {
numbers[k] = s;
numbers[k] = numbers[k + 1];
numbers[k + 1] = s;
}
}
printf("after \n %d %d %d %d %d %d %d %d %d %d\n", numbers[0], numbers[1], numbers[2], numbers[3], numbers[4], numbers[5], numbers[6], numbers[7], numbers[8], numbers[9]);
return 0;
}
答案 0 :(得分:1)
嗯,对于初学者来说,我很确定你的scanf函数的输入是错误的。第一个'%d'将删除字符串中的所有数字,因此变量b,c,d,e,f,g,h,i和j将是未初始化的。
此外,当's'尚未初始化为任何内容时,您正在执行numbers[k] = s;
和numbers[k + 1] = s;
。
答案 1 :(得分:1)
上述代码中有许多错误。首先,你的&#34; for&#34;条件错误(k == 10)。其次,仅遍历数组一次是不够的。您需要遍历数组多次,直到不需要进行交换。 (见Bubblesort)
答案 2 :(得分:0)
你的for循环条件在第一次下降,第一步k为0并且检查值为10 (if (k==10) in (k=0;k==10;k++))
这将不会执行你的for循环逻辑,并且在第一种情况下你从for循环出来
答案 3 :(得分:0)
帮助您了解排序代码可能出现的问题
英文/伪代码:
Read 10 elements of the array
For each 11 elements ( 0,1,2,3,4,5,6,7,8,9,10 ) of the array
if the current element is less of equals to the next element ( including the 12th element when the element index is 11 )
then
Store the value in 's' in place of the current element ( what is in 's' might be up to the phase of the moon )
Store the value of the next element in the current element ( we will never know what was the the mystery value in 's', unless .... )
Store the value of 's' in the next element ( next comparison will be a big surprise )
Print the 10 elements of the transformed array
公平地表明你的错误可能还不够
让我们有一个卡片类比
除了尝试查找不存在的值之外,有人建议您查看提供一些易于理解的伪代码的simple sorting algorithm
祝你在学习C的过程中好运