任务一

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;
}
View Code

屏幕截图 2025-12-12 143452

删去后输出为空,排除回车键输入导致输出为空

任务六

#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;
}
View Code

屏幕截图 2025-12-12 145509

任务七

#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';
    }
}
View Code

屏幕截图 2025-12-12 150753

任务八

屏幕截图 2025-12-12 151054