cty-ymwx

导航

实验5


实验1.1

运行代码

#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(i=0;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");
	system("pause");
	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");
			}
			system("pause");
			return 0;
		}

  运行截图

 

 

 

实验2.1 

运行代码

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

system("pause");
return 0;
}

  运行截图

 回答问题:大小是24个字节。sizeof计算所占空间大小,strlen计算字符长度。

不能,给一维数组定义时要说明长度分配内存。

交换了。

 

 

实验2.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);

system("pause");
return 0;
}

  运行截图

 回答问题:字符串。sizeof计算指针变量s1所占内存空间大小,strlen计算存放字符串长度。

能。task2.1定义一个字符数组,把字符储存在数组里,task2.2是定义一个指针变量,先占用内存,再把字符串储存进去。

交换的是指针变量的值,在内存单元中没有交换。

 

 

实验3

运行代码

#include<stdio.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++);}

  运行截图

 

 

 

实验4

运行代码

#include<stdio.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;}

  运行截图

 

 

 

 实验5

运行代码

#include<stdio.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';
}

  运行截图

 

 

 

实验6.1

运行代码

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

int main()
{
	char *course[4]={"C Program",
		"C++ Object Oriented Program",
		"Operating System",
		"Date 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<string.h>
void sort(char *name[],int n);

int main()
{
	char *course[4]={"C Program",
		"C++ Object Oriented Program",
		"Operating System",
		"Date 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;
	}}}
		

  运行截图

 回答问题:交换的是指针变量的值。

 

 

实验7

运行代码

#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\tTure\n",pid[i]);
                               else
                               printf("%s\tFalse\n",pid[i]);
                               return 0;}
int check_id(char *str)
{
    int i;
    if(strlen(str)==18)
    {
        for(i=0;i<17;i++)
            if(48<str[i]&&str[i]<57)
             if((48<str[17]&&str[17]<57)||(str[17]=='X'))
                return 1;
              else
                return 0;
            else 
              return 0;}
            else
             return 0;}
                
                
                

  

 运行截图

 

 

 

实验8

运行代码

#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);
    system("pause");
    return 0;
  }
void encoder(char *s)
{
    int i;
    for(i=0;s[i]!='\0';i++)
          if((s[i]>='a'&&s[i]<'z')||s[i]>='A'&&s[i]<'Z')
          s[i]=s[i]+1;
          if(s[i]=='z')
          s[i]='a';
          if(s[i]=='Z')
          s[i]='A'; 
}
void decoder(char *s)
{
    int i;
    for(i=0;s[i]!='\0';i++)
         if((s[i]>'a'&&s[i]<='z')||s[i]>'A'&&s[i]<='Z')
          s[i]=s[i]-1;
          if(s[i]=='a')
          s[i]='z';
          if(s[i]=='A')
          s[i]='Z'; 
}

  运行截图

 

posted on 2023-05-05 21:57  遗梦万象  阅读(10)  评论(0编辑  收藏  举报