任务一
1.筛选所录入数据的最大值和最小值。
2.pmin指向min,pmax指向max
3.筛选所录入数据的最大值
4.可以
任务二
1.80,sizeof指针大小,strlen有效字符个数
2.不能,缺少s2程序无法运行
3.是
4.存储的是字符串常量"Learning makes me happy"的起始内存地址,指针大小,有效字符个数
5.能,1用数组,2用指针
6.指针s1和s2的方向,不交换
任务三
1.指向4个int数组的指针
2.存有int指针的数组
任务四
1.将i全部替换成*
2.能
任务五
#include <stdio.h> #define N 80 char *str_trunc(char *str, char x); int main() { char str[N]; char ch; while(printf("输入字符串: "), gets(str) != NULL) { printf("输入一个字符: "); ch = getchar(); printf("截断处理...\n"); str_trunc(str, ch); // 函数调用 printf("截断处理后的字符串: %s\n\n", str); getchar(); } return 0; } // 函数str_trunc定义 // 功能: 对字符串作截断处理,把指定字符自第一次出现及其后的字符全部删除, 并返回字符串地址 // 待补足... // xxx char *str_trunc(char *str, char x) { char* p=str; while(*p++ != x){ ; } *(--p)=0; return str; }

删去后输出为空,排除回车键输入导致输出为空
任务六
#include <stdio.h> #include <string.h> #define N 5 int check_id(char *str); // 函数声明 int main() { char *pid[N] = {"31010120000721656X", "3301061996X0203301", "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; } // 函数定义 // 功能: 检查指针str指向的身份证号码串形式上是否合法 // 形式合法,返回1,否则,返回0 int check_id(char *str) { int i; if(strlen(str) != 18) return 0; for(i = 0;i < 17;i++) { if(str[i] < '0' || str[i] > '9') return 0; } if(!((str[17] >= '0' && str[17]<='9' ) || str[17] == 'X')) return 0; return 1; }

任务七
#include <stdio.h> #define N 80 void encoder(char *str,int n); void decoder(char *str,int n); int main() { char words[N]; int n; printf("输入英文文本:"); gets(words); printf("输入n:"); scanf("%d",&n); printf("编码后的英文文本:"); encoder(words,n); printf("%s\n",words); printf("对编码后的英文文本解码:"); decoder(words,n); printf("%s\n",words); return 0; } /*函数定义 功能:对str指向的字符串进行编码处理 编码规则: 对于a~z或A~Z之间的字母字符,用其后第n个字符替换; 其它非字母字符,保持不变 */ void encoder(char *str,int n) { // 补足函数实现 // ××× int i; for(i = 0;i<N;i++) { if(str[i] >= 'a' && str[i] <= 'z') str[i] = (str[i] -'a' + n)%26 + 'a'; if(str[i] >= 'A' && str[i] <= 'Z') str[i] = (str[i] - 'A' + n)%26 + 'A'; } } /*函数定义 功能:对str指向的字符串进行解码处理 解码规则: 对于a~z或A~Z之间的字母字符,用其前面第n个字符替换; 其它非字母字符,保持不变 */ void decoder(char *str,int n) // 补足函数实现 // ××× { int i; for(i = 0;i < N;i++) { if(str[i] >= 'a' && str[i] <= 'z') str[i] = (str[i] - 'a'- n + 26)%26 + 'a'; if(str[i] >= 'A' && str[i] <= 'Z') str[i] = (str[i] - 'A' - n + 26)%26 + 'A'; } }

任务八
