实验6
#include <stdio.h>
#define N 4
int main() {
int x[N] = {1, 9, 8, 4};
int i;
int *p;
for (i = 0; i < N; ++i)
printf("%d", x[i]);
printf("\n");
for (p = x; p < x + N; ++p)
printf("%d", *p);
printf("\n");
p = x;
for (i = 0; i < N; ++i)
printf("%d", *(p + i));
printf("\n");
p = x;
for (i = 0; i < N; ++i)
printf("%d", p[i]);
printf("\n");
return 0;
}

#include <stdio.h>
#define N 4
int main() {
char x[N] = {'1', '9', '8', '4'};
int i;
char *p;
for (i = 0; i < N; ++i)
printf("%c", x[i]);
printf("\n");
for (p = x; p < x + N; ++p)
printf("%c", *p);
printf("\n");
p = x;
for (i = 0; i < N; ++i)
printf("%c", *(p + i));
printf("\n");
p = x;
for (i = 0; i < N; ++i)
printf("%c", p[i]);
printf("\n");
return 0;
}

2001;2001
#include <stdio.h>
int main() {
int x[2][4] = { {1, 9, 8, 4}, {2, 0, 2, 2}} ;
int i, j;
int *p;
int (*q)[4];
for (i = 0; i < 2; ++i) {
for (j = 0; j < 4; ++j)
printf("%d", x[i][j]);
printf("\n");
}
for (p = &x[0][0], i = 0; p < &x[0][0] + 8; ++p, ++i) {
printf("%d", *p);
if ( (i + 1) % 4 == 0)
printf("\n");
}
for (q = x; q < x + 2; ++q) {
for (j = 0; j < 4; ++j)
printf("%d", *(*q + j));
printf("\n");
}
return 0;
}

#include <stdio.h>
int main() {
char x[2][4] = { {'1', '9', '8', '4'}, {'2', '0', '2', '2'} };
int i, j;
char *p;
char (*q)[4];
for (i = 0; i < 2; ++i) {
for (j = 0; j < 4; ++j)
printf("%c", x[i][j]);
printf("\n");
}
for (p = &x[0][0], i = 0; p < &x[0][0] + 8; ++p, ++i) {
printf("%c", *p);
if ( (i + 1) % 4 == 0)
printf("\n");
}
for (q = x; q < x + 2; ++q) {
for (j = 0; j < 4; ++j)
printf("%c", *(*q + j));
printf("\n");
}
return 0;
}

2001;2004
#include <stdio.h>
#include <string.h>
#define N 80
int main() {
char s1[] = "C, I love u.";
char s2[] = "C, I hate u.";
char tmp[N];
printf("sizeof(s1) vs. strlen(s1): \n");
printf("sizeof(s1) = %d\n", sizeof(s1));
printf("strlen(s1) = %d\n", strlen(s1));
printf("\nbefore swap: \n");
printf("s1: %s\n", s1);
printf("s2: %s\n", s2);
printf("\nswapping...\n");
strcpy(tmp, s1);
strcpy(s1, s2);
strcpy(s2, tmp);
printf("\nafter swap: \n");
printf("s1: %s\n", s1);
printf("s2: %s\n", s2);
return 0;
}

strlen(s1)计算字符串中的字符个数,而sizeof(s1)计算的事对象所占的内存空间
13
不可以替换
是
#include <stdio.h>
#include <string.h>
#define N 80
int main() {
char *s1 = "C, I love u.";
char *s2 = "C, I hate u.";
char *tmp;
printf("sizeof(s1) vs. strlen(s1): \n");
printf("sizeof(s1) = %d\n", sizeof(s1));
printf("strlen(s1) = %d\n", strlen(s1));
printf("\nbefore swap: \n");
printf("s1: %s\n", s1);
printf("s2: %s\n", s2);
printf("\nswapping...\n");
tmp = s1;
s1 = s2;
s2 = tmp;
printf("\nafter swap: \n");
printf("s1: %s\n", s1);
printf("s2: %s\n", s2);
return 0;
}

存放的是"C, I love u."的地址,sizeof计算的是s1所占的内存空间,strlen计算的是字符串的字符个数
可以替换
交换的是地址,没有交换
#include <stdio.h>
#include <string.h>
#define N 5
int check_id(char *str);
int main() {
char *pid[N] = {"31010120000721656X",
"330106199609203301",
"53010220051126571",
"510104199211197977",
"53010220051126133Y"
};
int i;
for (i = 0; i < N; ++i)
if ( check_id(pid[i]) )
printf("%s\tTrue\n", pid[i]);
else
printf("%s\tFalse\n", pid[i]);
return 0;
}
int check_id(char *str) {
int i;
if (strlen(str) == 18) {
for (i = 0; i < 18; ++i) {
if ((str[i] >= '0' && str[i] <= '9') || str[i] == 'X')
return 1;
}
} else
return 0;
}

#include <stdio.h>
#include <string.h>
#define N 80
int is_palindrome(char *s);
int main() {
char str[N];
int flag;
printf("Enter a string:\n");
gets(str);
flag = is_palindrome(str);
if (flag)
printf("YES\n");
else
printf("NO\n");
return 0;
}
int is_palindrome(char *s) {
int i, n;
n = strlen(s);
for (i = 0; i <= (n / 2); ++i) {
if (s[i] == s[n - i - 1]) {
return 1;
}
if (s[i] != s[n - 1 - i])
return 0;
}
}

#include <stdio.h>
#define N 80
void encoder(char *s);
void decoder(char *s);
int main() {
char words[N];
printf("输入英文文本: ");
gets(words);
printf("编码后的英文文本: ");
encoder(words);
printf("%s\n", words);
printf("对编码后的英文文本解码: ");
decoder(words);
printf("%s\n", words);
return 0;
}
void encoder(char *s) {
int i;
for (i = 0; i < N; ++i) {
if (s[i] != 'z' && s[i] != 'Z' && s[i] <= 'z' && s[i] >= 'A') {
s[i] = s[i] + 1;
} else if (s[i] == 'z')
s[i] = 'a';
else if (s[i] == 'Z')
s[i] = 'A';
}
}
void decoder(char *s) {
int i;
for (i = 0; i < N; ++i) {
if (s[i] != 'a' && s[i] != 'A' && s[i] <= 'z' && s[i] >= 'A') {
s[i] = s[i] - 1;
} else if (s[i] == 'a')
s[i] = 'z';
else if (s[i] == 'A')
s[i] = 'Z';
}
}




浙公网安备 33010602011771号