【答案】
void encryChar()
{
int i,j; /*定義循環(huán)控制變量*/
int str; /*存儲字符串的長度*/
char ch; /*存儲當(dāng)前取得的字符*/
for(i=0;i
{
str=strlen(xx[i]); /*求得當(dāng)前行的字符串長度*/
for(j=0;j
{
ch=xx[i][j] *11%256;
if(ch<=32 || ch%2!=0)
/*如果計算后的值小于等于32或其ASCII值是奇數(shù)*/
continue; /*則不作改變,指向下一個字符*/
else
xx[i][j]=ch*11%256; /*否則用新字符取代原有字符*/
}
}
}
【解析】本題要對二維數(shù)組中的字符元素按行來處理。
首先用strlen()函數(shù)得到當(dāng)前行所包含的字符個數(shù)。
然后再利用一個循環(huán)來依次訪問該行中的所有字符。對于每一個字符,先按照題目中的函數(shù)替代關(guān)系"f(p)=p*11 mod 256"計算出相應(yīng)的fp值,再用一條if語句判斷該值是否符合本題給定的條件:"計算后的值小于等于32或為奇數(shù)"。如果符合條件,則該字符不變,否則用f(p)所對應(yīng)的字符對其進行替代。