岱左吧

代做作业_国开电大作业代做_奥鹏作业代写_各科作业辅导

计算机网络应用作业代做案例

admin    2021-07-07    972

短学期实验2  指针与链表

1. 用冒泡排序法求出由21整数组成的数组的中间值,输出所有大于中间值的偶数。

微信号:wuyouhw
添加微信好友, 获取更多信息
复制微信号

保存文件为sy2-1.c

【程序2.1

#0  #include <stdio.h>

#1 void main()

#2 {

#3  int i,j,temp;

#4  int array[21];

#5  for (i=0;i<21;i++) scanf("%d", array[i]);

#6     for (i=0;i<21;i++)

#7   for(j=0;j<20;j++)

#8    if (array[j]>array[j+1])

#9    {

#10     temp=array[j];

#11     array[j]=array[j+1];

#12     array[j+1]=temp;

#13    }

#14  printf ("%d", array[10]);

#15  for (i=0;i<10;i++)

#16   if (array[i]/2==0) printf(" %d ",array[i]);

#17   }

 

2.下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序,使其运行能得到正确的结果。

功能说明:以下函数length返回字符串中字母A到字母Z所包含字符的长度。主程序输入一行字符串,调用length函数输出该字符串中大写字母AZ的子串长度。保存文件为sy2-2.c

 

如输入:Z2009-AShanghaiZ

则输出:Length=8

例示说明:从AZ的子串为Shanghai,其长度为8

 

#include <stdio.h>

int length( char *p )

{

char *q, *r;

for ( q=p; *q!='\0' || *q!='A'; q++ )

;

for ( r=q; *r!='\0' && *r!='Z'; r++ )

;

return r-q;

}

void main()

{

char  str[81];

int  n;

gets( str[0] );

n = length( str );

printf( "Length=%d\n", n );

}

 

3.问题描述以下程序输入10行字符串要求按字典顺序从小到大排序。保存文件为sy2-3.c

#include  <stdio.h>

#define N 10

int  biggerthan( char *str1, char *str2 )  

  /*若字符串str1大于 str2时,则返回1*/

{  for ( ; *str1 || *str2;   (1)    )    

    { if ( *str1 > *str2 )

return   (2)   ;     

     else if (*str1<*str2)

return  0 ;

}

return 0;         /* 两个字符串相等  */

}

void main()

{ char  ls[N][100];

char  *ps[N], *t;

int   i, j;

for ( i = 0; i < N; i++ )

{ gets( ls[i] );

ps[i] = ls[i];

}

for ( i = 0; i < N-1; i++ )    /*   冒泡法排序   */  

  for ( j = 0; j < N-i-1; j++ )

if ( biggerthan(   (3)   ) )     

{ t = ps[j];

    (4)     ;         

    (5)     ;         

}

for ( i = 0; i < N; i++ )

     printf( " %s \n",ps[i] );

}

 

4.【问题描述】 保存文件为sy2-4.c

 

以下程序的功能是:读入一行字符(例如charlist),以EOF告结束(EOF在键盘输入中被定义为CTRL+Z)。按输入时的相反顺序建立一个链表式的结点序列(即先输入的数据位于链表尾,如下图),然后再输出链表(即按输入的相反顺序)并释放全部结点。



 

 

 

 #include <stdio.h>

   void main() {

struct  node {

  char  info;

       struct  node *link;

     }*top,*p;

     char c;

     top=NULL;

     while((c=getchar())    (1)    ){

p=    (2)    ;         /* 为新建链表结点申请内存空间 */

p->info=    (3)    ;    /* 输入结点信息 */

p->link=top;

top=p;

}

while(top){

   p=   (4)    ;    /* 获取当前结点 */

   putchar(p->info);

   top=top->link;

      (5)    ;     /* 释放结点 */

}

 

 

5.问题描述 

保存文件为sy2-5.c

本程序运行时,从键盘不断接收用户输入的字符串并进行处理,直到用户输入的字符串为“end”时终止。对用户输入的每个字符串的处理是:将字符串内的每一个十进制数字字符置换成下格中右边所对应的一个字符串(所有其他字符不变),然后将转换的结果显示在屏幕上;并分别计算每个数字的置换次数。

 

十进制数字字符

置换成

0

(Zero)

1

(One)

2

(Two)

3

(Three)

4

(Four)

5

(Five)

6

(Six)

7

(Seven)

8

(Eight)

9

(Nine)

 

例如,用户输入的字符串为

         Page112-Line3

程序5的输出是:

         Page(One) (One) (Two)-Line(Three)

数字09的置换次数分别  0 2 1 1 0 0 0 0 0 0

 

程序5

#include <stdio.h>

void main()

{  char *table[]={"(Zero)"," (One)"," (Two)"," (Three)"," (Four)",

                  " (Five)"," (Six)"," (Seven)"," (Eight)"," (Nine)" };

   char str1[64],str2[255]*p;

 int  j,k,nno[10];

   for (;;) {

printf("Input:");  

gets(     1)     );   /*读入字符串*/

for(k=0;k<10;k++) no[k]=0;

     if(strcmp(str1,"end")==0)     2)    _ ;   /* 输入end时程序运行终止 */     

for(j=k=0;str1[j]!='\0';++j)                   /* 对输入字符串进行扫描 */

 {  

if (     3)     )  /*当前字符不是数字字符*/

{ str2[k++]=str1[j];

continue;

}             

/*当前字符是数字字符*/

n=str1[j]-'0';

no[n]++;

 for(p=table[n];*p!='\0';++p)

  str2[k++] =     4)     ;   /* 把要置换的字符串逐个连接到str2*/

}

     str2[k] =     5)     ;      /* 置字符串结束符于str2末尾 */

     printf("%s\n",str2);  

     for(k=0;k<10;k++)  printf("no[%d]=%d\t",k,no[k]);

   }

}

 

6.问题描述

建立一个带有头结点的单向链表,并将存储在字符串s中的字符依次转存到链表的各个结点中。然后,按相反顺序输出链表内容。

保存文件为sy2-6.c

程序5

#include <stdlib.h>

struct node {

char data;

struct node *next;

};

     1)      create_list(char *s) { /*函数定义首部,确定函数值的返回类型*/

 struct node *head,*p,*q;

  head=(struct node *) malloc(sizeof(struct node));

  p=q=head;

  while(*s!='\0')

  {  p=(struct node *) malloc(sizeof(struct node)) ;

     p->data=     2)      ;  /*字符串中的字符存到链表中*/

     q->next=p;

     q=     3)      ; /*工作指针q相应后移,为下一个字符转存作准备*/

     s++;

  }

  p->next = NULL ;

  return     4)    ;  /*返回所建立的链表*/

}

void pr_in_reverse_order(struct node *p)  /*采用递归算法定义*/

 {

  if(p!=NULL)

  {  pr_in_reverse_order(p->next);     /*先按相反顺序输出除去第一个节点后的链表内容*/

      printf ("%2c",     5)    );  /*输出第一个节点内容*/

  }

}

void main()

{

char str[] = "link list";

  struct node *head;

  head = create_list(str);

  pr_in_reverse_order(head->next);

}


本文链接:https://daizuozuoye8.com/?id=267

转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!

上一篇   下一篇

相关文章

请发表您的评论

复制成功
微信号: wuyouhw
添加微信好友, 获取更多信息
我知道了
添加微信
微信号: wuyouhw
添加微信好友, 获取更多信息
一键复制加过了
微信号:wuyouhw添加微信