#include <stdio.h>
main()
{
char a[10];
int i,j,m,k=0;
for(i=0;i<10;i++)
{
a[i]=getchar();
if(a[i]!=10)
{
k+=1;
}
else break;
}
for (j=1;j<=k-1;j++)
{
for (i=0;i<=k-j;i++)
if (a[i]>a[i+1])
{
m=a[i];
a[i]=a[i+1];
a[i+1]=m;
}
}
for(i=0;i<k;i++)
printf("%c,a[i]);
printf("\n");
printf("\n你输入的是%d位数\n",k);
}
把红色部分改成< 输出就是正确的 为什么>不行啊 找不到错误啊
----------------解决方案--------------------------------------------------------
//--------------------//
// 整个程序就是错误 //
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
// 下面是我编的一个示例 //
//------------------------//
#include <stdio.h>
#include <ctype.h>
#define MAX 10
int main(void)
{
char a[MAX];
int ch;
int i, j, k;
for(k = 0; k < MAX; k++)
{
ch = getchar();
if(isalnum(ch)) /* 判断是否是数字,如果是 a[k] = ch; */
a[k] = ch;
else
break;
}
for(i = 0; i < k - 1; i++) /* 和搂主一样的排序方式 */
{
for(j = i + 1; j < k; j++)
if(a[i] > a[j])
{
ch = a[i];
a[i] = a[j];
a[j] = ch;
}
}
for(i = 0; i < k; i++)
printf("%c ", a[i]);
printf("\n");
printf("\n 你输入的是%d位数 \n", i);
getchar(); /* 可能一个无法暂停 */
return 0;
}
/* isalnum('1'); 如果是数字字符,isalnum() 返回 1, 否则返回 0 。*/
for (j=1; j<=k-1; j++) /* 第一次循环 a[i+1] 超出了数组 */
{
for (i=0;i<=k-j;i++)
if (a[i]>a[i+1])
[此贴子已经被作者于2007-11-9 14:24:08编辑过]
----------------解决方案--------------------------------------------------------
怎么都不行.....
----------------解决方案--------------------------------------------------------
for(i=0;i<10;i++) /* 搂主这的代码是错的 */
{
a[i]=getchar();
if(a[i]!=10)
{
k+=1;
}
else break;
}
可以使用下列代码替换:
int ch;
int k = 0
while(k < 10)
{
ch = getchar();
ch -= '0';
if(ch >= 0 && ch <= 9)
{
a[k] = ch;
k++;
}
else
break;
}
[此贴子已经被作者于2007-11-9 14:30:47编辑过]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
char a[10];
int i,j,m,k=0;
for(i=0;i<10;i++)
{
a[i]=getchar();
if(a[i]!=10)
{
k+=1;
}
else break;
}
for (j=1;j<=k-1;j++)
{
for (i=0;i<=k-j;i++)
if (a[i]>a[i+1])
{
m=a[i];
a[i]=a[i+1];
a[i+1]=m;
}
}
for(i=0;i<k;i++)
printf("%c,a[i]);
printf("\n");
printf("\n你输入的是%d位数\n",k);
}
已经找到错误了 就是红色这里 把<=改成<就ok了
----------------解决方案--------------------------------------------------------