实验五

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

屏幕截图 2025-12-10 194302

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

屏幕截图 2025-12-11 192045

 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++;
    }
}

屏幕截图 2025-12-11 194357

 task8屏幕截图 2025-12-11 200717

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

posted @ 2025-12-11 20:11  菲洛特拉托  阅读(1)  评论(0)    收藏  举报