当前位置: 代码迷 >> C语言 >> 怎么都不明白
  详细解决方案

怎么都不明白

热度:113   发布时间:2007-11-09 13:24:07.0
怎么都不明白

#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编辑过]


----------------解决方案--------------------------------------------------------
回复:(cosdos)//--------------------//// 整个程...

#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了


----------------解决方案--------------------------------------------------------
  相关解决方案