【发布时间】:2019-01-21 16:42:25
【问题描述】:
我是编程初学者,我正在尝试创建一个程序,该程序将使用冒泡排序重新排列按字母顺序排列的字符串或按升序排列的数字数组,以测试我的知识和理解。 我为此使用了函数 scanf() 以及字母表或字符串的两个不同函数。虽然字母表按预期工作,但数字不会按升序重新排列数字,我不知道为什么。
这里是完整的代码:
#include <stdio.h>
#include <stdlib.h>
#define TAILLE 26
#define LENGHT 6
void croissant(char alphabet[]);
void ascend(int numero[]);
int main()
{
int x, r;
int numero[] = { 6, 3, 2, 4, 5, 1 };
char alphabet[] = "azertyuiopqsdfghjklmwxcvbn";
printf("Pour remettre l'alphabet dans l'ordre, tapez 1 : \n\n%s\n\n\n",
alphabet);
printf("Pour remettre cette suite de chiffre dans l'ordre, tapez 2 :
\n\n");
for(x=0; x<LENGHT; x++)
{
printf("%d\t", numero[x]);
}
putchar('\n');
scanf("%d", &r);
if(r == 1)
{
croissant(alphabet);
printf("Voila : %s", alphabet);
}
else if(r == 2)
{
printf("Voila ! : ");
ascend(numero);
for(x=0; x<LENGHT; x++)
{
printf("%d\t", numero[x]);
}
}
else
puts("Je regrette, je n'ai pas compris.");
return 0;
}
void croissant(char alphabet[])
{
int externe, interne, temp;
for(externe=0; externe<TAILLE-1; externe++)
{
for(interne=externe+1; interne<TAILLE; interne++)
{
if(alphabet[externe] > alphabet[interne])
{
temp = alphabet[externe];
alphabet[externe] = alphabet[interne];
alphabet[interne] = temp;
}
}
}
}
void ascend(int numero[])
{
int temp, externe, interne;
for(externe=0; externe<LENGHT-1; externe++);
{
for(interne=externe+1; interne<LENGHT; interne++)
{
if(numero[externe] > numero[interne])
{
temp = numero[externe];
numero[externe] = numero[interne];
numero[interne] = temp;
}
}
}
}
我为我的英语摇摇晃晃而道歉,感谢您的宝贵时间。
【问题讨论】:
-
简单的错字 - 你在外部
for循环的末尾有一个分号 -for(externe=0; externe<LENGHT-1; externe++); -
冒泡排序比较相邻的对,但
externe和numero并不总是相邻的。 -
不要编辑添加“已解决”。确保有一个好的答案(必要时自己做),然后接受它。
-
甚至不应该需要答案,因为这是一个简单的错字 - 它可以被关闭
-
@ChrisTurner 无意与您实际相矛盾,我发现有时对于有经验的程序员来说看起来像是拼写错误的东西可能是初学者对“常用语法”的误解,这是值得回答的。