实验五
task1.1
1.作用是找到一组数中的最大最小值。
2.pmin指向main函数中min,pmax指向main函数中max.
task1.2
1.功能是找到一组数中的最大值的地址,返回最大值的地址。
2.可以,改变后输入数组仍可正确输出。
task2
1.s1大小为N,80 sizeof计算总字节数是80 strlen(s1)计算有效字符数23
2.不行,先定义,再赋值会导致编译出现错误。
3.会。
task2.2
1.存放的是首字母L的地址,sizeos计算的是指针变量本身所占的字节数,strlen计算的是指针字符串中的有效字符个数。
2.可以,2.1定义的是数组,2.2定义的是指针,使指针指向字符串常量的地址。
3.交换的是地址,内容不会变化。
task 3
1.ptr1存储数组地址,*ptr1指向地址代表的数组值,line20是每四个元素就换行。
2.ptr2t同时存储一整行四个数组的地址,(ptr2+j)就是当前行的第j个元素。
task 4
1.作用是查找字符串数组中与old_char相同的字符,将其替换成new_char,知道结束符。
2.可以,原来while的执行条件是*str!=0,现在是条件是不是结束符,作用一样。
task5
#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; } char *str_trunc(char *str, char x){ int i; for(i=0;str[i]!='\0';++i){ if(str[i]==x){ str[i]='\0'; break; } } return 0; }

task6
#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) { if(strlen(str)!=18){ return 0; } int i; 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 1; }else{ return 0; } }

task7
#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; } void encoder(char *str, int n) { while (*str != '\0') {
if (*str >= 'a' && *str <= 'z') { *str = 'a' + (*str - 'a' + n) % 26; } else if (*str >= 'A' && *str <= 'Z') { *str = 'A' + (*str - 'A' + n) % 26; } str++; } } void decoder(char *str, int n) { while (*str != '\0') { if (*str >= 'a' && *str <= 'z') { *str = 'a' + (*str - 'a' - n + 26) % 26; } else if (*str >= 'A' && *str <= 'Z') { *str = 'A' + (*str - 'A' - n + 26) % 26; } str++; } }

task8
按照老师的步骤到这一步进行不下去了。

浙公网安备 33010602011771号