C语言编程题目(猴子吃桃问题,加密解密问题等),一共五个题目。求大神解答一下,谢谢! 20
展开全部
第一个
void move(int a[], int b[], int n, int m) {
for (int i = 0; i < (n - m); i++) {
b[i + m] = a[i];
}
for (int i = 0; i < m; i++) {
b[i] = a[i + n - m];
}
}
第二个
void f(char a[], unsigned int n) {
char str[] = "0123456789abcdef";
int k=0;
for (int temp = n; temp > 0; temp >>= 4, k++);
for (int i = k ; i != 0; i--) {
a[i - 1] = str[n % 16];
n >>= 4;
}
a[k] = '\0';
}
第三个,我明显复用了第二个的代码。
void f10(char a[], unsigned int n) {
char str[] = "0123456789";
int k = 0;
for (int temp = n; temp > 0; temp /= 10, k++);
for (int i = k ; i != 0; i--) {
a[i - 1] = str[n % 10];
n /= 10;
}
a[k] = '\0';
}
int sum() {
char a[5];
int iSum = 0;
for (int i = 200; i <= 1000; i++) {
f10(a, i);
for (int j = 0; a[j]!='\0'; j++) {
if (a[j] == '1') iSum += 1;
}
}
return iSum;
}
第四个递归即可
int daytotal(int n) {
if (n == 1) return 1;
else return (daytotal(n - 1) + 1) * 2;
}
int total() {
return daytotal(10);
}
最后一个:
void f10t4(char a[], unsigned int n) {
char str[] = "0123456789";
for (int i = 4; i != 0; i--) {
a[i - 1] = str[n % 10];
n /= 10;
}
a[4] = '\0';
}
char * encript(int n) {
char *in = (char*)malloc(4 * sizeof(char));
char temp;
f10t4(in, n);
for (int i = 1; i != 0; i--) {
temp = in[i] + 5;
if (temp > '9') temp -= 10;
in[i] = in[3 - i] + 5;
if (in[i] > '9') temp -= 10;
in[3 - i] = temp;
}
return in;
}
char * decript(int n) {
char *in = (char*)malloc(4 * sizeof(char));
char temp;
f10t4(in, n);
for (int i = 1; i != 0; i--) {
temp = in[i] - 5;
if (temp < '0') temp += 10;
in[i] = in[3 - i] - 5;
if (in[i] < '0') temp += 10;
in[3 - i] = temp;
}
return in;
}
void move(int a[], int b[], int n, int m) {
for (int i = 0; i < (n - m); i++) {
b[i + m] = a[i];
}
for (int i = 0; i < m; i++) {
b[i] = a[i + n - m];
}
}
第二个
void f(char a[], unsigned int n) {
char str[] = "0123456789abcdef";
int k=0;
for (int temp = n; temp > 0; temp >>= 4, k++);
for (int i = k ; i != 0; i--) {
a[i - 1] = str[n % 16];
n >>= 4;
}
a[k] = '\0';
}
第三个,我明显复用了第二个的代码。
void f10(char a[], unsigned int n) {
char str[] = "0123456789";
int k = 0;
for (int temp = n; temp > 0; temp /= 10, k++);
for (int i = k ; i != 0; i--) {
a[i - 1] = str[n % 10];
n /= 10;
}
a[k] = '\0';
}
int sum() {
char a[5];
int iSum = 0;
for (int i = 200; i <= 1000; i++) {
f10(a, i);
for (int j = 0; a[j]!='\0'; j++) {
if (a[j] == '1') iSum += 1;
}
}
return iSum;
}
第四个递归即可
int daytotal(int n) {
if (n == 1) return 1;
else return (daytotal(n - 1) + 1) * 2;
}
int total() {
return daytotal(10);
}
最后一个:
void f10t4(char a[], unsigned int n) {
char str[] = "0123456789";
for (int i = 4; i != 0; i--) {
a[i - 1] = str[n % 10];
n /= 10;
}
a[4] = '\0';
}
char * encript(int n) {
char *in = (char*)malloc(4 * sizeof(char));
char temp;
f10t4(in, n);
for (int i = 1; i != 0; i--) {
temp = in[i] + 5;
if (temp > '9') temp -= 10;
in[i] = in[3 - i] + 5;
if (in[i] > '9') temp -= 10;
in[3 - i] = temp;
}
return in;
}
char * decript(int n) {
char *in = (char*)malloc(4 * sizeof(char));
char temp;
f10t4(in, n);
for (int i = 1; i != 0; i--) {
temp = in[i] - 5;
if (temp < '0') temp += 10;
in[i] = in[3 - i] - 5;
if (in[i] < '0') temp += 10;
in[3 - i] = temp;
}
return in;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询