99层绝望之塔怎么打:C语言问题

来源:百度文库 编辑:高考问答 时间:2024/05/08 04:29:32
#include<stdio.h>
#include<string.h>
#include<conio.h>
char xx[20][80];
void jsSort()
{
int i,j,k,str1,half;
char ch;
for(i=0;i<20;i++)
{ str1=strlen(xx[i]); /*求字符串的长度*/
half=str1/2;
for(j=0;j<half-1;j++) /*将左边部分按字符的ASCII值降序排序*/
for(k=j+1;k<half;k++)
if (xx[i][j]<xx[i][k])
{ ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
for(j=half-1,k=str1-1;j>=0;j--,k--) /*将左边部分和右边部分的对应字符互换位置*/
{ ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
}
}
main()
{
readDat();
jsSort();
writeDat();
}
readDat()
{
FILE *in;
int i=0;
char *p;
in= fopen("IN22.DAT", "r");
while(i < 20 && fgets(xx[i], 80, in) != NULL)
{
p = strchr(xx[i], '\n');
if(p) *p = 0;
i++;
}
fclose(in);
}
writeDat()
{
FILE *out;
int i;
clrscr();
out = fopen("OUT22.DAT", "w");
for(i = 0; i < 20; i++)
{
printf("%s\n", xx[i]);
fprintf(out, "%s\n", xx[i]);}
fclose(out);
}

这一部分是我编的

void jsSort()
{
int i,j,k,str1,half;
char ch;
for(i=0;i<20;i++)
{ str1=strlen(xx[i]); /*求字符串的长度*/
half=str1/2;
for(j=0;j<half-1;j++) /*将左边部分按字符的ASCII值降序排序*/
for(k=j+1;k<half;k++)
if (xx[i][j]<xx[i][k])
{ ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
for(j=0,k=half;j<half,k<str1;j++,k++)
{ ch=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=ch;
}
}
}

可是老是报错(就是这句不太一样
for(j=0,k=half;j<half,k<str1;j++,k++))
帮我看看是怎么错了
谢谢了
不是报错
是警告

for(j=half-1,k=str1-1;j>=0;j--,k--)
这句应该是没问题的
for(j=0,k=half;j<half,k<str1;j++,k++)
你自己编的这句有问题,strl的长度有单数各双数之分
当strl是双数时,设是 8 时 half=4,那么j=0到j<4共有四个循环,
k=4到k<8也是有四个循环,这时是没有错误的
但当 strl 是单数时,那么这一句就有错了,设是 9 时 half也是等于4
但是 strl 这时却是 9,那么,j=0,j<4共循环四次,而 k=4,k<9却循环五次这里就错了。
我想就是错在这里吧
你是不是在学三级啊 今天这个题我也编了很长时间。

不知道lz哪里出错了,我这里编译通过的(tc2.0)
最好把出错信息贴出来看看