实验六

程序task1_1.c中,执行++p后,指针变量p中存放的地址值是2004;
程序task1_2.c中,执行++p后,指针变量p中存放的地址值是2001;
因为两程序中指针变量p所指向的变量类型不同,分别为整形和字符型,存放整形变量需要4个字节的空间而存放字符型变量需要1个字节的空间。

程序task2_1.c中,执行++p后,指针变量p中存放的地址值是2004;执行++q后,指针变量q中存放的地址值是2016;

程序task2_2.c中,执行++p后,指针变量p中存放的地址值是2001;执行++q后,指针变量q中存放的地址值是2004。

因为

两程序中指针变量p所指向的变量类型不同,分别为整形和字符型,存放整形变量需要4个字节的空间而存放字符型变量需要1个字节的空间;

task2_1.c中,q为指向一维整形数组的指针变量,且每个数组含有4个整形元素,存放这样的一个一维数组需要16个字节的空间;

task2_2.c中,q为指向一维子字符型数组的指针变量,且每个数组含有4个字符型元素,存放这样的一个一维数组需要4个字节的空间。

1.数组s1的大小是12,sizeof计算的是数组所占字节数,strlen统计的是数组长度

2.不能替换

3.内容交换了

1)指针变量s1中存放的是C,I love u. sizeof(s1)计算的是所占字节 strlen统计的是数组的长度

2)可以替换

3)交换的是地址,二者在内存存储单元中没有交换

#include <stdio.h> 
#include <string.h> 
#define N 5 
int check_id(char *str); // 函数声明 
int main() 
{ 
    char *pid[N] = {"31010120000721656X", 
                    "330106199609203301", 
                    "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<18;i++) 
    {
        if(!(str[i]>'0'&&str[i]<'9')&&str[i]=='X') return 0;
    }
    return 1;
}

#include <stdio.h>
#include <string.h>
#define N 80
int is_palindrome(char *s); 
int main()
{
    char str[N];
    int flag;
    printf("Enter a string:\n");
    gets(str);
    flag = is_palindrome(str); 
    if (flag)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}
int is_palindrome(char *s)
{
    int i;
       int n=strlen(s);
       for(i=0;i<n/2;i++)
       {
       if(s[i]!=s[n-i-1])
       {
          return 0;
        break;
       
       }
   }
   return 1;
}

#include <stdio.h>
#define N 80
void encoder(char *s); 
void decoder(char *s); 
int main()
{
    char words[N];
    printf("输入英文文本: ");
    gets(words);
    printf("编码后的英文文本: ");
    encoder(words); 
    printf("%s\n", words);
    printf("对编码后的英文文本解码: ");
    decoder(words); 
    printf("%s\n", words);
    return 0;
}
void encoder(char *s)
{
    int i=0,j;
    while(s[i])
    i++;
    
    j=i;
    for(i=0;i<j;i++)
    {
        if((s[i]>='a'&&s[i]<='y')||(s[i]>='A'&&s[i]<='Y'))
        s[i]+=1;
        
        else if(s[i]=='z')
         s[i]='a';
        else if(s[i]=='Z')
         s[i]=='A';
    }
}
void decoder(char *s)
{
    int i=0,j;
    while(s[i])
    i++;
    
    j=i;
    for(i=0;i<j;i++)
    {
        if((s[i]>='a'&&s[i]<='y')||(s[i]>='A'&&s[i]<='Y'))
        s[i]-=1;
        
        else if(s[i]=='a')
         s[i]='z';
        else if(s[i]=='A')
         s[i]=='Z';
    }
}

 

posted @ 2022-06-14 09:43  易易爱学习  阅读(30)  评论(3编辑  收藏  举报