C查错,用起泡法对10个字符按由小到大顺序排列

来源:百度知道 编辑:UC知道 时间:2024/09/21 08:39:59
如题,请问哪里有错误?我一运行就出错。在线等。
本人菜鸟,希望大哥们写的简单明了。
#include<stdio.h>
void main()
{
int i,j,t;
char a[10];
scanf("%s",&a[i]);
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;
}

for(i=0;i<10;i++)
printf("%s",a[i]);
printf("\n");
}

1.第一个错误是输入
第一点:你用scanf("%s",&a[i]);输入控制%s后面应该是字符数组的首地址,而&a[i]是数组a第i个元素的地址,你的i这时还没有赋值,所以i是个未知数,因此&a[i]也是一个未知数,因此你输入的数据无法找到。第二点:你定义了一个可以容纳10个字符的数组,所以只能用循环一个字符一个字符的输入,这样才能保证输入10个字符,用scanf("%s",a)来输入只能保证有9个字符,最后一个是\0是系统加上的所以输入只能是
for(i = 0; i < 10; i++)
{
scanf("%c",a[i]);
getchar();
}
2.第二个错误是输出
for(i=0;i<10;i++)
printf("%s",a[i]);
输出格式控制%s是用来输出字符串的,后面要的是字符串的首地址,而你后边给了个a[i]字符数据是不对的,你现在要输出是10个字符所以要把printf("%s",a[i]); 改为printf("%c",a[i]);

#include<stdio.h>
void main(void)
{
int i,t;
char a[10];

for(i = 0; i < 10; i++) //要指定数组名
{
scanf("%s",&a[i]);
}
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;
}

for(i=0;i<10;i++)
{
printf("

写一函数,用“起泡法”对输入的10个字符按由小到大顺序排列 写一个函数,用起泡法对输入的10个字符按由小到大顺序排列 C语言 写一函数用“起泡法”对输入的10个字符由大到小顺序排序 用C语言编写的用起泡法对10个字符按从小到大排序,只求朋友们找出其中的错误即可 写一个程序,用起泡法对输入的十个字符按由小到大的顺序排列 用C语言编程:用“冒泡法”对输入的10个字符按由小到大的顺序排列。 用C语言写一个函数,用冒泡法对输入的10个字符按由小到大的顺序排列 "对长度为7个祖父的字符串,除首,尾字符外,将其余5个字符按降序排列"用C语言如何编写 使用起泡法对20个整数进行排序 怎样用起泡法对20个整数进行排序啊?