编写一个函数,作为参数获取一个char数组(用于编码的文本)。该函数需要对该文本进行编码。编码完成如下:字母a与字母z交换,b与y等交换(字母表的第一个字母与字母表的最后一个字母交换,第二个字母字母表用例子交换了例子b。
示例:abba
结果:zyyz
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int funk(char *alphabet,int i, int n,char *word,int j,int x){
while(i<n){
if(word[i]=alphabet[j]){
word[i]=alphabet[x-i];
i++;
}
else
j++;
}
return word[i];
}
void main ()
{
int i=0,j=0,n,x;
char alphabet[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char word[10];
n=strlen(word);
x=strlen(alphabet);
printf("Enter your word :\n");
for(i=0;i<n;i++) {
scanf("%s",word[i]);
}
{
word=funk(n,azbuka,word,x,i,j);
for(i=0;i<n;i++){
printf("%s",word[i]));
}
}
return 0;
}
答案 0 :(得分:2)
您的程序可以大大简化。 “编码”逻辑的逻辑应该只是几行代码。你的函数声明/原型也非常复杂。不要忘记,C字符串只是一个以NULL字符('\0'
)结尾的字符数组。
代码清单
/*******************************************************************************
* Preprocessor directives
******************************************************************************/
#include <stdio.h>
#include <ctype.h>
#include <string.h>
/*******************************************************************************
* Constants
******************************************************************************/
#define MAX_BUF_SIZE
/*******************************************************************************
* Function Prototypes
******************************************************************************/
void encode(char* str, size_t length);
/*******************************************************************************
* Function Definitions
******************************************************************************/
void encode(char* str, size_t length) {
if (!str || (length <= 1)) {
return;
}
int i;
for (i=0; i<length; i++) {
if (isalpha(str[i])) {
if (isupper(str[i])) {
str[i] = 'Z' - str[i] + 'A';
} else {
str[i] = 'z' - str[i] + 'a';
}
}
}
}
int main(void) {
char buf1[] = "This is a test";
char buf2[] = "abcdefghijklmnopqrstuvwxyz";
char buf3[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char* inputStrings[] = {buf1, buf2, buf3};
char* buf;
int i;
for (i=0; i<3; i++) {
buf = inputStrings[i];
printf("Original String: %s\n", buf);
encode(buf, strlen(buf));
printf("Encoded String: %s\n", buf);
encode(buf, strlen(buf));
printf("Decoded String: %s\n", buf);
}
return 0;
}
示例运行
Original String: This is a test
Encoded String: Gsrh rh z gvhg
Decoded String: This is a test
Original String: abcdefghijklmnopqrstuvwxyz
Encoded String: zyxwvutsrqponmlkjihgfedcba
Decoded String: abcdefghijklmnopqrstuvwxyz
Original String: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Encoded String: ZYXWVUTSRQPONMLKJIHGFEDCBA
Decoded String: ABCDEFGHIJKLMNOPQRSTUVWXYZ