实验五

task1

#include<stdio.h>
#define N 4
int main()
{
 int x[N]={1,9,8,4};
 int i;
 int *p;
 for(i=0;i<N;++i)
     printf("%d",x[i]);
 printf("\n");
 
 for(p=x;p<x+N;++p)
     printf("%d",*p);
 printf("\n");
 
 p=x;
 for(i=0;i<N;++i)
     printf("%d",*(p+i));
 printf("\n");
 
 p=x;
 for(i=0;i<N;++i)
     printf("%d",p[i]);
 printf("\n");
 
 return 0;
}

1-2

#include<stdio.h>
int main()
{
 int x[2][4]={{1,9,8,4},{2,0,4,9}};
 int i,j;
 int *p;
 int(*q)[4];
 
 for(i=0;i<2;i++)
 {    for(j=0;j<4;++j)
          printf("%d",x[i][j]);
      printf("\n");
 }
 
 for(p=&x[0][0],i=0;p<&x[0][0]+8;p++,i++)
 {
  printf("%d",*p);
  if((i+1)%4==0)
      printf("\n");
 }
 
 for(q=x;q<x+2;++q)
 {
  for(j=0;j<4;j++)
     printf("%d",*(*q+j));
  printf("\n");
 }
 return 0;
}

task2

#include <stdio.h>
#include <string.h>
#define N 80



int main()
{
  char s1[] = "Learning makes me happy";
  char s2[] = "Learning makes me sleepy";
  char tmp[N];
  
  printf("sizeof(s1) vs. strlen(s1): \n");
  printf("sizeof(s1) = %d\n", sizeof(s1));
  printf("strlen(s1) = %d\n", strlen(s1));
  
  printf("\nbefore swap: \n");
  printf("s1: %s\n", s1);
  printf("s2: %s\n", s2);
  
  printf("\nswapping...\n");
  strcpy(tmp, s1);
  strcpy(s1, s2);
  strcpy(s2, tmp);
  
  printf("\nafter swap: \n");
  printf("s1: %s\n", s1);
  printf("s2: %s\n", s2);
  return 0;
  }

task2-2

#include<stdio.h>
#include<string.h>
#define N 80
int main()
{
 char *s1="Learning makes me happy";
 char *s2="Learning makes me sleepy"; 
 char *tmp;
 
 printf("sizeof(s1) vs. strlen(s1):\n");
 printf("sizeof(s1)=%d\n",sizeof(s1));
 printf("strlen(s1)=%d\n",strlen(s1));
 
 printf("\nbefore swap:\n");
 printf("s1:%s\n",s1);
 printf("s2:%s\n",s2); 
 
 printf("\nswapping...\n");
 tmp=s1;
 s1=s2;
 s2=tmp;
 
 printf("\nafter swap:\n");
 printf("s1:%s\n",s1);
 printf("s2:%s\n",s2); 
 
 return 0;
}

task3

#include<stdio.h>
#include<stdlib.h>

void str_cpy(char * target, const char *source);
void str_cat(char *str1, char *str2);

int main()
{
    char s1[80], s2[20] = "1984";

    str_cpy(s1, s2);
    puts(s1);

    str_cat(s1, "Animal Farm");
    puts(s1);

    system("pause");
    return 0;
}
void str_cpy(char * target, const char *source)
{
    while(*target++ = * source++)
        ;
}

void str_cat(char *str1, char *str2)
{
    while(*str1)
        str1++;

    while(*str1++ = *str2++)
        ;
}

task4

#include<stdio.h>
#include<stdlib.h>
#define N 80
int func(char *);

int main()
{
    char str[80];
    while(gets(str)!= NULL)
    {
        if(func(str))
            printf("yes\n");
        else
            printf("no\n");
    }

    system("pause");
    return 0;
}

int func(char *str)
{
    char *begin, *end;

    begin = end = str;

    while(*end)
        end++;

    end--;

    while(begin<end)

    {
        if(*begin != *end)
            return 0;
        else
        {
            begin++;
            end--;
        }
    }
    return 1;
}

task5

#include<stdio.h>
#include<stdlib.h>
#define N 80

void func(char *);

int main()
{
    char s[N];

    while(scanf("%s", s)!=EOF)
    {
        func(s);
        puts(s);
    }

    system("pause");
    return 0;
}

void func(char *str)
{
    int i;
    char *p1, *p2, *p;

    p1 = str;
    while(*p1=='*')
        p1++;
    p2 = str;
    while(*p2)//!!
        p2++;
    p2--;

    while(*p2 == '*' )
        p2--;
    
    p = str;
    i = 0;
    while(p < p1)
    {
        str[i] = *p;
        p++;
        i++;
    }
    
    while(p <=p2)
    {
        if(*p !='*')
            {
                str[i] = *p;
                i++;
        }
        p++;
    }
    while(*p !='\0')
        {
            str[i] = *p;
            p++;
            i++;
    }
    
    str[i] = '\0';
}

task6-1

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

#include<stdlib.h>
void sort(char *name[], int n);

int main()
{
    char *course[4] = {"C Program",
                       "C++ object Oriented Program",
                       "Operating System",
                       "Data Structure and Algorithms"};
    int i;

    sort(course, 4);

    for(i = 0; i< 4; i++)
        printf("%s\n",course[i]);

    system("pause");
    return 0;
}

void sort(char *name[], int n)
{
    int i, j;
    char *tmp;

    for(i = 0; i<n-1; ++i)
        for(j = 0;j < n-1-i;++j)
            if(strcmp(name[j],name[j+1])>0)
            {
                tmp = name[j];
                name[j] = name[j+1];
                name[j+1] = tmp;
            }
}

6-2

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void sort(char *name[],int n);

int main()
{
    char *course[4] = {"C Program",
                       "C++ object Oriented Program",
                       "Operating System",
                       "Data Structure and Algorithms"};
    int i;

    sort(course, 4);
    for(i = 0;i<4;i++)
        printf("%s\n",course[i]);

    system("pause");
    return 0;
}

void sort(char *name[], int n)
{
    int i, j, k;
    char *tmp;

    for(i = 0; i<n-1;i++)
    {
        k = i;
        for(j = i+1;j<n;j++)
            if(strcmp(name[j],name[k])<0)
                k = j;
        if(k!= i)
        {
            tmp = name[i];
            name[i] = name[k];
            name[k] = tmp;
        }
    }
}

task7

#include<stdio.h>
#include<string.h>
#include<stdlib.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]);

    system("pause");
    return 0;
}

 int check_id(char *str)
 {
     char *p;
     p = str;
     while((*p>='0'&&*p<='9')||*p=='X')
         p++;
     if(*p=='\0'&&strlen(str)==18)
         return 1;
     else
         return 0;
 }

task8

#include<stdio.h>
#include<stdlib.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);
    
    system("pause");
    return 0;
}
void encoder(char *s)
{
    while(*s!='\0')
    if(*s>=65 && *s<=90||*s>=97 && *s<=122)
    {
        *s= *s+1;
        *s++;
        continue;
    }
    else if(*s=='z'||*s=='Z')
    {
        *s = *s-25;
        *s++;
         continue;
    }
    else
        *s++;
}
void decoder(char *s)
{
    while(*s!='\0')
    if(*s>=65&&*s<=90||*s>=97&&*s<=122)
    {
        *s= *s-1;
        *s++;
        continue;
    }
    else if(*s=='a'||*s=='A')
    {
        *s = *s+25;
        *s++;
        continue;
    }
    else
        s++;
}

 

posted on 2023-05-10 21:12  Tzaa  阅读(11)  评论(0)    收藏  举报