简单的c程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:04:08
#include <stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("==========This is a bubble sort programme.==========\n");
loop:printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]); /*将%d改为%c ? */
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers are:\n");
for(i=0;i<=9;i++)
printf("%4d",a[i]); /*将%4d改为%4c ? */
printf("\n");
goto loop;
}
这是一个冒泡排序程序,输入10个数,输出对应排过序的数。正确的。但我想输入十个字母,输出排序的字母(ASCII排序),我在第9行和21行上修改(见注释),运行时,第一次正确,但以后就有点问题了,排序输出总是9个。请高手指点迷津。还有,C中,整型和字符型不是通用的吗,按理说,不修改程序直接输入字符也能排序啊,可我试了, 还是有问题。请高手指点一下。应该怎么修改,才能:不管输入字符还是数字,最后都能排序输出,且输出的也是字符或者数字。
前几位都没回答到重点哦,谭浩强的书中说c中整型和字符型是通用的,在输入、赋值等方面都可以互相代换。这一点应该是正确的。我验证过。

int a[10]//改为 char a[10].
其余按你的想法修改。

C中,整型和字符型不通用。

建议不要使用goto语句,容易打乱程序的进程,其他的你所说的都正确。

呵呵 , 我也学这个!但懂的不多!!

想交流加我好吗?QQ410538791

可能是你的循环语句用得不对了,你看看这样循环行不行
for(j=0;j<10;j++) {
for(i=0;i<j;i++) {
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}

int min ,tem;
for(i=0;i<9;i++)
{min=i;
for(j=i+1;j<10;j++)
if(a[min]>a[j]) min=j;
tem=a[i];
a[i]=a[min];
a[min]=tem;
}

改为%c后,之所以从第二次开始只能输出9个字母排序,这是因为它将上一次最后敲入的回车键也当成一个字符了。
至于整型为什么字符型不能通用还没想明白。
要想使程序对数字和字母都能排列,貌似应该重编。

qq :166666