C语言 冒泡法的初级问题.

来源:百度知道 编辑:UC知道 时间:2024/06/22 15:25:24
#include<stdio.h>
void max(char a[]);
int main(void)
{
char a[5];
int i;

printf("请输入四个英文大写字母");
for(i=1;i<5;i++)
{
getch("%c",&a[i]);
}
printf("\n");
i=1;
max(a[i]);
printf("字母的先后顺序是:");
for(i=1;i<5;i++)
printf(" %c",a[i]);

}

void max(char a[])
{
int i,j,t;
for(j=1;j<=3;j++)
for(i=1;1<=4;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}

我写了这么一小段代码... 可总是出错. 运行不了.. 能帮我看一下这段代码的问题出在哪吗?

#include<stdio.h>
void max(char a[]);
int main(void)
{
char a[5];
int i;

printf("input\n");
for(i=1;i<5;i++)
{
scanf("%c",&a[i]); /*我习惯用这个,但你的getch应该也用错了
}
printf("\n");

for(i=1;i<5;i++)
printf(" %c\n",a[i]);/*调试作用,确认输入字符有效*/
printf("001\n"); /*调试作用,只让你知道程序运行到哪里*/
max(a); /*i=1没有用处,参数应该使用数组名
printf("004\n"); /*调试作用,只让你知道程序运行到哪里*/
printf("output:\n");
for(i=1;i<5;i++)
printf(" %c",a[i]);

}

void max(char a[])
{
int i,j,t;
printf("002\n"); /*调试作用,只让你知道程序运行到哪里*/
for(j=1;j<4;j++)
for(i=1;i<4;i++) /*你写错了("1<=4;"),所以程序进入死循环!*/
/*之前我都没有注意到,反复检查后确认程序修改是正确的。*/
/*最后使用调试手段才发现你这个错误*/
if(a[i]>a[i+1])
{