实验五

任务一:

屏幕截图 2025-12-11 153134

(1)计算数组a[N]中的最大数和最小数

(2)pmin->&min   pmax->&max

屏幕截图 2025-12-11 153401

(1)函数 find_max 功能是计算数组a[N]中的最大数;返回的是最大数的地址

(2)可以

任务二:

屏幕截图 2025-12-11 153744

(1)s1的大小是80; sizeof(s1) 计算的是数组s1所占的内存; strlen(s1) 统计的是数组s1中的有效字符数

(2)不能,数组名是指针常量,不可对其赋值

(3)数组s1和s2中的内容交换

屏幕截图 2025-12-11 153956

(1)s1中存放的是字符串首字符的地址; sizeof(s1) 计算指针变量s1占的内存; strlen(s1) 统计指针变量s1指向的字符串的有效字符数

(2)能替换;数组名是不可修改的地址常量,不可对其赋值;指针是变量,可以对其赋值

  (3)交换两个指针指向的地址;没有交换

任务三:

image

第一个指的是指向有四个元素的一维数组的指针,第二个指的是有四个指针的数组

任务四:

image

(1)replace的功能是把文本里的字母“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;
}

char *str_trunc(char *str,char x)
{
    char *start = str;
    while(*str != '\0')
    {
        if(*str == x)
        {
                *str = '\0';
                break;
        }
        str++;
    }
    
    return start;
 }

屏幕截图 2025-12-11 154738

删掉会把上一次输入的回车键当成字符串

任务六:

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

}

int check_id(char *str)
{
    int length;
    length = strlen(str);
    if(length != 18)
    return 0;
    
    for(int i = 0; i < 17; i++) 
    {
    if(str[i] < '0' || str[i] > '9') 
    return 0;
    }
    
    char end = str[17];
    if(!((end >= '0' && end <= '9') || end == 'X')) 
    return 0; 
    
    return 1;

}

image

 任务七

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

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

image

 任务八

#include<stdio.h>
#include <string.h>

void sort(int n,char *s[]);

int main(int argc,char *argv[])
{
    int i;
    
    sort(argc-1,argv+1);
    
    for(i = 1;i < argc;++i)
    printf("hello,%s\n",argv[i]); 
    
    return 0;
 } 
 
void sort(int n,char *s[])
{
    int i,j;
    char *tmp;
    
    for(i = 0;i < n-1;++i)
    for(j = 0;j < n-1-i;++j)
    if(strcmp(s[j],s[j+1])>0)
    {
        tmp = s[j];
        s[j] = s[j+1];
        s[j+1] = tmp;
    }
}

image

 

posted @ 2025-12-11 15:55  luhan777  阅读(3)  评论(0)    收藏  举报