scanf的输入问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 01:18:38
输入10个字母,依据起泡法编一个函数按从小到大输出
#include<stdio.h>
void main()
{
char a[10];
void qipao(char array[]);
int i;
for(i=0;i<=9;i++)
{
scanf("%c",&a[i]);
}
printf("\n");
qipao(a);
for(i=0;i<10;i++)
{
printf("%c ",a[i]);
}
}
void qipao(char array[])
{
int j,k,t;
for(j=0;j<10;j++)
{
for(k=0;k<10-j;k++)
{
if (array[k]>array[k+1])
{
t=array[k+1];
array[k+1]=array[k];
array[k]=t;
}
}
}
}
输入时我是一次输入10个再按回车的,但当我输入abcdefghij后回车,输出为?abcdefghi,请帮忙修改一下

应该改成这样
#include<stdio.h>
void main()
{
char a[10];
void qipao(char array[]);
int i;
for(i=0;i<=9;i++)
{
scanf("%c",&a[i]);
}
printf("\n");
qipao(a);
for(i=0;i<10;i++)
{
printf("%c ",a[i]);
}
}
void qipao(char array[])
{
int j,k,t;
for(j=0;j<9;j++) //冒泡排序这里是总数减1
{
for(k=0;k<9-j;k++) //冒泡排序这里是总数减1
{
if (array[k]>array[k+1])
{
t=array[k+1];
array[k+1]=array[k];
array[k]=t;
}
}
}
}