作者Isuzel (Isuzel)
看板NSYSU-CSE97
标题计概实习作业...
时间Thu Dec 9 17:46:49 2004
/*=======================================================
程式最後会出现Null pointer assignment的问题还是存在 ~"~
突然觉得好像是我的compiler的问题?
Anyway,大家看看我有没有需要改进的地方?
======================================================= */
/* coding.c */
#include<stdio.h>
#include<stdlib.h>
#define CODENUM 4
void encode(int *codes);
void decode(int *codes);
void showcode(int *codes);
int main(void)
{
char *array;
int i, *codes;
array=(int*)malloc(sizeof(char)*CODENUM);
codes=(int*)malloc(sizeof(int)*CODENUM);
printf("Please enter the %d-digit code:", CODENUM);
scanf("%s", array);
for(i=(CODENUM - 1);i>=0;i--)
*(codes + i) = (*(array+i) - '0');
free(array);
printf("The code you enter is:");
showcode(codes);
encode(codes);
printf("\nThe encoded code is:");
showcode(codes);
decode(codes);
printf("\nThe decoded code is:");
showcode(codes);
free(codes);
return 0;
}
void encode(int *codes)
{
int i, tmp;
for(i=0;i<CODENUM;i++)
*(codes+i) = ((*(codes+i))+7) % 10;
for(i=0;i<2;i++)
{
tmp = *(codes+i);
*(codes+i) = *(codes+i+2);
*(codes+i+2) = tmp;
}
}
void decode(int *codes)
{
int i, tmp;
for(i=0;i < CODENUM;i++)
if(*(codes+i) < 7) *(codes+i) += 3;
else *(codes+i) -= 7;
for(i=0;i<=1;i++)
{
tmp = *(codes+i);
*(codes+i) = *(codes+i+2);
*(codes+i+2) = tmp;
}
}
void showcode(int *codes)
{
int i;
for(i=0;i<CODENUM;i++)
printf("%d", *(codes + i));
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.117.186.150