数据库三级上机考试题库12题,求高手解答。关于字符串逆转那道。
函数RData()的功能是实现从文件IN.dat中读取一篇英文文章存入到字符串数组original中。请编写函数CharAdd(),其功能是:以行为单位把字符串中的第1个...
函数RData()的功能是实现从文件IN.dat中读取一篇英文文章存入到字符串数组original中。请编写函数CharAdd(),其功能是:以行为单位把字符串中的第1个字符的ASCII值加第2个字符的ASCII值,得到第1个新字符,第2个字符的ASCII值加第3个字符的ASCII值,得到第2个新字符,以此类推,一直处理到倒数第2个字符,最后1个字符的ASCII值加原第1个字符的ASCII值,得到最后1个新的字符。得到的新字符分别存放在原字符串对应的位置上,最后把已处理的字符串逆转后按行重新存入字符串数组original中。最后调用函数WData(),把结果original输出到OUT.dat文件中。
原始数据文件存放的格式是:每行的宽度均小于 80个字符(含标点符号和空格)。
int i, j, k, str;
char ch;
for (i=0; i<maxline; i++)
{ str = strlen(original[i]);
ch = original[i][0];
for (j=0; j<str-1; j++)
original[i][j] += original[i][j+1];
original[i][str-1] += ch;
for (j=0, k=str-1; j<str/2; j++, k--)
{ ch = original[i][j];
original[i][j] = original[i][k];
original[i][k] = ch;
}
}
这个回答系统判分是0,求另外的方法。 展开
原始数据文件存放的格式是:每行的宽度均小于 80个字符(含标点符号和空格)。
int i, j, k, str;
char ch;
for (i=0; i<maxline; i++)
{ str = strlen(original[i]);
ch = original[i][0];
for (j=0; j<str-1; j++)
original[i][j] += original[i][j+1];
original[i][str-1] += ch;
for (j=0, k=str-1; j<str/2; j++, k--)
{ ch = original[i][j];
original[i][j] = original[i][k];
original[i][k] = ch;
}
}
这个回答系统判分是0,求另外的方法。 展开
2个回答
展开全部
我当你前面的功能都实现了,帮你说下字符串逆转
思路是这样:把原字符串拷贝一份到char * strtemp,把strtemp的最后一位赋值orginal[i]的第一位,
strtemp的倒数第二位赋值orginal[i]的第二位...知道全部赋值结束。
char *strtemp[80]={0};
strcpy(strtemp,original[i]);
for(k=0,j=str-1;j>=0;--j,++k)
{
original[i][k]=strtemp[j];
}
另外我觉得你的逆转方法也没问题,问题应该出在别的地方了
思路是这样:把原字符串拷贝一份到char * strtemp,把strtemp的最后一位赋值orginal[i]的第一位,
strtemp的倒数第二位赋值orginal[i]的第二位...知道全部赋值结束。
char *strtemp[80]={0};
strcpy(strtemp,original[i]);
for(k=0,j=str-1;j>=0;--j,++k)
{
original[i][k]=strtemp[j];
}
另外我觉得你的逆转方法也没问题,问题应该出在别的地方了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询