36(将字符串数组中M个字符串合并成一个新串)

36 date:2021.3.22
在这里插入图片描述要点:

详细代码如下:

#include  <stdio.h>
#include  <stdlib.h>
#define    N    5
typedef struct node {
  int  data;
  struct node  *next;
} NODE;
void fun(NODE  *h)
{ NODE  *p, *q, *r;
/**********found**********/
  p = h->next;
/**********found**********/
  if (p==NULL)  return;  //判断当p等于什么时就返回
  q = p->next;
  p->next = NULL;
  while (q)
  {  r = q->next;    q->next = p;
/**********found**********/
     p = q;          
	 q = r;  //
  }
  h->next = p;
}
NODE *creatlist(int  a[])
{  NODE  *h,*p,*q;        int  i;
  h = (NODE *)malloc(sizeof(NODE));
  h->next = NULL;
  for(i=0; i<N; i++)
  {  q=(NODE *)malloc(sizeof(NODE));
     q->data=a[i];
     q->next = NULL;
     if (h->next == NULL)  h->next = p = q;
     else    {  p->next = q;  p = q;   }
  }
   return  h;
}
void outlist(NODE  *h)
{ NODE  *p;
  p = h->next;
  if (p==NULL)  printf("The list is NULL!\n");
  else
  {  printf("\nHead  ");
     do
     {  printf("->%d", p->data); p=p->next;  }
     while(p!=NULL);
     printf("->End\n");
  }
}
void main()
{  NODE  *head;
   int  a[N]={2,4,6,8,10};
   head=creatlist(a);
   printf("\nThe original list:\n");
   outlist(head);
   fun(head);
   printf("\nThe list after inverting :\n");
   outlist(head);
}


在这里插入图片描述
要点:

详细代码如下:

#include  <stdlib.h>
#include  <conio.h>
#include  <string.h>
#include  <stdio.h>
#define N 80
int fun(char *s,char *t)
{ int n;
  char *p, *r;
  n=0;
  /*************found**************/
  r=t;
  while ( *s )
  {
	  p = s;
      while ( *r )
	  {
        if ( *r == *p )
        {
			r++;
			p++;
		}
        else
			break;
        if ( *r == '\0' )
			n++;
	  }
	  /*************found**************/
	  r = t;//不完全匹配,就重新指向t
      s++;
  }
  return  n;
}
void main()
{char a[N],b[N]; int m;
 
 printf("\nPlease enter string a: ");
gets(a);
 printf("\nPlease enter substring b: ");
gets(b);
 m=fun(a,b);
 printf("\nThe result is :m=%d\n",m);
}


在这里插入图片描述要点:
a[i][j] != ‘\0’;

详细代码如下:

#include <stdio.h>
#include <conio.h>
#define M 3
#define N 20
void fun(char a[M][N],char *b)
{

	int i ,j ,k = 0;
	
	for(i = 0; i<M; i++)
	{
		for(j = 0; a[i][j] != '\0'; j++)
			b[k++] = a[i][j];
	}
	b[k] = '\0';



  /* ERROR:
  int i,j,k = 0;

  for(i = 0; i<M; i++)
  {
	for(j = 0; j<N; j++)
	{
		b[k++] = a[i][j];
	}
  }
  b[k] = '\0';
  */
}
void main()
{ 
  FILE *wf;
  char w[M][N]={"AAAA", "BBBBBBB", "CC"},i;
  char a[100]={ " ##############################"};
  printf("The string:\n ");
  for(i=0;i<M;i++) 
     puts(w[i]);
  printf("\n ");
  fun(w,a);
  printf("The A string:\n ");
  printf("%s ",a);
  printf("\n\n ");
/******************************/
  wf=fopen("out.dat","w");
  fprintf(wf,"%s",a);
  fclose(wf);
/*****************************/
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值