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小时内删除。