ASCLL码的左右移位
62.请编制函数StrCharJP(),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值右移4位,然后把右移后的字符的ASCII值再加上原字符的ASCII值,得到新的字符,并存入原字符串对应的位置上。最后把已处理的字符串按行重新存入字符串数组xx中
void StrCharJR(void)
{
int i,j;
int str;
for(i=0;i<maxline;i++)
{
str=strlen(xx[i]);
for(j=0;j<str;j++)
xx[i][j]+=xx[i][j]>>4;
/*字符的ASCII值右移4位再加上原字符的ASCII值,得到新字符*/
}
}
63.请编制函数StrCharJL( ),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符的ASCII值,得到的新字符仍存入到原字符串对应的位置。
void StrCharJL(void)
{
int i,j;
int str;
char ch;
for(i=0;i<maxline;i++)
{
str=strlen(xx[i]);
for(j=0;j<str;j++)
{
ch=xx[i][j];
if(ch<<4 <=32 || ch<<4 >100)
continue;
/*如果左移4位后字符的ASCII值小于等于32或大于100,则原字符保持不变*/
else
xx[i][j]+=ch<<4; /*否则把左移后的字符ASCII值加上原字符的ASCII值*/
}
}
}
64.请编制函数CharConvA( ),该函数的功能是:以行为单位把字符串的最后一个字符ASCII值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新的字符,以此类推一直处理到第二个字符,第一个字符的ASCII值加最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上,把已处理的字符串仍按行重新存入字符串数组xx中
void CharConvA(void)
{
int i,j,k;
int str;
char ch;
for(i=0;i<maxline;i++)
{
str=strlen(xx[i]);
ch=xx[i][str-1];
for(j=str-1;j>0;j--) /*从最后一个字符开始,直到第二个字符*/
xx[i][j]=(xx[i][j]>>4)+xx[i][j-1];
/*当前字符ASCII值右移4位加前一个字符的ASCII值,得到新的当前字符*/
xx[i][0]+=ch;
/*第一个字符的ASCII值加最后一个字符的ASCII值,得到新的第一个字符*/
}
字符串截取倒数第二个}
65.请编制函数ChA( ),该函数的功能是:以行为单位把字符串的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的字符,以此类推一直处理到倒数第二个字符,最后一个字符的ASCII值加第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后仍按行重新存入字符串数组xx中
void ChA(void)
{
int i,j,k;
int str;
char ch,temp;
for(i=0;i<maxline;i++)
{
str=strlen(xx[i]);
ch=xx[i][0];
for(j=0;j<str-1;j++)
/*将该字符的ASCII值与下一个字符的ASCII值相加,得到新的字符*/
xx[i][j]+=xx[i][j+1];
xx[i][str-1]+=ch;
/*将最后一个字符的ASCII值与第一个字符的ASCII值相加,得到最后一个新的字符*/
for(j=0,k=str-1;j<str/2;j++,k--) /*将字符串逆转后仍按行重新存入字符串数
组xx中*/
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论